python-xbox 0.1.0rc2__tar.gz → 0.1.0rc4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/LICENSE +2 -1
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/PKG-INFO +7 -4
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/pyproject.toml +21 -27
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/__init__.py +1 -1
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/client.py +2 -2
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/language.py +7 -1
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/account/__init__.py +4 -2
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/achievements/__init__.py +6 -6
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/achievements/models.py +13 -13
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/baseprovider.py +7 -1
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/catalog/__init__.py +1 -3
- python_xbox-0.1.0rc4/src/pythonxbox/api/provider/catalog/models.py +428 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/cqs/models.py +12 -12
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/gameclips/models.py +4 -5
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/lists/models.py +4 -6
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/mediahub/models.py +15 -17
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/message/models.py +14 -14
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/presence/__init__.py +3 -5
- python_xbox-0.1.0rc4/src/pythonxbox/api/provider/presence/models.py +53 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/profile/__init__.py +2 -4
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/profile/models.py +2 -3
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/ratelimitedprovider.py +8 -6
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/screenshots/models.py +5 -5
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/smartglass/__init__.py +8 -5
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/smartglass/models.py +26 -27
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/titlehub/__init__.py +11 -9
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/titlehub/models.py +30 -30
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/usersearch/models.py +1 -3
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/userstats/__init__.py +6 -8
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/userstats/models.py +12 -14
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/authentication/manager.py +4 -5
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/authentication/models.py +22 -23
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/authentication/xal.py +5 -5
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/exceptions.py +5 -3
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/filetimes.py +4 -20
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/models.py +3 -3
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/ratelimits/__init__.py +11 -12
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/request_signer.py +11 -10
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/signed_session.py +10 -4
- python_xbox-0.1.0rc4/src/pythonxbox/py.typed +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/scripts/__init__.py +1 -1
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/scripts/authenticate.py +5 -5
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/scripts/change_gamertag.py +2 -2
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/scripts/friends.py +2 -2
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/scripts/search.py +2 -2
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/scripts/xal.py +3 -3
- python_xbox-0.1.0rc2/src/pythonxbox/api/provider/catalog/models.py +0 -428
- python_xbox-0.1.0rc2/src/pythonxbox/api/provider/presence/models.py +0 -54
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/.gitignore +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/README.md +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/account/models.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/catalog/const.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/cqs/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/gameclips/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/lists/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/mediahub/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/message/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/people/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/people/models.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/screenshots/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/usersearch/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/authentication/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/__init__.py +0 -0
- {python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/common/ratelimits/models.py +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
Copyright (c)
|
|
1
|
+
Copyright (c) 2025 Manfred Dennerlein Rodelo
|
|
2
|
+
Copyright (c) 2020 - 2025 OpenXbox
|
|
2
3
|
|
|
3
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
5
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-xbox
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0rc4
|
|
4
4
|
Summary: A library to authenticate with Xbox Network and use their API
|
|
5
|
-
Project-URL:
|
|
5
|
+
Project-URL: Source, https://github.com/tr4nt0r/python-xbox
|
|
6
6
|
Author: OpenXbox
|
|
7
|
+
Author-email: Manfred Dennerlein Rodelo <manfred@dennerlein.name>
|
|
7
8
|
License-Expression: MIT
|
|
8
9
|
License-File: LICENSE
|
|
9
10
|
Keywords: xbox one live api
|
|
10
|
-
Classifier: Development Status ::
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
12
|
Classifier: Intended Audience :: Developers
|
|
12
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
13
15
|
Classifier: Programming Language :: Python :: 3
|
|
14
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -17,11 +19,12 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
17
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
18
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
21
|
Requires-Python: >=3.11
|
|
20
|
-
Requires-Dist: appdirs
|
|
21
22
|
Requires-Dist: ecdsa
|
|
22
23
|
Requires-Dist: httpx
|
|
23
24
|
Requires-Dist: ms-cv
|
|
24
25
|
Requires-Dist: pydantic==2.*
|
|
26
|
+
Provides-Extra: cli
|
|
27
|
+
Requires-Dist: platformdirs>=4.5.0; extra == 'cli'
|
|
25
28
|
Description-Content-Type: text/markdown
|
|
26
29
|
|
|
27
30
|
# Xbox-WebAPI
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
name = "python-xbox"
|
|
3
3
|
description = "A library to authenticate with Xbox Network and use their API"
|
|
4
4
|
authors = [
|
|
5
|
+
{name = "Manfred Dennerlein Rodelo", email = "manfred@dennerlein.name"},
|
|
5
6
|
{name = "OpenXbox"},
|
|
6
7
|
]
|
|
7
8
|
dependencies = [
|
|
8
|
-
"appdirs",
|
|
9
9
|
"ecdsa",
|
|
10
10
|
"httpx",
|
|
11
11
|
"ms_cv",
|
|
@@ -16,7 +16,7 @@ readme = "README.md"
|
|
|
16
16
|
license = "MIT"
|
|
17
17
|
keywords = ["xbox one live api"]
|
|
18
18
|
classifiers = [
|
|
19
|
-
"Development Status ::
|
|
19
|
+
"Development Status :: 5 - Production/Stable",
|
|
20
20
|
"Intended Audience :: Developers",
|
|
21
21
|
"License :: OSI Approved :: MIT License",
|
|
22
22
|
"Programming Language :: Python :: 3",
|
|
@@ -24,12 +24,18 @@ classifiers = [
|
|
|
24
24
|
"Programming Language :: Python :: 3.12",
|
|
25
25
|
"Programming Language :: Python :: 3.13",
|
|
26
26
|
"Programming Language :: Python :: 3.14",
|
|
27
|
+
"Operating System :: OS Independent",
|
|
27
28
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
28
29
|
]
|
|
29
30
|
dynamic = ["version"]
|
|
30
31
|
|
|
31
32
|
[project.urls]
|
|
32
|
-
|
|
33
|
+
Source = "https://github.com/tr4nt0r/python-xbox"
|
|
34
|
+
|
|
35
|
+
[project.optional-dependencies]
|
|
36
|
+
cli = [
|
|
37
|
+
"platformdirs>=4.5.0"
|
|
38
|
+
]
|
|
33
39
|
|
|
34
40
|
[project.scripts]
|
|
35
41
|
xbox-authenticate = "pythonxbox.scripts.authenticate:main"
|
|
@@ -40,15 +46,22 @@ xbox-xal = "pythonxbox.scripts.xal:main"
|
|
|
40
46
|
|
|
41
47
|
[tool.ruff]
|
|
42
48
|
line-length = 88
|
|
43
|
-
target-version = "
|
|
49
|
+
target-version = "py311"
|
|
44
50
|
|
|
45
51
|
[tool.ruff.lint]
|
|
46
|
-
select = ["E4", "E7", "E9", "F"]
|
|
47
|
-
|
|
52
|
+
select = ["E4", "E7", "E9", "F", "UP", "S", "ANN"]
|
|
53
|
+
# select = ["ALL"]
|
|
54
|
+
ignore = ["ANN003", "ANN401"]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
[tool.ruff.lint.per-file-ignores]
|
|
58
|
+
"**/scripts/*" = ["UP", "S104"]
|
|
59
|
+
"tests/*" = ["S101"]
|
|
60
|
+
"src/pythonxbox/authentication/xal.py" = ["S101"]
|
|
48
61
|
|
|
49
62
|
[tool.ruff.lint.isort]
|
|
50
63
|
force-sort-within-sections = true
|
|
51
|
-
known-first-party = ["
|
|
64
|
+
known-first-party = ["pythonxbox"]
|
|
52
65
|
combine-as-imports = true
|
|
53
66
|
split-on-trailing-comma = false
|
|
54
67
|
|
|
@@ -56,25 +69,6 @@ split-on-trailing-comma = false
|
|
|
56
69
|
quote-style = "double"
|
|
57
70
|
indent-style = "space"
|
|
58
71
|
|
|
59
|
-
|
|
60
|
-
[tool.bandit]
|
|
61
|
-
exclude_dirs = ["tests"]
|
|
62
|
-
tests = [
|
|
63
|
-
"B108",
|
|
64
|
-
"B306",
|
|
65
|
-
"B307",
|
|
66
|
-
"B313",
|
|
67
|
-
"B314",
|
|
68
|
-
"B315",
|
|
69
|
-
"B316",
|
|
70
|
-
"B317",
|
|
71
|
-
"B318",
|
|
72
|
-
"B319",
|
|
73
|
-
"B320",
|
|
74
|
-
"B602",
|
|
75
|
-
"B604"
|
|
76
|
-
]
|
|
77
|
-
|
|
78
72
|
[tool.hatch.version]
|
|
79
73
|
source = "regex_commit"
|
|
80
74
|
commit_extra_args = ["-e"]
|
|
@@ -90,7 +84,7 @@ packages = ["src/pythonxbox"]
|
|
|
90
84
|
[tool.hatch.envs.default]
|
|
91
85
|
python = "3.13"
|
|
92
86
|
dependencies = [
|
|
93
|
-
"
|
|
87
|
+
"platformdirs==4.5.0",
|
|
94
88
|
"ecdsa==0.19.1",
|
|
95
89
|
"httpx==0.28.1",
|
|
96
90
|
"ms_cv==0.1.1",
|
|
@@ -36,7 +36,7 @@ log = logging.getLogger("xbox.api")
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
class Session:
|
|
39
|
-
def __init__(self, auth_mgr: AuthenticationManager):
|
|
39
|
+
def __init__(self, auth_mgr: AuthenticationManager) -> None:
|
|
40
40
|
self._auth_mgr = auth_mgr
|
|
41
41
|
self._cv = CorrelationVector()
|
|
42
42
|
|
|
@@ -125,7 +125,7 @@ class XboxLiveClient:
|
|
|
125
125
|
self,
|
|
126
126
|
auth_mgr: AuthenticationManager,
|
|
127
127
|
language: XboxLiveLanguage = DefaultXboxLiveLanguages.United_States,
|
|
128
|
-
):
|
|
128
|
+
) -> None:
|
|
129
129
|
self._auth_mgr = auth_mgr
|
|
130
130
|
self.session = Session(auth_mgr)
|
|
131
131
|
self._language = language
|
|
@@ -4,7 +4,13 @@ Language definitions
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class XboxLiveLanguage:
|
|
7
|
-
def __init__(
|
|
7
|
+
def __init__(
|
|
8
|
+
self,
|
|
9
|
+
name: str,
|
|
10
|
+
short_id: str,
|
|
11
|
+
identifier: str,
|
|
12
|
+
locale: str,
|
|
13
|
+
) -> None:
|
|
8
14
|
"""
|
|
9
15
|
Initialize a new instance of :class:`XboxLiveLanguage`
|
|
10
16
|
|
{python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/account/__init__.py
RENAMED
|
@@ -12,7 +12,9 @@ class AccountProvider(BaseProvider):
|
|
|
12
12
|
HEADERS_USER_MGT = {"x-xbl-contract-version": "1"}
|
|
13
13
|
HEADERS_ACCOUNT = {"x-xbl-contract-version": "2"}
|
|
14
14
|
|
|
15
|
-
async def claim_gamertag(
|
|
15
|
+
async def claim_gamertag(
|
|
16
|
+
self, xuid: str, gamertag: str, **kwargs
|
|
17
|
+
) -> ClaimGamertagResult:
|
|
16
18
|
"""
|
|
17
19
|
Claim gamertag
|
|
18
20
|
|
|
@@ -40,7 +42,7 @@ class AccountProvider(BaseProvider):
|
|
|
40
42
|
resp.raise_for_status()
|
|
41
43
|
|
|
42
44
|
async def change_gamertag(
|
|
43
|
-
self, xuid, gamertag, preview=False, **kwargs
|
|
45
|
+
self, xuid: str, gamertag: str, preview: bool = False, **kwargs
|
|
44
46
|
) -> ChangeGamertagResult:
|
|
45
47
|
"""
|
|
46
48
|
Change your gamertag.
|
{python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/achievements/__init__.py
RENAMED
|
@@ -21,7 +21,7 @@ class AchievementsProvider(RateLimitedProvider):
|
|
|
21
21
|
RATE_LIMITS = {"burst": 100, "sustain": 300}
|
|
22
22
|
|
|
23
23
|
async def get_achievements_detail_item(
|
|
24
|
-
self, xuid, service_config_id, achievement_id, **kwargs
|
|
24
|
+
self, xuid: str, service_config_id: str, achievement_id: str, **kwargs
|
|
25
25
|
) -> AchievementResponse:
|
|
26
26
|
"""
|
|
27
27
|
Get achievement detail for specific item
|
|
@@ -45,7 +45,7 @@ class AchievementsProvider(RateLimitedProvider):
|
|
|
45
45
|
return AchievementResponse(**resp.json())
|
|
46
46
|
|
|
47
47
|
async def get_achievements_xbox360_all(
|
|
48
|
-
self, xuid, title_id, **kwargs
|
|
48
|
+
self, xuid: str, title_id: str, **kwargs
|
|
49
49
|
) -> Achievement360Response:
|
|
50
50
|
"""
|
|
51
51
|
Get all achievements for specific X360 title Id
|
|
@@ -70,7 +70,7 @@ class AchievementsProvider(RateLimitedProvider):
|
|
|
70
70
|
return Achievement360Response(**resp.json())
|
|
71
71
|
|
|
72
72
|
async def get_achievements_xbox360_earned(
|
|
73
|
-
self, xuid, title_id, **kwargs
|
|
73
|
+
self, xuid: str, title_id: str, **kwargs
|
|
74
74
|
) -> Achievement360Response:
|
|
75
75
|
"""
|
|
76
76
|
Get earned achievements for specific X360 title id
|
|
@@ -95,7 +95,7 @@ class AchievementsProvider(RateLimitedProvider):
|
|
|
95
95
|
return Achievement360Response(**resp.json())
|
|
96
96
|
|
|
97
97
|
async def get_achievements_xbox360_recent_progress_and_info(
|
|
98
|
-
self, xuid, **kwargs
|
|
98
|
+
self, xuid: str, **kwargs
|
|
99
99
|
) -> Achievement360ProgressResponse:
|
|
100
100
|
"""
|
|
101
101
|
Get recent achievement progress and information
|
|
@@ -117,7 +117,7 @@ class AchievementsProvider(RateLimitedProvider):
|
|
|
117
117
|
return Achievement360ProgressResponse(**resp.json())
|
|
118
118
|
|
|
119
119
|
async def get_achievements_xboxone_gameprogress(
|
|
120
|
-
self, xuid, title_id, **kwargs
|
|
120
|
+
self, xuid: str, title_id: str, **kwargs
|
|
121
121
|
) -> AchievementResponse:
|
|
122
122
|
"""
|
|
123
123
|
Get gameprogress for Xbox One title
|
|
@@ -142,7 +142,7 @@ class AchievementsProvider(RateLimitedProvider):
|
|
|
142
142
|
return AchievementResponse(**resp.json())
|
|
143
143
|
|
|
144
144
|
async def get_achievements_xboxone_recent_progress_and_info(
|
|
145
|
-
self, xuid, **kwargs
|
|
145
|
+
self, xuid: str, **kwargs
|
|
146
146
|
) -> RecentProgressResponse:
|
|
147
147
|
"""
|
|
148
148
|
Get recent achievement progress and information
|
{python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/achievements/models.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from datetime import datetime, time
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@ from pythonxbox.common.models import CamelCaseModel
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class PagingInfo(CamelCaseModel):
|
|
10
|
-
continuation_token:
|
|
10
|
+
continuation_token: str | None = None
|
|
11
11
|
total_records: int
|
|
12
12
|
|
|
13
13
|
|
|
@@ -37,20 +37,20 @@ class Title360(CamelCaseModel):
|
|
|
37
37
|
sequence: int
|
|
38
38
|
title_id: int
|
|
39
39
|
title_type: int
|
|
40
|
-
platforms:
|
|
40
|
+
platforms: list[int]
|
|
41
41
|
name: str
|
|
42
42
|
total_achievements: int
|
|
43
43
|
total_gamerscore: int
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class Achievement360Response(CamelCaseModel):
|
|
47
|
-
achievements:
|
|
47
|
+
achievements: list[Achievement360]
|
|
48
48
|
paging_info: PagingInfo
|
|
49
49
|
version: datetime
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
class Achievement360ProgressResponse(CamelCaseModel):
|
|
53
|
-
titles:
|
|
53
|
+
titles: list[Title360]
|
|
54
54
|
paging_info: PagingInfo
|
|
55
55
|
version: datetime
|
|
56
56
|
|
|
@@ -62,7 +62,7 @@ class TitleAssociation(BaseModel):
|
|
|
62
62
|
|
|
63
63
|
class Requirement(CamelCaseModel):
|
|
64
64
|
id: str
|
|
65
|
-
current:
|
|
65
|
+
current: str | None = None
|
|
66
66
|
target: str
|
|
67
67
|
operation_type: str
|
|
68
68
|
value_type: str
|
|
@@ -70,7 +70,7 @@ class Requirement(CamelCaseModel):
|
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
class Progression(CamelCaseModel):
|
|
73
|
-
requirements:
|
|
73
|
+
requirements: list[Requirement]
|
|
74
74
|
time_unlocked: datetime
|
|
75
75
|
|
|
76
76
|
|
|
@@ -93,11 +93,11 @@ class Achievement(CamelCaseModel):
|
|
|
93
93
|
id: str
|
|
94
94
|
service_config_id: str
|
|
95
95
|
name: str
|
|
96
|
-
title_associations:
|
|
96
|
+
title_associations: list[TitleAssociation]
|
|
97
97
|
progress_state: str
|
|
98
98
|
progression: Progression
|
|
99
|
-
media_assets:
|
|
100
|
-
platforms:
|
|
99
|
+
media_assets: list[MediaAsset]
|
|
100
|
+
platforms: list[str]
|
|
101
101
|
is_secret: bool
|
|
102
102
|
description: str
|
|
103
103
|
locked_description: str
|
|
@@ -105,14 +105,14 @@ class Achievement(CamelCaseModel):
|
|
|
105
105
|
achievement_type: str
|
|
106
106
|
participation_type: str
|
|
107
107
|
time_window: Any = None
|
|
108
|
-
rewards:
|
|
108
|
+
rewards: list[Reward]
|
|
109
109
|
estimated_time: time
|
|
110
110
|
deeplink: Any = None
|
|
111
111
|
is_revoked: bool
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
class AchievementResponse(CamelCaseModel):
|
|
115
|
-
achievements:
|
|
115
|
+
achievements: list[Achievement]
|
|
116
116
|
paging_info: PagingInfo
|
|
117
117
|
|
|
118
118
|
|
|
@@ -129,5 +129,5 @@ class Title(CamelCaseModel):
|
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
class RecentProgressResponse(CamelCaseModel):
|
|
132
|
-
titles:
|
|
132
|
+
titles: list[Title]
|
|
133
133
|
paging_info: PagingInfo
|
|
@@ -4,9 +4,15 @@ BaseProvider
|
|
|
4
4
|
Subclassed by every *real* provider
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
from typing import TYPE_CHECKING
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from pythonxbox.api.client import XboxLiveClient
|
|
12
|
+
|
|
7
13
|
|
|
8
14
|
class BaseProvider:
|
|
9
|
-
def __init__(self, client):
|
|
15
|
+
def __init__(self, client: "XboxLiveClient") -> None:
|
|
10
16
|
"""
|
|
11
17
|
Initialize an the BaseProvider
|
|
12
18
|
|
{python_xbox-0.1.0rc2 → python_xbox-0.1.0rc4}/src/pythonxbox/api/provider/catalog/__init__.py
RENAMED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Store Catalog - Lookup Product Information
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
|
-
|
|
7
5
|
from pythonxbox.api.provider.baseprovider import BaseProvider
|
|
8
6
|
from pythonxbox.api.provider.catalog.models import (
|
|
9
7
|
AlternateIdType,
|
|
@@ -20,7 +18,7 @@ class CatalogProvider(BaseProvider):
|
|
|
20
18
|
|
|
21
19
|
async def get_products(
|
|
22
20
|
self,
|
|
23
|
-
big_ids:
|
|
21
|
+
big_ids: list[str],
|
|
24
22
|
fields: FieldsTemplate = FieldsTemplate.DETAILS,
|
|
25
23
|
**kwargs,
|
|
26
24
|
) -> CatalogResponse:
|