valentina-python-client 1.1.0__tar.gz → 1.1.2__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 (46) hide show
  1. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/PKG-INFO +1 -1
  2. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/pyproject.toml +1 -1
  3. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/endpoints.py +3 -3
  4. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/__init__.py +2 -1
  5. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/character_trait.py +3 -3
  6. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/characters.py +2 -2
  7. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/users.py +1 -1
  8. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/character_blueprint.py +1 -1
  9. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/character_traits.py +2 -2
  10. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/users.py +9 -3
  11. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/LICENSE +0 -0
  12. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/README.md +0 -0
  13. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/__init__.py +0 -0
  14. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/client.py +0 -0
  15. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/config.py +0 -0
  16. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/constants.py +0 -0
  17. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/exceptions.py +0 -0
  18. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/books.py +0 -0
  19. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/campaigns.py +0 -0
  20. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/chapters.py +0 -0
  21. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/character_autogen.py +0 -0
  22. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/character_blueprint.py +0 -0
  23. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/companies.py +0 -0
  24. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/developers.py +0 -0
  25. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/diceroll.py +0 -0
  26. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/dictionary.py +0 -0
  27. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/global_admin.py +0 -0
  28. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/pagination.py +0 -0
  29. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/shared.py +0 -0
  30. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/models/system.py +0 -0
  31. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/py.typed +0 -0
  32. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/registry.py +0 -0
  33. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/__init__.py +0 -0
  34. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/base.py +0 -0
  35. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/campaign_book_chapters.py +0 -0
  36. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/campaign_books.py +0 -0
  37. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/campaigns.py +0 -0
  38. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/character_autogen.py +0 -0
  39. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/characters.py +0 -0
  40. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/companies.py +0 -0
  41. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/developers.py +0 -0
  42. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/dicerolls.py +0 -0
  43. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/dictionary.py +0 -0
  44. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/global_admin.py +0 -0
  45. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/options.py +0 -0
  46. {valentina_python_client-1.1.0 → valentina_python_client-1.1.2}/src/vclient/services/system.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: valentina-python-client
3
- Version: 1.1.0
3
+ Version: 1.1.2
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>
@@ -10,7 +10,7 @@
10
10
  name = "valentina-python-client"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.13"
13
- version = "1.1.0"
13
+ version = "1.1.2"
14
14
 
15
15
  [project.urls]
16
16
  Homepage = "https://docs.valentina-noir.com/python-api-client/"
@@ -124,12 +124,12 @@ class Endpoints:
124
124
  BLUEPRINT_TRAIT_DETAIL = f"{BLUEPRINT_TRAITS}/{{trait_id}}"
125
125
  CONCEPTS = f"{BLUEPRINT_BASE}/concepts"
126
126
  CONCEPT_DETAIL = f"{CONCEPTS}/{{concept_id}}"
127
- VAMPIRE_CLANS = f"{BLUEPRINT_BASE}/vampireclans"
127
+ VAMPIRE_CLANS = f"{BLUEPRINT_BASE}/vampire-clans"
128
128
  VAMPIRE_CLAN_DETAIL = f"{VAMPIRE_CLANS}/{{vampire_clan_id}}"
129
129
  WEREWOLF_TRIBES = f"{BLUEPRINT_BASE}/werewolf-tribes"
130
130
  WEREWOLF_TRIBE_DETAIL = f"{WEREWOLF_TRIBES}/{{werewolf_tribe_id}}"
131
131
  WEREWOLF_AUSPICES = f"{BLUEPRINT_BASE}/werewolf-auspices"
132
- WEREWOLF_AUSPIE_DETAIL = f"{WEREWOLF_AUSPICES}/{{werewolf_auspice_id}}"
132
+ WEREWOLF_AUSPICE_DETAIL = f"{WEREWOLF_AUSPICES}/{{werewolf_auspice_id}}"
133
133
  WEREWOLF_GIFTS = f"{BLUEPRINT_BASE}/werewolf-gifts"
134
134
  WEREWOLF_GIFT_DETAIL = f"{WEREWOLF_GIFTS}/{{werewolf_gift_id}}"
135
135
  WEREWOLF_RITES = f"{BLUEPRINT_BASE}/werewolf-rites"
