2727from gitlab .const import * # noqa
2828from gitlab .exceptions import * # noqa
2929from gitlab import utils # noqa
30+ from requests_toolbelt .multipart .encoder import MultipartEncoder
31+
3032
3133__title__ = "python-gitlab"
32- __version__ = "2.5 .0"
34+ __version__ = "2.6 .0"
3335__author__ = "Gauvain Pocentek"
3436__email__ = "gauvainpocentek@gmail.com"
3537__license__ = "LGPL3"
@@ -496,9 +498,11 @@ def http_request(
496498
497499 # We need to deal with json vs. data when uploading files
498500 if files :
499- data = post_data
500501 json = None
501- del opts ["headers" ]["Content-type" ]
502+ post_data ["file" ] = files .get ("file" )
503+ post_data ["avatar" ] = files .get ("avatar" )
504+ data = MultipartEncoder (post_data )
505+ opts ["headers" ]["Content-type" ] = data .content_type
502506 else :
503507 json = post_data
504508 data = None
@@ -509,9 +513,7 @@ def http_request(
509513 # The Requests behavior is right but it seems that web servers don't
510514 # always agree with this decision (this is the case with a default
511515 # gitlab installation)
512- req = requests .Request (
513- verb , url , json = json , data = data , params = params , files = files , ** opts
514- )
516+ req = requests .Request (verb , url , json = json , data = data , params = params , ** opts )
515517 prepped = self .session .prepare_request (req )
516518 prepped .url = utils .sanitized_url (prepped .url )
517519 settings = self .session .merge_environment_settings (
0 commit comments