| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Forcing the encoding of '.' to '%2E' causes issues. It also goes
against the RFC:
https://datatracker.ietf.org/doc/html/rfc3986.html#section-2.3
From the RFC:
For consistency, percent-encoded octets in the ranges of ALPHA
(%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E),
underscore (%5F), or tilde (%7E) should not be created by URI
producers...
Closes #1006
Related #1356
Related #1561
BREAKING CHANGE: stop encoding '.' to '%2E'. This could potentially be
a breaking change for users who have incorrectly configured GitLab
servers which don't handle period '.' characters correctly.
|
| |
|
|
| |
Closes #1764
|
| |
|
|
|
|
|
|
|
|
|
| |
BREAKING CHANGE: A config file is no longer needed to run
the CLI. python-gitlab will default to https://gitlab.com
with no authentication if there is no config file provided.
python-gitlab will now also only look for configuration
in the provided PYTHON_GITLAB_CFG path, instead of merging
it with user- and system-wide config files. If the
environment variable is defined and the file cannot be
opened, python-gitlab will now explicitly fail.
|
| |
|
|
| |
It is not yet available upstream.
|
| | |
|
| | |
|
| |
|
|
|
| |
Add running the unit tests on windows-latest and macos-latest with
Python 3.10.
|
| |\
| |
| | |
chore: attempt to be more informative for missing attributes
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A commonly reported issue from users on Gitter is that they get an
AttributeError for an attribute that should be present. This is often
caused due to the fact that they used the `list()` method to retrieve
the object and objects retrieved this way often only have a subset of
the full data.
Add more details in the AttributeError message that explains the
situation to users. This will hopefully allow them to resolve the
issue.
Update the FAQ in the docs to add a section discussing the issue.
Closes #1138
|
| | |
| |
| |
| |
| | |
Have code use constants from the gitlab.const module instead of from
the top-level gitlab module.
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
| |
We are planning on adding enumerated constants into gitlab/const.py,
but if we do that than they will end up being added to the top-level
gitlab namespace. We really want to get users to start using
`gitlab.const.` to access the constant values in the future.
Add the currently defined constants to a list that should not change.
Use a module level __getattr__ function so that we can deprecate
access to the top-level constants.
Add a unit test which verifies we generate a warning when accessing
the top-level constants.
|
| | |
|
| |
|
|
|
| |
The 'test_mro.py' file is not really a unit test but more of a 'meta'
check on the validity of the code base.
|
| | |
|
| | |
|
| |\
| |
| | |
feat(api): add merge trains
|
| | |
| |
| |
| | |
Add support for merge trains
|
| |\ \
| | |
| | | |
feat(api): add merge request approval state
|
| | |/
| |
| |
| | |
Add support for merge request approval state
|
| | |
| |
| |
| |
| | |
* fix(api): delete 'group-runner get' and 'group-runner delete' commands
Co-authored-by: Léo GATELLIER <git@leogatellier.fr>
|
| | | |
|
| | | |
|
| |/
|
|
|
| |
BREAKING CHANGE: As of python-gitlab 3.0.0, the default branch for development
has changed from `master` to `main`.
|
| | |
|
| |
|
|
|
| |
BREAKING CHANGE: remove deprecated project.issuesstatistics
in favor of project.issues_statistics
|
| |
|
|
| |
BREAKING CHANGE: remove deprecated pipelines() methods in favor of pipelines.list()
|
| |
|
|
|
| |
BREAKING CHANGE: python-gitlab will now default to gitlab.com
if no URL is given
|
| |\
| |
| | |
fix!: raise error if there is a 301/302 redirection
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before we raised an error if there was a 301, 302 redirect but only
from an http URL to an https URL. But we didn't raise an error for
any other redirects.
This caused two problems:
1. PUT requests that are redirected get changed to GET requests
which don't perform the desired action but raise no error. This
is because the GET response succeeds but since it wasn't a PUT it
doesn't update. See issue:
https://github.com/python-gitlab/python-gitlab/issues/1432
2. POST requests that are redirected also got changed to GET
requests. They also caused hard to debug tracebacks for the user.
See issue:
https://github.com/python-gitlab/python-gitlab/issues/1477
Correct this by always raising a RedirectError exception and improve
the exception message to let them know what was redirected.
Closes: #1485
Closes: #1432
Closes: #1477
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Convert our manager usage to be done via type annotations.
Now to define a manager to be used in a RESTObject subclass can simply
do:
class ExampleClass(CRUDMixin, RESTObject):
my_manager: MyManager
Any type-annotation that annotates it to be of type *Manager (with the
exception of RESTManager) will cause the manager to be created on the
object.
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 'managers' are dynamically created. This unfortunately means that
we don't have any type-hints for them and so editors which understand
type-hints won't know that they are valid attributes.
* Add the type-hints for the managers we define.
* Add a unit test that makes sure that the type-hints and the
'_managers' attribute are kept in sync with each other.
* Add unit test that makes sure specified managers in '_managers'
have a name ending in 'Managers' to keep with current convention.
* Make RESTObject._managers always present with a default value of
None.
* Fix a type-issue revealed now that mypy knows what the type is
|
| |
|
|
|
|
| |
`retry_transient_errors` can now be set through the Gitlab instance and global configuration
Documentation for API usage has been updated and missing tests have been added.
|
| | |
|
| |\
| |
| | |
feat(api): add group hooks
|
| | | |
|
| |/ |
|
| | |
|
| |
|
|
|
|
|
|
| |
Sometimes we have errors where we don't get a dictionary passed to
RESTObject.__init__() method. This breaks things but in confusing
ways.
Check in the __init__() method and raise an exception if it occurs.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|
|
Move the 'gitlab/tests/' directory to 'tests/unit/' so we have all the
tests located under the 'tests/' directory.
|