Skip to content

Commit 40cc923

Browse files
donBarbosmingyu.park
authored andcommitted
Improve oauthlib.oauth2.rfc6749 (python#13965)
1 parent bfc7ab3 commit 40cc923

File tree

11 files changed

+114
-102
lines changed

11 files changed

+114
-102
lines changed

stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/base.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ class Client:
9999
) -> tuple[str, dict[str, str], str]: ...
100100
def prepare_token_revocation_request(
101101
self,
102-
revocation_url,
103-
token,
102+
revocation_url: str,
103+
token: str,
104104
token_type_hint: Literal["access_token", "refresh_token"] | None = "access_token",
105105
body: str = "",
106106
callback: Callable[[Incomplete], Incomplete] | None = None,

stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/authorization.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ from .base import BaseEndpoint
88
log: Logger
99

1010
class AuthorizationEndpoint(BaseEndpoint):
11-
def __init__(self, default_response_type, default_token_type, response_types: dict[str, Incomplete]) -> None: ...
11+
def __init__(self, default_response_type: str, default_token_type: str, response_types: dict[str, Incomplete]) -> None: ...
1212
@property
13-
def response_types(self): ...
13+
def response_types(self) -> dict[str, Incomplete]: ...
1414
@property
15-
def default_response_type(self): ...
15+
def default_response_type(self) -> str: ...
1616
@property
1717
def default_response_type_handler(self): ...
1818
@property
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
from _typeshed import Incomplete
21
from logging import Logger
3-
from typing import Any
2+
from typing import Literal
43

54
from oauthlib.common import Request, _HTTPMethod
65

6+
from ..request_validator import RequestValidator
77
from .base import BaseEndpoint
88

99
log: Logger
1010

1111
class IntrospectEndpoint(BaseEndpoint):
12-
valid_token_types: Any
13-
valid_request_methods: Any
14-
request_validator: Any
15-
supported_token_types: Any
16-
def __init__(self, request_validator, supported_token_types: Incomplete | None = None) -> None: ...
12+
valid_token_types: tuple[Literal["access_token"], Literal["refresh_token"]]
13+
valid_request_methods: tuple[Literal["POST"]]
14+
request_validator: RequestValidator
15+
supported_token_types: tuple[str, ...]
16+
def __init__(self, request_validator: RequestValidator, supported_token_types: tuple[str, ...] | None = None) -> None: ...
1717
def create_introspect_response(
1818
self, uri: str, http_method: _HTTPMethod = "POST", body: str | None = None, headers: dict[str, str] | None = None
19-
): ...
19+
) -> tuple[dict[str, str], str, int]: ...
2020
def validate_introspect_request(self, request: Request) -> None: ...
Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
1+
from _typeshed import Incomplete
2+
from collections.abc import Iterable
13
from logging import Logger
2-
from typing import Any
34

45
from .base import BaseEndpoint
56

67
log: Logger
78

89
class MetadataEndpoint(BaseEndpoint):
9-
raise_errors: Any
10-
endpoints: Any
11-
initial_claims: Any
12-
claims: Any
13-
def __init__(self, endpoints, claims={}, raise_errors: bool = True) -> None: ...
10+
raise_errors: bool
11+
endpoints: Iterable[BaseEndpoint]
12+
initial_claims: dict[str, Incomplete]
13+
claims: dict[str, Incomplete]
14+
def __init__(
15+
self, endpoints: Iterable[BaseEndpoint], claims: dict[str, Incomplete] = {}, raise_errors: bool = True
16+
) -> None: ...
1417
def create_metadata_response(
1518
self, uri: str, http_method: str = "GET", body: str | None = None, headers: dict[str, str] | None = None
16-
): ...
19+
) -> tuple[dict[str, str], str, int]: ...
1720
def validate_metadata(
1821
self, array, key, is_required: bool = False, is_list: bool = False, is_url: bool = False, is_issuer: bool = False
1922
) -> None: ...
20-
def validate_metadata_token(self, claims, endpoint) -> None: ...
21-
def validate_metadata_authorization(self, claims, endpoint): ...
22-
def validate_metadata_revocation(self, claims, endpoint) -> None: ...
23-
def validate_metadata_introspection(self, claims, endpoint) -> None: ...
24-
def validate_metadata_server(self): ...
23+
def validate_metadata_token(self, claims, endpoint: BaseEndpoint) -> None: ...
24+
def validate_metadata_authorization(self, claims, endpoint: BaseEndpoint): ...
25+
def validate_metadata_revocation(self, claims, endpoint: BaseEndpoint) -> None: ...
26+
def validate_metadata_introspection(self, claims, endpoint: BaseEndpoint) -> None: ...
27+
def validate_metadata_server(self) -> dict[str, Incomplete]: ...
Lines changed: 50 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,81 @@
1-
from _typeshed import Incomplete
2-
from typing import Any
1+
from _typeshed import Unused
2+
from collections.abc import Callable
33

