FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-gitlab/gitlab/utils.py at main · becelot/python-gitlab · GitHub
becelot
python-gitlab
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
python-gitlab
/
gitlab
/
utils.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
70 lines (54 loc) · 2.08 KB
Breadcrumbs
python-gitlab
/
gitlab
/
utils.py
Copy path
File metadata and controls
70 lines (54 loc) · 2.08 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- coding: utf-8 -*-
#
# Copyright (C) 2016-2017 Gauvain Pocentek <gauvain@pocentek.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from
typing
import
Any
,
Callable
,
Dict
,
Optional
from
urllib
.
parse
import
quote
,
urlparse
import
requests
class
_StdoutStream
(
object
):
def
__call__
(
self
,
chunk
:
Any
)
->
None
:
print
(
chunk
)
def
response_content
(
response
:
requests
.
Response
,
streamed
:
bool
,
action
:
Optional
[
Callable
],
chunk_size
:
int
,
)
->
Optional
[
bytes
]:
if
streamed
is
False
:
return
response
.
content
if
action
is
None
:
action
=
_StdoutStream
()
for
chunk
in
response
.
iter_content
(
chunk_size
=
chunk_size
):
if
chunk
:
action
(
chunk
)
return
None
def
copy_dict
(
dest
:
Dict
[
str
,
Any
],
src
:
Dict
[
str
,
Any
])
->
None
:
for
k
,
v
in
src
.
items
():
if
isinstance
(
v
,
dict
):
# Transform dict values to new attributes. For example:
# custom_attributes: {'foo', 'bar'} =>
# "custom_attributes['foo']": "bar"
for
dict_k
,
dict_v
in
v
.
items
():
dest
[
f"
{
k
}
[
{
dict_k
}
]"
]
=
dict_v
else
:
dest
[
k
]
=
v
def
clean_str_id
(
id
:
str
)
->
str
:
return
quote
(
id
,
safe
=
""
)
def
sanitized_url
(
url
:
str
)
->
str
:
parsed
=
urlparse
(
url
)
new_path
=
parsed
.
path
.
replace
(
"."
,
"%2E"
)
return
parsed
.
_replace
(
path
=
new_path
).
geturl
()
def
remove_none_from_dict
(
data
:
Dict
[
str
,
Any
])
->
Dict
[
str
,
Any
]:
return
{
k
:
v
for
k
,
v
in
data
.
items
()
if
v
is
not
None
}
Back
|
FazBrowse Home
|
New Git URL