fluidattacks_gitlab_sdk 3.0.2__tar.gz → 3.0.3__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 (89) hide show
  1. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/PKG-INFO +1 -1
  2. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/__init__.py +1 -1
  3. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/_client/_updated_by.py +14 -2
  4. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/users/core.py +3 -0
  5. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/users/decode.py +13 -2
  6. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/issues/test_decode.py +7 -1
  7. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/merge_request/test_decode.py +4 -0
  8. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/mr_approvals/decoder_test.py +3 -1
  9. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/.envrc +0 -0
  10. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/build/default.nix +0 -0
  11. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/build/filter.nix +0 -0
  12. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/flake.lock +0 -0
  13. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/flake.nix +0 -0
  14. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_decoders.py +0 -0
  15. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_gql_client/__init__.py +0 -0
  16. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_gql_client/_client.py +0 -0
  17. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_gql_client/_error.py +0 -0
  18. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_gql_client/_handlers.py +0 -0
  19. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_handlers.py +0 -0
  20. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_http_client/__init__.py +0 -0
  21. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_http_client/_client_1.py +0 -0
  22. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_http_client/_core.py +0 -0
  23. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/_logger.py +0 -0
  24. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/ids.py +0 -0
  25. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/__init__.py +0 -0
  26. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/_client/__init__.py +0 -0
  27. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/_client/_decode.py +0 -0
  28. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/_client/_get_issue.py +0 -0
  29. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/_client/_most_recent.py +0 -0
  30. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/issues/core.py +0 -0
  31. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/jobs/__init__.py +0 -0
  32. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/jobs/_client.py +0 -0
  33. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/jobs/_decode.py +0 -0
  34. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/jobs/core.py +0 -0
  35. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/members/__init__.py +0 -0
  36. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/members/_client.py +0 -0
  37. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/members/_decode.py +0 -0
  38. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/members/core.py +0 -0
  39. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/merge_requests/__init__.py +0 -0
  40. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/merge_requests/_client.py +0 -0
  41. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/merge_requests/_decode.py +0 -0
  42. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/merge_requests/core.py +0 -0
  43. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/milestones/__init__.py +0 -0
  44. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/milestones/_client.py +0 -0
  45. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/milestones/_decode.py +0 -0
  46. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/milestones/core.py +0 -0
  47. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/mr_approvals/__init__.py +0 -0
  48. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/mr_approvals/_client.py +0 -0
  49. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/mr_approvals/_decode.py +0 -0
  50. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/mr_approvals/core.py +0 -0
  51. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/py.typed +0 -0
  52. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/fluidattacks_gitlab_sdk/users/__init__.py +0 -0
  53. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/mypy.ini +0 -0
  54. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/pyproject.toml +0 -0
  55. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/ruff.toml +0 -0
  56. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/__init__.py +0 -0
  57. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/arch/__init__.py +0 -0
  58. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/arch/arch.py +0 -0
  59. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/arch/test_arch.py +0 -0
  60. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/issues/__init__.py +0 -0
  61. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/issues/data.json +0 -0
  62. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/jobs/__init__.py +0 -0
  63. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/jobs/data.json +0 -0
  64. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/jobs/test_decode_job.py +0 -0
  65. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/members/__init__.py +0 -0
  66. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/members/data.json +0 -0
  67. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/members/test_decode_members.py +0 -0
  68. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/merge_request/__init__.py +0 -0
  69. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/merge_request/data.json +0 -0
  70. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/merge_request/data_mr_updates.json +0 -0
  71. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/mr_approvals/__init__.py +0 -0
  72. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/mr_approvals/data.json +0 -0
  73. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests/py.typed +0 -0
  74. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/__init__.py +0 -0
  75. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/_utils.py +0 -0
  76. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/issues/__init__.py +0 -0
  77. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/issues/test_issue_client.py +0 -0
  78. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/jobs/__init__.py +0 -0
  79. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/jobs/client_test.py +0 -0
  80. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/members/__init__.py +0 -0
  81. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/members/test_client_members.py +0 -0
  82. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/milestones/__init__.py +0 -0
  83. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/milestones/client_test.py +0 -0
  84. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/mr_approvals/__init__.py +0 -0
  85. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/mr_approvals/client_test.py +0 -0
  86. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/py.typed +0 -0
  87. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/test_gql_client.py +0 -0
  88. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/tests_fx/test_mr.py +0 -0
  89. {fluidattacks_gitlab_sdk-3.0.2 → fluidattacks_gitlab_sdk-3.0.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fluidattacks_gitlab_sdk
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: gitlab SDK
5
5
  Author-email: Product Team <development@fluidattacks.com>
6
6
  Requires-Python: >=3.11
@@ -11,7 +11,7 @@ from ._logger import (
11
11
  set_logger,
12
12
  )
13
13
 
14
- __version__ = "3.0.2"
14
+ __version__ = "3.0.3"
15
15
 
16
16
  Unsafe.compute(set_logger(__name__, __version__))
17
17
  LOG = logging.getLogger(__name__)
@@ -55,8 +55,19 @@ def decode_user_obj(raw: JsonObj) -> ResultE[UserObj]:
55
55
  lambda user: (
56
56
  JsonUnfolder.require(raw, "name", DecodeUtils.to_str)
57
57
  .map(UserName)
58
- .map(
59
- lambda name: UserObj(user_id, user, name),
58
+ .bind(
59
+ lambda name: JsonUnfolder.optional(
60
+ raw,
61
+ "publicEmail",
62
+ DecodeUtils.to_opt_str,
63
+ ).map(
64
+ lambda email: UserObj(
65
+ user_id,
66
+ user,
67
+ name,
68
+ email.bind(lambda m: m),
69
+ ),
70
+ ),
60
71
  )
61
72
  ),
62
73
  )
@@ -135,6 +146,7 @@ def get_updated_by(
135
146
  id
136
147
  name
137
148
  username
149
+ publicEmail
138
150
  }
139
151
  }