4+
from oauthlib.common import Request
5+
6+
from ..grant_types import (
7+
AuthorizationCodeGrant,
8+
ClientCredentialsGrant,
9+
ImplicitGrant,
10+
RefreshTokenGrant,
11+
ResourceOwnerPasswordCredentialsGrant,
12+
)
13+
from ..request_validator import RequestValidator
14+
from ..tokens import BearerToken
415
from .authorization import AuthorizationEndpoint
516
from .introspect import IntrospectEndpoint
617
from .resource import ResourceEndpoint
718
from .revocation import RevocationEndpoint
819
from .token import TokenEndpoint
920

1021
class Server(AuthorizationEndpoint, IntrospectEndpoint, TokenEndpoint, ResourceEndpoint, RevocationEndpoint):
11-
auth_grant: Any
12-
implicit_grant: Any
13-
password_grant: Any
14-
credentials_grant: Any
15-
refresh_grant: Any
16-
bearer: Any
22+
auth_grant: AuthorizationCodeGrant
23+
implicit_grant: ImplicitGrant
24+
password_grant: ResourceOwnerPasswordCredentialsGrant
25+
credentials_grant: ClientCredentialsGrant
26+
refresh_grant: RefreshTokenGrant
27+
bearer: BearerToken
1728
def __init__(
1829
self,
19-
request_validator,
20-
token_expires_in: Incomplete | None = None,
21-
token_generator: Incomplete | None = None,
22-
refresh_token_generator: Incomplete | None = None,
23-
*args,
24-
**kwargs,
30+
request_validator: RequestValidator,
31+
token_expires_in: int | Callable[[Request], int] | None = None,
32+
token_generator: Callable[[Request], str] | None = None,
33+
refresh_token_generator: Callable[[Request], str] | None = None,
34+
*args: Unused,
2535
) -> None: ...
2636

2737
class WebApplicationServer(AuthorizationEndpoint, IntrospectEndpoint, TokenEndpoint, ResourceEndpoint, RevocationEndpoint):
28-
auth_grant: Any
29-
refresh_grant: Any
30-
bearer: Any
38+
auth_grant: AuthorizationCodeGrant
39+
refresh_grant: RefreshTokenGrant
40+
bearer: BearerToken
3141
def __init__(
3242
self,
33-
request_validator,
34-
token_generator: Incomplete | None = None,
35-
token_expires_in: Incomplete | None = None,
36-
refresh_token_generator: Incomplete | None = None,
37-
**kwargs,
43+
request_validator: RequestValidator,
44+
token_generator: Callable[[Request], str] | None = None,
45+
token_expires_in: int | Callable[[Request], int] | None = None,
46+
refresh_token_generator: Callable[[Request], str] | None = None,
3847
) -> None: ...
3948

