valentina-python-client 2.0.0__tar.gz → 2.1.0__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.
Files changed (84) hide show
  1. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/PKG-INFO +4 -4
  2. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/pyproject.toml +13 -13
  3. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/__init__.py +1 -1
  4. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/dicerolls.py +55 -7
  5. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/dicerolls.py +49 -5
  6. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/LICENSE +0 -0
  7. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/README.md +0 -0
  8. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_codegen.py +0 -0
  9. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/__init__.py +0 -0
  10. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/client.py +0 -0
  11. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/registry.py +0 -0
  12. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/__init__.py +0 -0
  13. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/_audit_params.py +0 -0
  14. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/base.py +0 -0
  15. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/campaign_book_chapters.py +0 -0
  16. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/campaign_books.py +0 -0
  17. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/campaigns.py +0 -0
  18. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/character_autogen.py +0 -0
  19. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/character_blueprint.py +0 -0
  20. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/character_traits.py +0 -0
  21. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/characters.py +0 -0
  22. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/companies.py +0 -0
  23. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/developers.py +0 -0
  24. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/dictionary.py +0 -0
  25. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/global_admin.py +0 -0
  26. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/options.py +0 -0
  27. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/system.py +0 -0
  28. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/user_lookup.py +0 -0
  29. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/user_self_registration.py +0 -0
  30. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/services/users.py +0 -0
  31. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/testing/__init__.py +0 -0
  32. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/_sync/testing/_client.py +0 -0
  33. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/client.py +0 -0
  34. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/config.py +0 -0
  35. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/constants.py +0 -0
  36. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/endpoints.py +0 -0
  37. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/exceptions.py +0 -0
  38. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/__init__.py +0 -0
  39. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/audit_logs.py +0 -0
  40. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/books.py +0 -0
  41. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/campaigns.py +0 -0
  42. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/chapters.py +0 -0
  43. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/character_autogen.py +0 -0
  44. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/character_blueprint.py +0 -0
  45. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/character_trait.py +0 -0
  46. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/characters.py +0 -0
  47. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/companies.py +0 -0
  48. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/developers.py +0 -0
  49. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/diceroll.py +0 -0
  50. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/dictionary.py +0 -0
  51. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/full_sheet.py +0 -0
  52. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/global_admin.py +0 -0
  53. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/pagination.py +0 -0
  54. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/shared.py +0 -0
  55. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/system.py +0 -0
  56. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/user_lookup.py +0 -0
  57. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/models/users.py +0 -0
  58. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/py.typed +0 -0
  59. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/registry.py +0 -0
  60. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/__init__.py +0 -0
  61. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/_audit_params.py +0 -0
  62. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/base.py +0 -0
  63. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/campaign_book_chapters.py +0 -0
  64. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/campaign_books.py +0 -0
  65. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/campaigns.py +0 -0
  66. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/character_autogen.py +0 -0
  67. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/character_blueprint.py +0 -0
  68. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/character_traits.py +0 -0
  69. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/characters.py +0 -0
  70. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/companies.py +0 -0
  71. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/developers.py +0 -0
  72. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/dictionary.py +0 -0
  73. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/global_admin.py +0 -0
  74. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/options.py +0 -0
  75. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/system.py +0 -0
  76. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/user_lookup.py +0 -0
  77. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/user_self_registration.py +0 -0
  78. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/services/users.py +0 -0
  79. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/testing/__init__.py +0 -0
  80. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/testing/_client.py +0 -0
  81. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/testing/_factories.py +0 -0
  82. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/testing/_router.py +0 -0
  83. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/testing/_routes.py +0 -0
  84. {valentina_python_client-2.0.0 → valentina_python_client-2.1.0}/src/vclient/validate_constants.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: valentina-python-client
3
- Version: 2.0.0
3
+ Version: 2.1.0
4
4
  Summary: Async Python client library for the Valentina Noir API
5
5
  Author: Nate Landau
6
6
  Author-email: Nate Landau <github@natenate.org>
@@ -15,11 +15,11 @@ License: MIT License
15
15
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
16
  Classifier: Programming Language :: Python :: 3.13
17
17
  Classifier: Programming Language :: Python :: 3.14
