| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
In the `responses` library the usage of `match_querystring` is
deprecated. Convert to using `match`
|
| |
|
|
|
| |
Convert all usage of the `httpmock` library to using the `responses`
library.
|
| |
|
|
|
|
| |
Convert from httmock to responses in test_mixins_methods.py
This leaves only one file left to convert
|
| | |
|
| | |
|
| |
|
|
|
|
| |
utils.EncodedId() has basically the same functionalityy of using
utils._url_encode(). So remove utils._url_encode() as we don't need
it.
|
| |
|
|
|
|
|
|
|
| |
Add EncodedId string class. This class returns a URL-encoded string
but ensures it will only URL-encode it once even if recursively
called.
Also added some functional tests of 'lazy' objects to make sure they
work.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Make sure all usage of the ID in the URL path is encoded. Normally it
isn't an issue as most IDs are integers or strings which don't contain
a slash ('/'). But when the ID is a string with a slash character it
will break things.
Add a test case that shows this fixes wikis issue with subpages which
use the slash character.
Closes: #1079
|
| |
|
|
| |
See https://docs.gitlab.com/ee/api/group_access_tokens.html
|
| | |
|
| |\
| |
| | |
chore: add `pprint()` and `pformat()` methods to RESTObject
|
| | |
| |
| |
| |
| | |
This is useful in debugging and testing. As can easily print out the
values from an instance in a more human-readable form.
|
| |/
|
|
|
|
|
|
|
|
| |
We were using `str.replace()` calls to take care of URL encoding
issues.
Switch them to use our `utils._url_encode()` function which itself uses
`urllib.parse.quote()`
Closes: #1356
|
| |
|
|
|
|
|
|
| |
BREAKING-CHANGE: The gitlab CLI will now accept CLI arguments
and environment variables for its global options in addition
to configuration file options. This may change behavior for
some workflows such as running inside GitLab CI and with
certain environment variables configured.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a query returns more than 10,000 records than the following values
are NOT returned:
x.total_pages
x.total
Modify the code to allow no value to be set for these values. If there
is not a value returned the functions will now return None.
Update unit test so no longer `xfail`
https://docs.gitlab.com/ee/user/gitlab_com/index.html#pagination-response-headers
Closes #1686
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|