4049
class MobileApplicationServer(AuthorizationEndpoint, IntrospectEndpoint, ResourceEndpoint, RevocationEndpoint):
41-
implicit_grant: Any
42-
bearer: Any
50+
implicit_grant: ImplicitGrant
51+
bearer: BearerToken
4352
def __init__(
4453
self,
45-
request_validator,
46-
token_generator: Incomplete | None = None,
47-
token_expires_in: Incomplete | None = None,
48-
refresh_token_generator: Incomplete | None = None,
49-
**kwargs,
54+
request_validator: RequestValidator,
55+
token_generator: Callable[[Request], str] | None = None,
56+
token_expires_in: int | Callable[[Request], int] | None = None,
57+
refresh_token_generator: Callable[[Request], str] | None = None,
5058
) -> None: ...
5159

5260
class LegacyApplicationServer(TokenEndpoint, IntrospectEndpoint, ResourceEndpoint, RevocationEndpoint):
53-
password_grant: Any
54-
refresh_grant: Any
55-
bearer: Any
61+
password_grant: ResourceOwnerPasswordCredentialsGrant
62+
refresh_grant: RefreshTokenGrant
63+
bearer: BearerToken
5664
def __init__(
5765
self,
58-
request_validator,
59-
token_generator: Incomplete | None = None,
60-
token_expires_in: Incomplete | None = None,
61-
refresh_token_generator: Incomplete | None = None,
62-
**kwargs,
66+
request_validator: RequestValidator,
67+
token_generator: Callable[[Request], str] | None = None,
68+
token_expires_in: int | Callable[[Request], int] | None = None,
69+
refresh_token_generator: Callable[[Request], str] | None = None,
6370
) -> None: ...
6471

6572
class BackendApplicationServer(TokenEndpoint, IntrospectEndpoint, ResourceEndpoint, RevocationEndpoint):
66-
credentials_grant: Any
67-
bearer: Any
73+
credentials_grant: ClientCredentialsGrant
74+
bearer: BearerToken
6875
def __init__(
6976
self,
70-
request_validator,
71-
token_generator: Incomplete | None = None,
72-
token_expires_in: Incomplete | None = None,
73-
refresh_token_generator: Incomplete | None = None,
74-
**kwargs,
77+
request_validator: RequestValidator,
78+
token_generator: Callable[[Request], str] | None = None,
79+
token_expires_in: int | Callable[[Request], int] | None = None,
80+
refresh_token_generator: Callable[[Request], str] | None = None,
7581
) -> None: ...

stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/resource.pyi

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ from .base import BaseEndpoint
88
log: Logger
99

1010
class ResourceEndpoint(BaseEndpoint):
11-
def __init__(self, default_token, token_types) -> None: ...
11+
def __init__(self, default_token: str, token_types: dict[str, Incomplete]) -> None: ...
1212
@property
13-
def default_token(self): ...
13+
def default_token(self) -> str: ...
1414
@property
1515
def default_token_type_handler(self): ...
1616
@property
17-
def tokens(self): ...
17+
def tokens(self) -> dict[str, Incomplete]: ...
1818
def verify_request(
1919
self,
20-
uri,
20+
uri: str,
2121
http_method: _HTTPMethod = "GET",
2222
body: str | None = None,
2323
headers: dict[str, str] | None = None,
2424
scopes: Incomplete | None = None,
25-
): ...
25+
) -> tuple[bool, Request]: ...
2626
def find_token_type(self, request: Request): ...
Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1-
from _typeshed import Incomplete
21
from logging import Logger
3-
from typing import Any
2+
from typing import Literal
43

54
from oauthlib.common import Request, _HTTPMethod
65

6+
from ..request_validator import RequestValidator
77
from .base import BaseEndpoint
88

99
log: Logger
1010