18
- Requires-Dist: anyio>=4.13.0
18
+ Requires-Dist: anyio>=4.13.0,<5.0.0
19
19
  Requires-Dist: httpx>=0.28.1
20
20
  Requires-Dist: loguru>=0.7.3
21
- Requires-Dist: polyfactory>=3.3.0
22
- Requires-Dist: pydantic[email]>=2.13.1
21
+ Requires-Dist: polyfactory>=3.3.0,<4.0.0
22
+ Requires-Dist: pydantic[email]>=2.13.4,<3.0.0
23
23
  Requires-Dist: polyfactory>=3.3.0 ; extra == 'testing'
24
24
  Requires-Python: >=3.13
25
25
  Project-URL: Homepage, https://docs.valentina-noir.com/python-api-client/
@@ -5,18 +5,18 @@
5
5
  "Programming Language :: Python :: 3.14",
6
6
  ]
7
7
  dependencies = [
8
- "anyio>=4.13.0",
8
+ "anyio>=4.13.0, <5.0.0",
9
9
  "httpx>=0.28.1",
10
10
  "loguru>=0.7.3",
11
- "polyfactory>=3.3.0",
12
- "pydantic[email]>=2.13.1",
11
+ "polyfactory>=3.3.0, <4.0.0",
12
+ "pydantic[email]>=2.13.4, <3.0.0",
13
13
  ]
14
14
  description = "Async Python client library for the Valentina Noir API"
15
15
  license = { file = "LICENSE" }
16
16
  name = "valentina-python-client"
17
17
  readme = "README.md"
18
18
  requires-python = ">=3.13"
19
- version = "2.0.0"
19
+ version = "2.1.0"
20
20
 
21
21
  [project.optional-dependencies]
22
22
  testing = ["polyfactory>=3.3.0"]
@@ -27,35 +27,35 @@
27
27
 
28
28
  [build-system]
29
29
  build-backend = "uv_build"
30
- requires = ["uv_build>=0.9.26,<0.10.0"]
30
+ requires = ["uv_build>=0.11.15,<0.12.0"]
31
31
 
32
32
  [tool.uv.build-backend]
33
33
  module-name = "vclient"
34
34
 
35
35
  [dependency-groups]
36
36
  dev = [
37
- "commitizen>=4.13.10",
38
- "coverage>=7.13.5",
37
+ "commitizen>=4.16.2",
38
+ "coverage>=7.14.0",
39
39
  "duty>=1.9.0",
40
- "prek>=0.3.9",
40
+ "prek>=0.4.1",
41
41
  "pytest-anyio>=0.0.0",
42
42
  "pytest-clarity>=1.0.1",
43
43
  "pytest-cov>=7.1.0",
44
- "pytest-devtools>=1.0.0",
44
+ "pytest-devtools>=1.2.0",
45
45
  "pytest-mock>=3.15.1",
46
46
  "pytest-repeat>=0.9.4",
47
47
  "pytest-sugar>=1.1.1",
48
48
  "pytest-xdist>=3.8.0",
49
49
  "pytest>=9.0.3",
50
50
  "respx>=0.23.1",
51
- "ruff>=0.15.10",
51
+ "ruff>=0.15.14",
52
52
  "shellcheck-py>=0.11.0.1",
53
- "ty>=0.0.31",
54
- "typos>=1.45.1",
53
+ "ty>=0.0.39",
54
+ "typos>=1.46.2",
55
55
  "vulture>=2.16",
56
56
  "yamllint>=1.38.0",
57
57
  ]
58
- docs = ["zensical>=0.0.33"]
58
+ docs = ["zensical>=0.0.43"]
59
59
 
60
60
  [tool.commitizen]
61
61
  bump_message = "bump(release): v$current_version → v$new_version"
@@ -113,4 +113,4 @@ __all__ = (
113
113
  "users_service",
114
114
  )
115
115
 
116
- __version__ = "2.0.0"
116
+ __version__ = "2.1.0"
@@ -5,7 +5,7 @@ from collections.abc import Iterator
5
5
  from typing import TYPE_CHECKING
6
6
 
7
7
  from vclient._sync.services.base import SyncBaseService