140
152
  }
@@ -2,6 +2,8 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
4
 
5
+ from fa_purity import Maybe
6
+
5
7
  from fluidattacks_gitlab_sdk.ids import UserId
6
8
 
7
9
 
@@ -24,3 +26,4 @@ class UserObj:
24
26
  user_id: UserId
25
27
  user: User
26
28
  name: UserName
29
+ public_email: Maybe[str]
@@ -20,8 +20,19 @@ def decode_user_obj(raw: JsonObj) -> ResultE[UserObj]:
20
20
  lambda user: (
21
21
  JsonUnfolder.require(raw, "name", DecodeUtils.to_str)
22
22
  .map(UserName)
23
- .map(
24
- lambda name: UserObj(user_id, user, name),
23
+ .bind(
24
+ lambda name: JsonUnfolder.optional(
25
+ raw,
26
+ "public_email",
27
+ DecodeUtils.to_opt_str,
28
+ ).map(
29
+ lambda email: UserObj(
30
+ user_id,
31
+ user,
32
+ name,
33
+ email.bind(lambda m: m),
34
+ ),
35
+ ),
25
36
  )
26
37
  ),
27
38
  )
@@ -32,11 +32,17 @@ from fluidattacks_gitlab_sdk.users.core import User, UserName, UserObj
32
32
 
33
33
 
34
34
  def test_decode() -> None:
35
- author = UserObj(UserId(NaturalOperations.absolute(1)), User("ghost1"), UserName("Ghost User"))
35
+ author = UserObj(
36
+ UserId(NaturalOperations.absolute(1)),
37
+ User("ghost1"),
38
+ UserName("Ghost User"),
39
+ Maybe.some(""),
40
+ )
36
41
  assignee = UserObj(
37
42
  UserId(NaturalOperations.absolute(333)),
38
43
  User("the_user"),
39
44
  UserName("The User"),
45
+ Maybe.some(""),
40
46
  )
41
47
  closed_by = assignee
42
48
  issue_def = IssueDef("The title", "closed", IssueType.ISSUE, Maybe.some(""))
@@ -38,11 +38,13 @@ def test_decode() -> None:
38
38
  UserId(NaturalOperations.absolute(987654321)),
39
39
  User("the_author"),
40
40
  UserName("The Author"),
41
+ Maybe.empty(),
41
42
  )
42
43
  merger = UserObj(
43
44
  UserId(NaturalOperations.absolute(1234567)),
44
45
  User("the_merger"),
45
46
  UserName("The merger"),
47
+ Maybe.empty(),
46
48
  )
47
49
  project = ProjectId(NaturalOperations.absolute(123456789))
48
50
  expected = (
@@ -115,11 +117,13 @@ def test_decode_mrs_updated() -> None:
115
117
  UserId(NaturalOperations.absolute(987654321)),
116
118
  User("the_author"),
117
119
  UserName("The Author"),
120
+ Maybe.empty(),
118
121
  )
119
122
  merger = UserObj(
120
123
  UserId(NaturalOperations.absolute(1234567)),
121
124
  User("the_merger"),
122
125
  UserName("The merger"),
126
+ Maybe.empty(),
123
127
  )
124
128
  project = ProjectId(NaturalOperations.absolute(123456789))
125
129
  expected_mrs = (
@@ -1,6 +1,6 @@
1
1
  from pathlib import Path
2
2
 
3
- from fa_purity import FrozenList, Unsafe
3
+ from fa_purity import FrozenList, Maybe, Unsafe
4
4
  from fa_purity.json import JsonValueFactory, Unfolder
5
5
  from fluidattacks_etl_utils.natural import NaturalOperations
6
6
 
@@ -31,6 +31,7 @@ def test_decode() -> None:
31
31
  UserId(NaturalOperations.absolute(26904760)),
32
32
  User("useratfluid"),
33
33
  UserName("User Fluid"),
34
+ Maybe.some(""),
34
35
  ),
35
36
  ),
36
37
  Approver(
@@ -38,6 +39,7 @@ def test_decode() -> None:
38
39
  UserId(NaturalOperations.absolute(34547217)),
39
40
  User("project_20741933_bot_7328383692d798602683c341e690"),
40
41
  UserName("****"),
42
+ Maybe.empty(),
41
43
  ),
42
44
  ),
43
45
  )