Add a new `rbt api` command and support `--get`, `--put`, `--post` and `--delete` options.
Review Request #11479 — Created Feb. 21, 2021 and updated
The reason why we need api command instead of api-get is simple: We need to do HTTP GET, POST, PUT, DELETE requests.
I createdapi
command, with new options--get
,--post
,--put
,--delete
,--patch
,--file="local path"
,--data='key1=value1'
,--header='headercontent'
, original--pretty
option and server options still work.
For api
--get
,--post
,--put
,--delete
options, I did some testings using command line tools.I created a review request draft and used my
--get
,--post
,--put
and--delete
options, they all worked fine.
I posted several files to the review request draft using--post
and--file
options and they worked.
I don't think our reviewboard APIs support--patch
at this moment so I just left it there in case one day it will be useful.
Summary | ID |
---|---|
13e4b1d3a98ebb31a701b4c80c457da035d050c0 | |
f5d08321dbf89a392a282e30b1cc4eba4f0d406e | |
39de827276ea422dea3fc1f630d35c17f415ab9c | |
9300eb1518e3b078f03aeb388b7f91821e915c7f | |
604bed2b22deb3145dcf7339753bd2096d9d8889 | |
f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 | |
dc104eaacfc259f3466e0c0cf14982ccc21da57e | |
dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 | |
027ac7cc1ef765176d3c8a98c8fa09e9295a4378 | |
3058676f474918449c806faea1fe1787e168e659 | |
44efa2f7a4d647cba179c40223fa31685614cd15 | |
e5c49dad1d97276dbe9e4a21edb136e7984ee54e | |
53939217e08588c88d4a410bab2b4337e8ebcfd8 | |
5068e0c14b5c564f8917f221100b9b6fc084f563 | |
d3baaf085443b05301478c034acc24631dfedd2b | |
921d578ffcec441f0047bc4f4c4fc8cd3c74673c | |
e5529638e506d696280d0f28377f017729fe53a3 | |
41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 | |
8b092c2d0797f6f2f367d0a27d163dff221f0076 | |
122e4a928f1513907dd14ca73289f08f33066f24 | |
ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 | |
232ae21dc68075b4259ced72f86563e006f007cd | |
83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd | |
187b2ab7edcefd834a8c8da1cf62e03704c1605b | |
aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f | |
dc68ac243b80d790d14d519b582e161fe371f941 | |
b8a14bb190c4e8f99bb37d71eaa8a2161149c501 | |
5b9e1d3306d68e41892698b96c063439efaa9c49 |
Description | From | Last Updated |
---|---|---|
Please remove the .DS_Store file from your change. |
david | |
E225 missing whitespace around operator |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
F401 'rbtools.commands.OptionGroup' imported but unused |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W503 line break before binary operator |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W503 line break before binary operator |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F841 local variable 'e' is assigned to but never used |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E228 missing whitespace around modulo operator |
reviewbot | |
F841 local variable 'e' is assigned to but never used |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E501 line too long (82 > 79 characters) |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
F841 local variable 'name' is assigned to but never used |
reviewbot | |
This should be reverted. |
david | |
Please restore this blank line. |
david | |
This needs a method docstring. |
david | |
This should probably be defined as a raw string (prefix with r, like `r'(...)+') |
david | |
Should this be KeyError instead of just Exception? |
david | |
Should this be using the data variable you just defined? |
david | |
This needs a method docstring. |
david | |
Please use single quotes instead of double. |
david | |
This needs a method docstring. |
david | |
Blank line between these two |
david | |
This needs a method docstring. |
david | |
This needs a method docstring. |
david | |
Should this be KeyError? |
david | |
We're doing this a lot. Perhaps we can have a helper method to sanitize the URL? |
david | |
Please use single quotes instead of double. |
david | |
This needs a method docstring. |
david | |
This needs a method docstring. |
david | |
Please use single quotes instead of double. |
david | |
This needs a method docstring. |
david | |
This needs a method docstring. |
david | |
Might be nice to have a helper for this too. |
david | |
Please use single quotes instead of double. |
david | |
This needs a method docstring. |
david | |
KeyError? |
david | |
Please use single quotes instead of double. |
david | |
This needs a method docstring. |
david | |
This needs a method docstring. |
david | |
Please revert these changes--it's just churn in blank lines for no purpose. |
david | |
Same here--move the blank line back, please. |
david | |
Please revert the changes in this file. |
david | |
This needs a module docstring. |
david | |
This needs a class docstring. |
david | |
How about "Perform Review Board API requests"? Note also that when we wrap a string, we put the space at … |
david | |
Put the space at the end of the first line instead of beginning of the second. |
david | |
Please swap the use of single and double quotes here. |
david | |
Swap single and double quotes here. |
david | |
This needs a method docstring. |
david | |
This first part needs to fit on a single line. Simply "Handle HTTP requests" is probably sufficient--the arguments are listed … |
david | |
This should probably mention that it prints output. Alternatively, this method could just return the request and the caller could … |
david | |
There's an extra blank line here. |
david | |
This blank line can be removed. |
david | |
Please use single quotes. |
david | |
Please use single quotes. |
david | |
Please use single quotes. |
david | |
Please use single quotes. This should also wrap with each entry on its own line. We could even avoid defining … |
david | |
This needs a docstring. |
david | |
Add a blank line between these two. |
david | |
This should probably print an error (probably different errors depending on if no method was passed, or if multiple methods … |
david | |
This should be reverted. |
david | |
Please revert the changes to this file. |
david | |
Please revert the changes to this file. |
david | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
This isn't ultimately useful to have here in our codebase. It's a great thing to learn! But these imports are … |
chipx86 | |
Can you rename this to _get_padded_url? That's a better fit for the naming we aim for. We want to communicate … |
chipx86 | |
Likewise, this would be better as "Returns a URL ending with a slash." ("URL" should always be capitalized.) |
chipx86 | |
For "Returns", the description text can't be indented. We do indent for "Args," because we're have a list of arguments. … |
chipx86 | |
"The URL or path ending with a '/'." would be better. |
chipx86 | |
We can probably simplify this: if not url.ensdwith('/'): url = '%s/' % url return url Avoids the creation of a … |
chipx86 | |
You can probably replace this with Python's urljoin function. |
chipx86 | |
No indentation for descriptions in "Returns". This will apply to any others throughout this change. |
chipx86 | |
Is this for querystrings? If so, check out Python's parse_qsl function. Look at HttpRequest in RBTools for code already doing … |
chipx86 | |
The naming may seem unrelated, but this is actually already available to us in Python's email module as email.message_from_string. This … |
chipx86 | |
Should always be capitalized as "URL". Same elsewhere in the change. |
chipx86 | |
Repeating ourselves for each method can end up increasing our maintenance burden. Instead, since these are all wrapping a centralized … |
chipx86 | |
Instead of dict.items(), we need to do six.iteritems(dict) to get consistent behavior across Python 2 and 3. Same anywhere else … |
chipx86 | |
All these _path versions of these functions seem to have the same logic as the _url versions, but are creating … |
chipx86 | |
All these blank lines need to remain. |
chipx86 | |
This should be removed, for the same reason above. |
chipx86 | |
rbt api --post Other examples are also missing the api bit. |
chipx86 | |
I think we shouldn't say too much more than "Send a HTTP PATCH request to an API" (and same for … |
chipx86 | |
All private functions should follow public functions. |
chipx86 | |
You probably want a blank line here. |
chipx86 | |
self.options.pretty_print is a reference to internal code. Write these docs like nobody's reading your code. You probably want to say … |
chipx86 | |
This is missing a return type. We're also not streaming to anything. We're just returning a string. |
chipx86 | |
Comma should be on the prior line. |
chipx86 | |
"JSON" |
chipx86 | |
You want a blank line before the statement and the loop, but not on the first inner line of the … |
chipx86 | |
This can be simplified massively by doing a couple things: Have each HTTP method option (--get, --post, etc.) have an … |
chipx86 | |
startswith takes a tuple, for convenience: if path.startswith(('http://', 'https://')): |
chipx86 | |
This will need to be the full import class path. |
chipx86 | |
I think we want to avoid allowing anything unexpected to be a query argument. What if an API takes a … |
chipx86 | |
The above recommendation about the HTTP method options will eliminate all of this. Now, that doesn't mean that it'll duplicate … |
chipx86 | |
F401 'email' imported but unused |
reviewbot | |
F401 're' imported but unused |
reviewbot | |
F401 'urllib.parse.urljoin' imported but unused |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
F841 local variable 'body_dict' is assigned to but never used |
reviewbot | |
F841 local variable 'file_path_list' is assigned to but never used |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
F841 local variable 'file_path_list' is assigned to but never used |
reviewbot | |
F841 local variable 'file_path_list' is assigned to but never used |
reviewbot | |
F841 local variable 'body_dict' is assigned to but never used |
reviewbot | |
F841 local variable 'file_path_list' is assigned to but never used |
reviewbot | |
F401 'argparse' imported but unused |
reviewbot | |
F401 'rbtools.commands.ParseError' imported but unused |
reviewbot | |
F841 local variable 'query_dict' is assigned to but never used |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
F841 local variable 'query_arguments' is assigned to but never used |
reviewbot | |
E501 line too long (82 > 79 characters) |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot |
- Change Summary:
-
Fix coding style problems
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9
Checks run (1 failed, 1 succeeded)
flake8
- Change Summary:
-
Fix more coding style problems.
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378
- Change Summary:
-
Add a newline character
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659
Checks run (2 succeeded)
- Change Summary:
-
Revert commits from another project.
- Summary:
-
Add `api` command and options like `--get`, `--post`, `--put`, `--delete`, `--data=key1=value1` and `--header=headercontent`Add a new `rbt api` command and support `--get`, `--put`, `--post` and `--delete` options.
- Description:
-
The reason why we need api command instead of api-get is simple: We need to do HTTP GET, POST, PUT, DELETE requests.
~ I created api
command, with new options--get
,--post
,--put
,--delete
,--data=key1=value1
,--header=headercontent
, original--pretty
option and server options still work.~ I created api
command, with new options--get
,--post
,--put
,--delete
,--data='key1=value1'
,--header='headercontent'
, original--pretty
option and server options still work.- I'll add support for file data POST and PUT later. - Please omit "Merge XDG project changes in local branch into local master" commit, I believe the commit content should be the same as https://reviews.reviewboard.org/r/11423/. - Testing Done:
-
~ For api
--get
,--post
,--put
,--delete
options, I did some basic testings using command line tools. They all work for non-existed urls and--get
works for existing api resources. We can use--data=key1=value1
to add post data and use--header=headercontent
to add customized headers. And--pretty
option still works. I will do further testing later.~ For api
--get
,--post
,--put
,--delete
options, I did some testings using command line tools.+ + I created a review request draft and used my
--get
,--post
,--put
and--delete
options, they all worked fine. - Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b
Checks run (1 failed, 1 succeeded)
flake8
- Change Summary:
-
Fix coding style problems.
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c
Checks run (2 succeeded)
- Description:
-
The reason why we need api command instead of api-get is simple: We need to do HTTP GET, POST, PUT, DELETE requests.
~ I created api
command, with new options--get
,--post
,--put
,--delete
,--data='key1=value1'
,--header='headercontent'
, original--pretty
option and server options still work.~ I created api
command, with new options--get
,--post
,--put
,--delete
,--patch
,--file="local path"
,--data='key1=value1'
,--header='headercontent'
, original--pretty
option and server options still work. - Testing Done:
-
For api
--get
,--post
,--put
,--delete
options, I did some testings using command line tools.~ I created a review request draft and used my
--get
,--post
,--put
and--delete
options, they all worked fine.~ I created a review request draft and used my
--get
,--post
,--put
and--delete
options, they all worked fine.+ I don't think our reviewboard APIs support --patch
so I just left it there in case one day it will be useful. - Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3
Checks run (1 failed, 1 succeeded)
flake8
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371
Checks run (2 succeeded)
- Testing Done:
-
For api
--get
,--post
,--put
,--delete
options, I did some testings using command line tools.I created a review request draft and used my
--get
,--post
,--put
and--delete
options, they all worked fine.~ I don't think our reviewboard APIs support --patch
so I just left it there in case one day it will be useful.~ I posted several files to the review request draft using --post
and--file
options and they worked.+ I don't think our reviewboard APIs support --patch
at this moment so I just left it there in case one day it will be useful. - Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24
Checks run (2 succeeded)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
How about "Perform Review Board API requests"?
Note also that when we wrap a string, we put the space at the end of the first line instead of the beginning of the second. Your way is probably less error-prone but all of existing code that does it the other way.
-
-
-
-
-
This first part needs to fit on a single line. Simply "Handle HTTP requests" is probably sufficient--the arguments are listed in the method definition and the docstring below.
-
This should probably mention that it prints output.
Alternatively, this method could just return the request and the caller could print.
-
-
-
-
-
-
Please use single quotes. This should also wrap with each entry on its own line. We could even avoid defining the variable and just put it inline:
full_file_list.append({ 'filename': file_name, 'content': content, })
-
-
-
This should probably print an error (probably different errors depending on if no method was passed, or if multiple methods were passed)
-
-
-
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd
Checks run (2 succeeded)
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd
Checks run (2 succeeded)
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b
Checks run (2 succeeded)
-
-
This isn't ultimately useful to have here in our codebase. It's a great thing to learn! But these imports are present in every single file in all of our codebases, so we don't want to document it in each file.
-
Can you rename this to
_get_padded_url
? That's a better fit for the naming we aim for. We want to communicate that this gets (returns) something, and that the thing it's returning is a padded URL. -
Likewise, this would be better as "Returns a URL ending with a slash."
("URL" should always be capitalized.)
-
For "Returns", the description text can't be indented. We do indent for "Args," because we're have a list of arguments. "Returns" doesn't work this way, and this will ultimately render incorrectly.
-
-
We can probably simplify this:
if not url.ensdwith('/'): url = '%s/' % url return url
Avoids the creation of a new variable.
%
-based formatting is also generally faster (Python compiles it down to bytecode) -
-
-
Is this for querystrings? If so, check out Python's
parse_qsl
function.Look at
HttpRequest
in RBTools for code already doing this. -
The naming may seem unrelated, but this is actually already available to us in Python's
email
module asemail.message_from_string
. This is used under-the-hood for Python's own HTTP header parsing, as it's the same standard.You can do something like this (I'm copying from the Python shell):
>>> import email >>> dict(email.message_from_string( ... 'User-Agent: foo\n' ... 'Content-Type: bar\n' ... 'X-Custom: foobar!') {'X-Custom': 'foobar!', 'Content-Type': 'bar', 'User-Agent': 'foo'}
-
-
Repeating ourselves for each method can end up increasing our maintenance burden. Instead, since these are all wrapping a centralized function, it's probably best to just document it there and instead refer readers to that in
args
.However, it's not quite right to pass in a dictionary as an argument and have that contain what's effectively keyword arguments. It would be better to make each of these things a new keyword argument.
Same goes for all other functions doing this.
-
Instead of
dict.items()
, we need to dosix.iteritems(dict)
to get consistent behavior across Python 2 and 3.Same anywhere else this may be done.
-
All these
_path
versions of these functions seem to have the same logic as the_url
versions, but are creating an absolute URL.How about just keeping the
_path
versions simple. have them call the_url
version, but with the absolute URL (throughurljoin
). -
-
-
-
I think we shouldn't say too much more than "Send a HTTP PATCH request to an API" (and same for other HTTP methods).
-
-
-
self.options.pretty_print
is a reference to internal code. Write these docs like nobody's reading your code. You probably want to say something like:If the :option:`--pretty` option is passed to the command, ...
-
-
-
-
You want a blank line before the statement and the loop, but not on the first inner line of the loop.
-
This can be simplified massively by doing a couple things:
-
Have each HTTP method option (
--get
,--post
, etc.) have an action ofstore_const
, setting a central attribute (say,'http_method'
) to a value (get
,post
, etc.). -
Update this code to compute the correct function to call:
http_method = self.options.http_method if path.startswith(...): client_method_name = '%s_url' % http_method else: client_method_name = '%s_path' % http_method client_method = getattr(api_client, http_method_name) assert client_method is not None resource = client_method(...)
-
-
-
-
I think we want to avoid allowing anything unexpected to be a query argument. What if an API takes a query argument of
?get=...
?The old code did this, but it was a bad idea.
Let's instead add a
--query
parameter, or allow it on the URL itself. -
The above recommendation about the HTTP method options will eliminate all of this.
Now, that doesn't mean that it'll duplicate this behavior. The way it'll work is that the last of
--get
,--post
, etc. specified wins. That isn't ideal, but it's frankly good enough.If we really want to protect the user here, the right solution would be to make a new action that gets passed to options, and have it warn at that time, before we do all this work.
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f
Checks run (1 failed, 1 succeeded)
flake8
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f dc68ac243b80d790d14d519b582e161fe371f941
Checks run (1 failed, 1 succeeded)
flake8
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f dc68ac243b80d790d14d519b582e161fe371f941 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f dc68ac243b80d790d14d519b582e161fe371f941 b8a14bb190c4e8f99bb37d71eaa8a2161149c501
- Commits:
-
Summary ID 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f dc68ac243b80d790d14d519b582e161fe371f941 b8a14bb190c4e8f99bb37d71eaa8a2161149c501 13e4b1d3a98ebb31a701b4c80c457da035d050c0 f5d08321dbf89a392a282e30b1cc4eba4f0d406e 39de827276ea422dea3fc1f630d35c17f415ab9c 9300eb1518e3b078f03aeb388b7f91821e915c7f 604bed2b22deb3145dcf7339753bd2096d9d8889 f12ccfbf6346c75a934fdf6e70ee37c6e5c38702 dc104eaacfc259f3466e0c0cf14982ccc21da57e dc4fcf3ccc29f5d6ab8243ade250c9ff830730e9 027ac7cc1ef765176d3c8a98c8fa09e9295a4378 3058676f474918449c806faea1fe1787e168e659 44efa2f7a4d647cba179c40223fa31685614cd15 e5c49dad1d97276dbe9e4a21edb136e7984ee54e 53939217e08588c88d4a410bab2b4337e8ebcfd8 5068e0c14b5c564f8917f221100b9b6fc084f563 d3baaf085443b05301478c034acc24631dfedd2b 921d578ffcec441f0047bc4f4c4fc8cd3c74673c e5529638e506d696280d0f28377f017729fe53a3 41fca77f0fcf26e86c9cef616e2e9ab8ce7dd371 8b092c2d0797f6f2f367d0a27d163dff221f0076 122e4a928f1513907dd14ca73289f08f33066f24 ca8f74f465f3ac16e3909f626ea649e3b8efd9b3 232ae21dc68075b4259ced72f86563e006f007cd 83d5cbb5a8c9b8c0bba6a2dfaa3660afb84a4abd 187b2ab7edcefd834a8c8da1cf62e03704c1605b aa3ebd0cc4f78e6fb887d7d7aedc30ab1e5b464f dc68ac243b80d790d14d519b582e161fe371f941 b8a14bb190c4e8f99bb37d71eaa8a2161149c501 5b9e1d3306d68e41892698b96c063439efaa9c49