8
- from vclient.constants import DEFAULT_PAGE_LIMIT
8
+ from vclient.constants import DEFAULT_PAGE_LIMIT, CharacterType
9
9
  from vclient.endpoints import Endpoints
10
10
  from vclient.models import Diceroll, DicerollCreate, PaginatedResponse, _DicerollQuickrollCreate
11
11
 
@@ -40,15 +40,32 @@ class SyncDicerollService(SyncBaseService):
40
40
  userid: str | None = None,
41
41
  characterid: str | None = None,
42
42
  campaignid: str | None = None,
43
+ character_type: CharacterType | None = None,
43
44
  ) -> PaginatedResponse[Diceroll]:
44
- """Retrieve a paginated page of dice rolls."""
45
+ """Retrieve a paginated page of dice rolls.
46
+
47
+ Args:
48
+ limit: Maximum number of items to return (0-100, default 10).
49
+ offset: Number of items to skip from the beginning (default 0).
50
+ userid: Filter by user ID.
51
+ characterid: Filter by character ID.
52
+ campaignid: Filter by campaign ID.
53
+ character_type: Filter by the associated character's type. Rolls with
54
+ no character are excluded when this filter is set.
55
+
56
+ Returns:
57
+ A PaginatedResponse containing Diceroll objects and pagination metadata.
58
+ """
45
59
  return self._get_paginated_as(
46
60
  self._format_endpoint(Endpoints.DICEROLLS),
47
61
  Diceroll,
48
62
  limit=limit,
49
63
  offset=offset,
50
64
  params=self._build_params(
51
- userid=userid, characterid=characterid, campaignid=campaignid
65
+ userid=userid,
66
+ characterid=characterid,
67
+ campaignid=campaignid,
68
+ character_type=character_type,
52
69
  ),
53
70
  )
54
71
 
@@ -58,12 +75,27 @@ class SyncDicerollService(SyncBaseService):
58
75
  userid: str | None = None,
59
76
  characterid: str | None = None,
60
77
  campaignid: str | None = None,
78
+ character_type: CharacterType | None = None,
61
79
  ) -> list[Diceroll]:
62
- """Retrieve all dice rolls."""
80
+ """Retrieve all dice rolls.
81
+
82
+ Args:
83
+ userid: Filter by user ID.
84
+ characterid: Filter by character ID.
85
+ campaignid: Filter by campaign ID.
86
+ character_type: Filter by the associated character's type. Rolls with
87
+ no character are excluded when this filter is set.
88
+
89
+ Returns:
90
+ A list of all Diceroll objects.
91
+ """
63
92
  return [
64
93
  diceroll
65
94
  for diceroll in self.iter_all(
66
- userid=userid, characterid=characterid, campaignid=campaignid
95
+ userid=userid,
96
+ characterid=characterid,
97
+ campaignid=campaignid,
98
+ character_type=character_type,
67
99
  )
68
100
  ]
69
101
 
@@ -73,14 +105,30 @@ class SyncDicerollService(SyncBaseService):
73
105
  userid: str | None = None,
74
106
  characterid: str | None = None,
75
107
  campaignid: str | None = None,
108
+ character_type: CharacterType | None = None,
76
109
  limit: int = 100,
77
110
  ) -> Iterator[Diceroll]:
78
- """Iterate through all dice rolls."""
111
+ """Iterate through all dice rolls.
112
+
113
+ Args:
114
+ userid: Filter by user ID.
115
+ characterid: Filter by character ID.
116
+ campaignid: Filter by campaign ID.
117
+ character_type: Filter by the associated character's type. Rolls with
118
+ no character are excluded when this filter is set.
119
+ limit: Items per page (default 100 for efficiency).
120
+
121
+ Yields:
122
+ Individual Diceroll objects.
123
+ """
79
124
  for item in self._iter_all_pages(
80
125
  self._format_endpoint(Endpoints.DICEROLLS),
81
126
  limit=limit,
82
127
  params=self._build_params(
83
- userid=userid, characterid=characterid, campaignid=campaignid
128
+ userid=userid,
129
+ characterid=characterid,
130
+ campaignid=campaignid,
131
+ character_type=character_type,
84
132
  ),
85
133
  ):
86
134
  yield Diceroll.model_validate(item)