@@ -140,7 +140,7 @@ class Endpoints:
140
140
  HUNTER_EDGE_PERK_DETAIL = f"{HUNTER_EDGE_PERKS}/{{hunter_edge_perk_id}}"
141
141
 
142
142
  # Dictionary endpoints
143
- DICTIONARY_TERMS = f"{COMPANY}/dictionary"
143
+ DICTIONARY_TERMS = f"{COMPANY}/dictionaries"
144
144
  DICTIONARY_TERM = f"{DICTIONARY_TERMS}/{{term_id}}"
145
145
 
146
146
  # Dice Rolls
@@ -34,10 +34,10 @@ from .character_blueprint import (
34
34
  WerewolfTribe,
35
35
  )
36
36
  from .character_trait import (
37
+ CharacterCreateTraitAssign,
37
38
  CharacterTrait,
38
39
  CharacterTraitValueOptionsResponse,
39
40
  TraitCreate,
40
- _TraitAssign as _TraitAssign,
41
41
  _TraitModify as _TraitModify,
42
42
  )
43
43
  from .characters import (
@@ -133,6 +133,7 @@ __all__ = [
133
133
  "Character",
134
134
  "CharacterConcept",
135
135
  "CharacterCreate",
136
+ "CharacterCreateTraitAssign",
136
137
  "CharacterHunterEdge",
137
138
  "CharacterSpecialty",
138
139
  "CharacterTrait",
@@ -18,8 +18,8 @@ class CharacterTrait(BaseModel):
18
18
  trait: Trait
19
19
 
20
20
 
21
- class _TraitAssign(BaseModel):
22
- """Internal request model for assigning a character trait."""
21
+ class CharacterCreateTraitAssign(BaseModel):
22
+ """Request model for assigning a character trait to a new character."""
23
23
 
24
24
  trait_id: str
25
25
  value: int
@@ -72,10 +72,10 @@ class CharacterTraitValueOptionsResponse(BaseModel):
72
72
 
73
73
 
74
74
  __all__ = [
75
+ "CharacterCreateTraitAssign",
75
76
  "CharacterTrait",
76
77
  "CharacterTraitValueOption",
77
78
  "CharacterTraitValueOptionsResponse",
78
79
  "TraitCreate",
79
- "_TraitAssign",
80
80
  "_TraitModify",
81
81
  ]
@@ -14,7 +14,7 @@ from vclient.constants import (
14
14
  HunterEdgeType,
15
15
  )
16
16
 
17
- from .character_trait import _TraitAssign
17
+ from .character_trait import CharacterCreateTraitAssign
18
18
  from .shared import CharacterSpecialty, NameDescriptionSubDocument
19
19
 
20
20
  # -----------------------------------------------------------------------------
@@ -233,7 +233,7 @@ class CharacterCreate(BaseModel):
233
233
  user_player_id: str | None = Field(
234
234
  default=None, description="ID of the user who will play the character."
235
235
  )
236
- traits: list[_TraitAssign] | None = Field(
236
+ traits: list[CharacterCreateTraitAssign] | None = Field(
237
237
  default=None, description="List of traits to assign to the character."
238
238
  )
239
239
  vampire_attributes: VampireAttributesCreate | None = Field(
@@ -151,8 +151,8 @@ class _ExperienceAddRemove(BaseModel):
151
151
  """
152
152
 
153
153
  amount: int
154
- user_id: str
155
154
  campaign_id: str
155
+ requesting_user_id: str
156
156
 
157
157
 
158
158
  __all__ = [
@@ -436,7 +436,7 @@ class CharacterBlueprintService(BaseService):
436
436
  """Get a werewolf auspice by ID."""
437
437
  response = await self._get(
438
438
  self._format_endpoint(
439
- Endpoints.WEREWOLF_AUSPIE_DETAIL, werewolf_auspice_id=werewolf_auspice_id
439
+ Endpoints.WEREWOLF_AUSPICE_DETAIL, werewolf_auspice_id=werewolf_auspice_id
440
440
  ),
441
441
  )
442
442
  return WerewolfAuspice.model_validate(response.json())
@@ -6,11 +6,11 @@ from typing import TYPE_CHECKING
6
6
  from vclient.constants import DEFAULT_PAGE_LIMIT, TraitModifyCurrency
7
7
  from vclient.endpoints import Endpoints
8
8
  from vclient.models import (
9
+ CharacterCreateTraitAssign,
9
10
  CharacterTrait,
10
11
  CharacterTraitValueOptionsResponse,
11
12
  PaginatedResponse,
12
13
  TraitCreate,
13
- _TraitAssign,
14
14
  _TraitModify,
15
15
  )
16
16
  from vclient.services.base import BaseService
@@ -173,7 +173,7 @@ class CharacterTraitsService(BaseService):
173
173
  ValidationError: If the request data is invalid.
174
174
  """
175
175
  body = self._validate_request(
176
- _TraitAssign,
176
+ CharacterCreateTraitAssign,
177
177
  trait_id=trait_id,
178
178
  value=value,
179
179
  )
@@ -413,6 +413,7 @@ class UsersService(BaseService):
413
413
  user_id: str,
414
414
  campaign_id: str,
415
415
  amount: int,
416
+ requesting_user_id: str,
416
417
  ) -> CampaignExperience:
417
418
  """Award experience points to a user for a specific campaign.
418
419
 
@@ -423,6 +424,7 @@ class UsersService(BaseService):
423
424
  user_id: The ID of the user to award XP to.
424
425
  campaign_id: The ID of the campaign to add XP for.
425
426
  amount: The amount of XP to add.
427
+ requesting_user_id: ID of the user making the request (for permissions).
426
428
 
427
429
  Returns:
428
430
  Updated CampaignExperience object.
@@ -435,8 +437,8 @@ class UsersService(BaseService):
435
437
  body = self._validate_request(
436
438
  _ExperienceAddRemove,
437
439
  amount=amount,
438
- user_id=user_id,
439
440
  campaign_id=campaign_id,
441
+ requesting_user_id=requesting_user_id,
440
442
  )
441
443
  response = await self._post(
442
444
  self._format_endpoint(Endpoints.USER_EXPERIENCE_XP_ADD, user_id=user_id),
@@ -449,6 +451,7 @@ class UsersService(BaseService):
449
451
  user_id: str,
450
452
  campaign_id: str,
451
453
  amount: int,
454
+ requesting_user_id: str,
452
455
  ) -> CampaignExperience:
453
456
  """Deduct experience points from a user's current XP pool.
454
457
 
@@ -458,6 +461,7 @@ class UsersService(BaseService):
458
461
  user_id: The ID of the user to remove XP from.
459
462
  campaign_id: The ID of the campaign to remove XP for.
460
463
  amount: The amount of XP to remove.
464
+ requesting_user_id: ID of the user making the request (for permissions).
461
465
 
462
466
  Returns:
463
467
  Updated CampaignExperience object.
@@ -471,8 +475,8 @@ class UsersService(BaseService):
471
475
  body = self._validate_request(
472
476
  _ExperienceAddRemove,
473
477
  amount=amount,
474
- user_id=user_id,
475
478
  campaign_id=campaign_id,
479
+ requesting_user_id=requesting_user_id,
476
480
  )
477
481
  response = await self._post(
478
482
  self._format_endpoint(Endpoints.USER_EXPERIENCE_XP_REMOVE, user_id=user_id),
@@ -485,6 +489,7 @@ class UsersService(BaseService):
485
489
  user_id: str,
486
490
  campaign_id: str,
487
491
  amount: int,
492
+ requesting_user_id: str,
488
493
  ) -> CampaignExperience:
489
494
  """Award cool points to a user for a specific campaign.
490
495
 
@@ -495,6 +500,7 @@ class UsersService(BaseService):
495
500
  user_id: The ID of the user to award cool points to.
496
501
  campaign_id: The ID of the campaign to add cool points for.
497
502
  amount: The amount of cool points to add.
503
+ requesting_user_id: ID of the user making the request (for permissions).
498
504
 
499
505
  Returns:
500
506
  Updated CampaignExperience object.
@@ -507,8 +513,8 @@ class UsersService(BaseService):
507
513
  body = self._validate_request(
508
514
  _ExperienceAddRemove,
509
515
  amount=amount,
510
- user_id=user_id,
511
516
  campaign_id=campaign_id,
517
+ requesting_user_id=requesting_user_id,
512
518
  )
513
519
  response = await self._post(
514
520
  self._format_endpoint(Endpoints.USER_EXPERIENCE_CP_ADD, user_id=user_id),