1111
class RevocationEndpoint(BaseEndpoint):
12-
valid_token_types: Any
13-
valid_request_methods: Any
14-
request_validator: Any
15-
supported_token_types: Any
16-
enable_jsonp: Any
12+
valid_token_types: tuple[Literal["access_token"], Literal["refresh_token"]]
13+
valid_request_methods: tuple[Literal["POST"]]
14+
request_validator: RequestValidator
15+
supported_token_types: tuple[str, ...]
16+
enable_jsonp: bool
1717
def __init__(
18-
self, request_validator, supported_token_types: Incomplete | None = None, enable_jsonp: bool = False
18+
self,
19+
request_validator: RequestValidator,
20+
supported_token_types: tuple[str, ...] | None = None,
21+
enable_jsonp: bool = False,
1922
) -> None: ...
2023
def create_revocation_response(
2124
self, uri: str, http_method: _HTTPMethod = "POST", body: str | None = None, headers: dict[str, str] | None = None
22-
): ...
25+
) -> tuple[dict[str, str], str, int]: ...
2326
def validate_revocation_request(self, request: Request) -> None: ...

stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/token.pyi

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from _typeshed import Incomplete
22
from logging import Logger
3+
from typing import Literal
34

45
from oauthlib.common import Request, _HTTPMethod
56

@@ -8,16 +9,16 @@ from .base import BaseEndpoint
89
log: Logger
910

1011
class TokenEndpoint(BaseEndpoint):
11-
valid_request_methods: tuple[str]
12-
def __init__(self, default_grant_type, default_token_type, grant_types) -> None: ...
12+
valid_request_methods: tuple[Literal["POST"]]
13+
def __init__(self, default_grant_type: str, default_token_type: str, grant_types: dict[str, Incomplete]) -> None: ...
1314
@property
14-
def grant_types(self): ...
15+
def grant_types(self) -> dict[str, Incomplete]: ...
1516
@property
16-
def default_grant_type(self): ...
17+
def default_grant_type(self) -> str: ...
1718
@property
1819
def default_grant_type_handler(self): ...
1920
@property
20-
def default_token_type(self): ...
21+
def default_token_type(self) -> str: ...
2122
def create_token_response(
2223
self,
2324
uri: str,

stubs/oauthlib/oauthlib/oauth2/rfc6749/errors.pyi

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ class OAuth2Error(Exception):
88
status_code: int
99
description: str
1010
uri: str | None
11-
state: Any
12-
redirect_uri: Any
13-
client_id: Any
11+
state: str | None
12+
redirect_uri: str | None
13+
client_id: str | None
1414
scopes: Any
15-
response_type: Any
16-
response_mode: Any
17-
grant_type: Any
15+
response_type: str | None
16+
response_mode: str | None
17+
grant_type: str | None
1818
def __init__(
1919
self,
2020
description: str | None = None,
2121
uri: str | None = None,
22-
state: Incomplete | None = None,
22+
state: str | None = None,
2323
status_code: int | None = None,
2424
request: Request | None = None,
2525
) -> None: ...
2626
def in_uri(self, uri: str) -> str: ...
2727
@property
28-
def twotuples(self) -> list[tuple[str, Incomplete | str | None]]: ...
28+
def twotuples(self) -> list[tuple[str, str | None]]: ...
2929
@property
3030
def urlencoded(self) -> str: ...
3131
@property
@@ -142,7 +142,7 @@ class CustomOAuth2Error(OAuth2Error):
142142
error: str,
143143
description: str | None = None,
144144
uri: str | None = None,
145-
state: Incomplete | None = None,
145+
state: str | None = None,
146146
status_code: int | None = None,
147147
request: Request | None = None,
148148
) -> None: ...

stubs/oauthlib/oauthlib/oauth2/rfc6749/tokens.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ class BearerToken(TokenBase):
5454
request_validator: RequestValidator | None
5555
token_generator: Callable[[Request], str]
5656
refresh_token_generator: Callable[[Request], str]
57-
expires_in: int
57+
expires_in: int | Callable[[Request], int]
5858
def __init__(
5959
self,
6060
request_validator: RequestValidator | None = None,
6161
token_generator: Callable[[Request], str] | None = None,
62-
expires_in: int | None = None,
62+
expires_in: int | Callable[[Request], int] | None = None,
6363
refresh_token_generator: Callable[[Request], str] | None = None,
6464
) -> None: ...
6565
def create_token(self, request: Request, refresh_token: bool = False, **kwargs) -> OAuth2Token: ...

0 commit comments

Comments
 (0)