@@ -3,7 +3,7 @@
3
3
  from collections.abc import AsyncIterator
4
4
  from typing import TYPE_CHECKING
5
5
 
6
- from vclient.constants import DEFAULT_PAGE_LIMIT
6
+ from vclient.constants import DEFAULT_PAGE_LIMIT, CharacterType
7
7
  from vclient.endpoints import Endpoints
8
8
  from vclient.models import (
9
9
  Diceroll,
@@ -48,8 +48,22 @@ class DicerollService(BaseService):
48
48
  userid: str | None = None,
49
49
  characterid: str | None = None,
50
50
  campaignid: str | None = None,
51
+ character_type: CharacterType | None = None,
51
52
  ) -> PaginatedResponse[Diceroll]:
52
- """Retrieve a paginated page of dice rolls."""
53
+ """Retrieve a paginated page of dice rolls.
54
+
55
+ Args:
56
+ limit: Maximum number of items to return (0-100, default 10).
57
+ offset: Number of items to skip from the beginning (default 0).
58
+ userid: Filter by user ID.
59
+ characterid: Filter by character ID.
60
+ campaignid: Filter by campaign ID.
61
+ character_type: Filter by the associated character's type. Rolls with
62
+ no character are excluded when this filter is set.
63
+
64
+ Returns:
65
+ A PaginatedResponse containing Diceroll objects and pagination metadata.
66
+ """
53
67
  return await self._get_paginated_as(
54
68
  self._format_endpoint(Endpoints.DICEROLLS),
55
69
  Diceroll,
@@ -59,6 +73,7 @@ class DicerollService(BaseService):
59
73
  userid=userid,
60
74
  characterid=characterid,
61
75
  campaignid=campaignid,
76
+ character_type=character_type,
62
77
  ),
63
78
  )
64
79
 
@@ -68,12 +83,27 @@ class DicerollService(BaseService):
68
83
  userid: str | None = None,
69
84
  characterid: str | None = None,
70
85
  campaignid: str | None = None,
86
+ character_type: CharacterType | None = None,
71
87
  ) -> list[Diceroll]:
72
- """Retrieve all dice rolls."""
88
+ """Retrieve all dice rolls.
89
+
90
+ Args:
91
+ userid: Filter by user ID.
92
+ characterid: Filter by character ID.
93
+ campaignid: Filter by campaign ID.
94
+ character_type: Filter by the associated character's type. Rolls with
95
+ no character are excluded when this filter is set.
96
+
97
+ Returns:
98
+ A list of all Diceroll objects.
99
+ """
73
100
  return [
74
101
  diceroll
75
102
  async for diceroll in self.iter_all(
76
- userid=userid, characterid=characterid, campaignid=campaignid
103
+ userid=userid,
104
+ characterid=characterid,
105
+ campaignid=campaignid,
106
+ character_type=character_type,
77
107
  )
78
108
  ]
79
109
 
@@ -83,9 +113,22 @@ class DicerollService(BaseService):
83
113
  userid: str | None = None,
84
114
  characterid: str | None = None,
85
115
  campaignid: str | None = None,
116
+ character_type: CharacterType | None = None,
86
117
  limit: int = 100,
87
118
  ) -> AsyncIterator[Diceroll]:
88
- """Iterate through all dice rolls."""
119
+ """Iterate through all dice rolls.
120
+
121
+ Args:
122
+ userid: Filter by user ID.
123
+ characterid: Filter by character ID.
124
+ campaignid: Filter by campaign ID.
125
+ character_type: Filter by the associated character's type. Rolls with
126
+ no character are excluded when this filter is set.
127
+ limit: Items per page (default 100 for efficiency).
128
+
129
+ Yields:
130
+ Individual Diceroll objects.
131
+ """
89
132
  async for item in self._iter_all_pages(
90
133
  self._format_endpoint(Endpoints.DICEROLLS),
91
134
  limit=limit,
@@ -93,6 +136,7 @@ class DicerollService(BaseService):
93
136
  userid=userid,
94
137
  characterid=characterid,
95
138
  campaignid=campaignid,
139
+ character_type=character_type,
96
140
  ),
97
141
  ):
98
142
  yield Diceroll.model_validate(item)