Metadata-Version: 2.1
Name: python-gitlab-api
Version: 0.2.31
Summary: Programmatic REST Client for GitLab
Home-page: https://gitlab.com/labs.kalfa.dev/python-gitlab-api/
License: LGPL-3.0-or-later
Author: Cosimo Alfarano
Author-email: cosimo@alfarano.net
Requires-Python: >=3.7,<4.0
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: Jinja2 (>=2.11.3,<3.0.0)
Requires-Dist: PyYAML (>=5.4.1,<6.0.0)
Requires-Dist: click (>=7.1.2,<8.0.0)
Requires-Dist: dataclasses (>=0.8,<0.9); python_version >= "3.6" and python_version < "3.7"
Requires-Dist: jsonpath-ng (>=1.5.2,<2.0.0)
Requires-Dist: packaging (>=20.9,<21.0)
Requires-Dist: requests (>=2.25.1,<3.0.0)
Requires-Dist: url-normalize (>=1.4.3,<2.0.0)
Project-URL: Repository, https://gitlab.com/labs.kalfa.dev/python-gitlab-api/
Description-Content-Type: text/markdown

# python-gitlab-api: GitLab API

This pacakge provides two things:
- a simple python class based implementation of the GitLab v4 API.
- command-line utilities to query the API via shell

See the [ARCHITECTURE file](ARCHITECTURE.md)


Starting using the module's classes is pretty easy:
- specify the endpoint, which is URL + authorization token (or anon access)
- use a resouce among the ones provided in gitlab.resource
- use a CRUD operation, among the ones supported for the resource
- pass paramters to the operation to filter the results


In this case it is used a predefined GitLab.com endpoint, with no token paramter passed.
The Projects resource used with a Read operation  will list some/all projects.
```
from gitlab.utils import ppjson
from gitlab.resources import Projects
from gitlab.endpoints import GitLabDotCom 

ppjson(Projects(GitLabDotCom()).read())
```

In this case it is used a predefined GitLab.com endpoint, with a token.
The Projects resource used with a Read operation  will list some/all projects.
```
from gitlab.utils import ppjson
from gitlab.resources import Projects
from gitlab.endpoints import GitLabDotCom 

ppjson(Projects(GitLabDotCom(token='SOME TOKEN')).read({'owned':True}))
```

## Tokens

Currently only [personal access](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#creating-a-personal-access-token) tokens are supported.

Feel free to suggest ways to introduce the support for OAuth2 contacting the author and then proposing a change with a merge request.

## Utilities

Some command-line utilties which maps 1:1 to the API resources are provided as entry-points of the python package.

The utlities are meant to be used for quick scripting, but they support environmental variables and `dash-dash` parameters, so that they can be used in CICD environment.

Such mapping utilities are meant to return JSON, as provided by the API.

### Package versions

Some basic version management can be used in CICD to automatically release or query about the release version of a package

- get-package-version and get-latest-package-version query the Release resource, and provide either tha latest release version or bump the next patch version based on the latest release version recorded in gitlab
- get-



## Contributions

All contribution are welcome, in the best open source tradition.

Before adding missing features, please contact the author first to discuss best ways to do it.

New resources can be added via merge requests directly, as they are supposed to be really easy to add.

