meshtrade 0.0.7__py3-none-any.whl → 0.0.10__py3-none-any.whl

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.

Potentially problematic release.


This version of meshtrade might be problematic. Click here for more details.

Files changed (154) hide show
  1. buf/validate/validate_pb2.py +450 -0
  2. buf/validate/validate_pb2.pyi +627 -0
  3. meshtrade/common/__init__.py +28 -0
  4. meshtrade/common/config.py +30 -0
  5. meshtrade/common/grpc_client.py +202 -0
  6. meshtrade/compliance/client/v1/__init__.py +89 -0
  7. meshtrade/compliance/client/v1/client_pb2.py +2 -2
  8. meshtrade/compliance/client/v1/client_pb2_grpc.py +4 -0
  9. meshtrade/compliance/client/v1/company_pb2.py +2 -2
  10. meshtrade/compliance/client/v1/company_pb2_grpc.py +4 -0
  11. meshtrade/compliance/client/v1/company_representative_pb2.py +2 -2
  12. meshtrade/compliance/client/v1/company_representative_pb2_grpc.py +4 -0
  13. meshtrade/compliance/client/v1/company_representative_role_pb2.py +2 -2
  14. meshtrade/compliance/client/v1/company_representative_role_pb2_grpc.py +4 -0
  15. meshtrade/compliance/client/v1/fund_pb2.py +2 -2
  16. meshtrade/compliance/client/v1/fund_pb2_grpc.py +4 -0
  17. meshtrade/compliance/client/v1/identification_document_type_pb2.py +2 -2
  18. meshtrade/compliance/client/v1/identification_document_type_pb2_grpc.py +4 -0
  19. meshtrade/compliance/client/v1/industry_classification_pb2.py +2 -2
  20. meshtrade/compliance/client/v1/industry_classification_pb2_grpc.py +4 -0
  21. meshtrade/compliance/client/v1/natural_person_connection_type_pb2.py +2 -2
  22. meshtrade/compliance/client/v1/natural_person_connection_type_pb2_grpc.py +4 -0
  23. meshtrade/compliance/client/v1/natural_person_pb2.py +2 -2
  24. meshtrade/compliance/client/v1/natural_person_pb2_grpc.py +4 -0
  25. meshtrade/compliance/client/v1/pep_status_pb2.py +2 -2
  26. meshtrade/compliance/client/v1/pep_status_pb2_grpc.py +4 -0
  27. meshtrade/compliance/client/v1/service_meshpy.py +186 -0
  28. meshtrade/compliance/client/v1/service_options_meshpy.py +65 -0
  29. meshtrade/compliance/client/v1/service_pb2.py +20 -10
  30. meshtrade/compliance/client/v1/service_pb2.pyi +8 -0
  31. meshtrade/compliance/client/v1/service_pb2_grpc.py +192 -0
  32. meshtrade/compliance/client/v1/source_of_income_and_wealth_pb2.py +2 -2
  33. meshtrade/compliance/client/v1/source_of_income_and_wealth_pb2_grpc.py +4 -0
  34. meshtrade/compliance/client/v1/tax_residency_pb2.py +2 -2
  35. meshtrade/compliance/client/v1/tax_residency_pb2_grpc.py +4 -0
  36. meshtrade/compliance/client/v1/trust_pb2.py +2 -2
  37. meshtrade/compliance/client/v1/trust_pb2_grpc.py +4 -0
  38. meshtrade/compliance/client/v1/verification_status_pb2.py +2 -2
  39. meshtrade/compliance/client/v1/verification_status_pb2_grpc.py +4 -0
  40. meshtrade/iam/api_user/v1/__init__.py +99 -0
  41. meshtrade/iam/api_user/v1/api_credentials.py +156 -0
  42. meshtrade/iam/api_user/v1/api_credentials_pb2.py +42 -0
  43. meshtrade/iam/api_user/v1/api_credentials_pb2.pyi +14 -0
  44. meshtrade/iam/api_user/v1/api_credentials_pb2_grpc.py +4 -0
  45. meshtrade/iam/api_user/v1/api_user_pb2.py +48 -0
  46. meshtrade/iam/api_user/v1/api_user_pb2.pyi +49 -0
  47. meshtrade/iam/api_user/v1/api_user_pb2_grpc.py +4 -0
  48. meshtrade/iam/api_user/v1/service.py +58 -0
  49. meshtrade/iam/api_user/v1/service_meshpy.py +255 -0
  50. meshtrade/iam/api_user/v1/service_options_meshpy.py +65 -0
  51. meshtrade/iam/api_user/v1/service_pb2.py +77 -0
  52. meshtrade/iam/api_user/v1/service_pb2.pyi +63 -0
  53. meshtrade/iam/api_user/v1/service_pb2_grpc.py +458 -0
  54. meshtrade/iam/group/v1/__init__.py +63 -0
  55. meshtrade/iam/group/v1/group_pb2.py +2 -2
  56. meshtrade/iam/group/v1/group_pb2_grpc.py +4 -0
  57. meshtrade/iam/group/v1/service_meshpy.py +187 -0
  58. meshtrade/iam/group/v1/service_options_meshpy.py +65 -0
  59. meshtrade/iam/group/v1/service_pb2.py +22 -6
  60. meshtrade/iam/group/v1/service_pb2.pyi +29 -1
  61. meshtrade/iam/group/v1/service_pb2_grpc.py +170 -0
  62. meshtrade/iam/role/v1/__init__.py +44 -0
  63. meshtrade/iam/role/v1/role.py +23 -0
  64. meshtrade/iam/role/v1/role_pb2.py +40 -0
  65. meshtrade/{option/v1/auth_pb2.pyi → iam/role/v1/role_pb2.pyi} +16 -0
  66. meshtrade/iam/role/v1/role_pb2_grpc.py +4 -0
  67. meshtrade/iam/user/v1/__init__.py +53 -0
  68. meshtrade/iam/user/v1/service_meshpy.py +151 -0
  69. meshtrade/iam/user/v1/service_options_meshpy.py +65 -0
  70. meshtrade/iam/user/v1/service_pb2.py +51 -0
  71. meshtrade/iam/user/v1/service_pb2.pyi +19 -0
  72. meshtrade/iam/user/v1/service_pb2_grpc.py +82 -0
  73. meshtrade/{issuance_hub/instrument/v1/instrument_pb2.py → iam/user/v1/user_pb2.py} +7 -7
  74. meshtrade/iam/user/v1/user_pb2.pyi +15 -0
  75. meshtrade/iam/user/v1/user_pb2_grpc.py +4 -0
  76. meshtrade/ledger/transaction/v1/__init__.py +41 -0
  77. meshtrade/ledger/transaction/v1/transaction_action_pb2.py +2 -2
  78. meshtrade/ledger/transaction/v1/transaction_action_pb2_grpc.py +4 -0
  79. meshtrade/ledger/transaction/v1/transaction_state_pb2.py +2 -2
  80. meshtrade/ledger/transaction/v1/transaction_state_pb2_grpc.py +4 -0
  81. meshtrade/option/v1/__init__.py +39 -0
  82. meshtrade/option/v1/{service_type_pb2.py → method_type_pb2.py} +7 -7
  83. meshtrade/option/v1/method_type_pb2.pyi +17 -0
  84. meshtrade/option/v1/method_type_pb2_grpc.py +4 -0
  85. meshtrade/trading/limit_order/v1/__init__.py +53 -0
  86. meshtrade/trading/limit_order/v1/limit_order_pb2.py +2 -2
  87. meshtrade/trading/limit_order/v1/limit_order_pb2_grpc.py +4 -0
  88. meshtrade/trading/limit_order/v1/service_meshpy.py +151 -0
  89. meshtrade/trading/limit_order/v1/service_options_meshpy.py +65 -0
  90. meshtrade/trading/limit_order/v1/service_pb2.py +10 -6
  91. meshtrade/trading/limit_order/v1/service_pb2.pyi +2 -0
  92. meshtrade/trading/limit_order/v1/service_pb2_grpc.py +78 -0
  93. meshtrade/trading/market_order/v1/__init__.py +53 -0
  94. meshtrade/trading/{direct_order/v1/direct_order_pb2.py → market_order/v1/market_order_pb2.py} +7 -7
  95. meshtrade/{issuance_hub/instrument/v1/instrument_pb2.pyi → trading/market_order/v1/market_order_pb2.pyi} +1 -1
  96. meshtrade/trading/market_order/v1/market_order_pb2_grpc.py +4 -0
  97. meshtrade/trading/market_order/v1/service_meshpy.py +151 -0
  98. meshtrade/trading/market_order/v1/service_options_meshpy.py +65 -0
  99. meshtrade/trading/market_order/v1/service_pb2.py +44 -0
  100. meshtrade/trading/{spot → market_order}/v1/service_pb2.pyi +4 -2
  101. meshtrade/trading/market_order/v1/service_pb2_grpc.py +78 -0
  102. meshtrade/type/v1/__init__.py +120 -4
  103. meshtrade/type/v1/address_pb2.py +2 -2
  104. meshtrade/type/v1/address_pb2_grpc.py +4 -0
  105. meshtrade/type/v1/amount.py +2 -8
  106. meshtrade/type/v1/amount_pb2.py +2 -2
  107. meshtrade/type/v1/amount_pb2_grpc.py +4 -0
  108. meshtrade/type/v1/contact_details_pb2.py +2 -2
  109. meshtrade/type/v1/contact_details_pb2_grpc.py +4 -0
  110. meshtrade/type/v1/date.py +373 -0
  111. meshtrade/{trading/spot/v1/spot_pb2.py → type/v1/date_pb2.py} +7 -7
  112. meshtrade/type/v1/date_pb2.pyi +15 -0
  113. meshtrade/type/v1/date_pb2_grpc.py +4 -0
  114. meshtrade/type/v1/decimal_built_in_conversions.py +1 -1
  115. meshtrade/type/v1/decimal_pb2.py +2 -2
  116. meshtrade/type/v1/decimal_pb2_grpc.py +4 -0
  117. meshtrade/type/v1/ledger.py +2 -3
  118. meshtrade/type/v1/ledger_pb2.py +2 -2
  119. meshtrade/type/v1/ledger_pb2_grpc.py +4 -0
  120. meshtrade/type/v1/time_of_day.py +265 -0
  121. meshtrade/type/v1/time_of_day_pb2.py +37 -0
  122. meshtrade/type/v1/time_of_day_pb2.pyi +17 -0
  123. meshtrade/type/v1/time_of_day_pb2_grpc.py +4 -0
  124. meshtrade/type/v1/token_pb2.py +2 -2
  125. meshtrade/type/v1/token_pb2_grpc.py +4 -0
  126. meshtrade/wallet/account/v1/__init__.py +65 -0
  127. meshtrade/wallet/account/v1/account_pb2.py +2 -2
  128. meshtrade/wallet/account/v1/account_pb2_grpc.py +4 -0
  129. meshtrade/wallet/account/v1/service_meshpy.py +204 -0
  130. meshtrade/wallet/account/v1/service_options_meshpy.py +65 -0
  131. meshtrade/wallet/account/v1/service_pb2.py +18 -27
  132. meshtrade/wallet/account/v1/service_pb2.pyi +2 -3
  133. meshtrade/wallet/account/v1/service_pb2_grpc.py +222 -0
  134. meshtrade-0.0.10.dist-info/METADATA +95 -0
  135. meshtrade-0.0.10.dist-info/RECORD +173 -0
  136. {meshtrade-0.0.7.dist-info → meshtrade-0.0.10.dist-info}/top_level.txt +1 -0
  137. meshtrade/issuance_hub/instrument/v1/service_pb2.py +0 -49
  138. meshtrade/issuance_hub/instrument/v1/service_pb2.pyi +0 -46
  139. meshtrade/option/v1/auth_pb2.py +0 -40
  140. meshtrade/option/v1/service_type_pb2.pyi +0 -17
  141. meshtrade/trading/direct_order/v1/__init__.py +0 -0
  142. meshtrade/trading/direct_order/v1/direct_order_pb2.pyi +0 -11
  143. meshtrade/trading/direct_order/v1/service_pb2.py +0 -40
  144. meshtrade/trading/direct_order/v1/service_pb2.pyi +0 -12
  145. meshtrade/trading/spot/__init__.py +0 -0
  146. meshtrade/trading/spot/v1/__init__.py +0 -0
  147. meshtrade/trading/spot/v1/service_pb2.py +0 -40
  148. meshtrade/trading/spot/v1/spot_pb2.pyi +0 -11
  149. meshtrade-0.0.7.dist-info/METADATA +0 -35
  150. meshtrade-0.0.7.dist-info/RECORD +0 -102
  151. meshtrade-0.0.7.dist-info/licenses/LICENSE +0 -10
  152. /meshtrade/{iam/role → ledger}/__init__.py +0 -0
  153. /meshtrade/{trading/direct_order → ledger/transaction}/__init__.py +0 -0
  154. {meshtrade-0.0.7.dist-info → meshtrade-0.0.10.dist-info}/WHEEL +0 -0
@@ -0,0 +1,187 @@
1
+ # Code generated by protoc-gen-meshpy. DO NOT EDIT.
2
+ # source: meshtrade/iam/group/v1/service.proto
3
+
4
+ """
5
+ GroupService gRPC service wrapper with authentication, timeouts, and resource management.
6
+
7
+ This module provides a high-level gRPC service for the GroupService service that combines
8
+ the service interface with resource management capabilities, providing authentication,
9
+ timeouts, and proper connection handling.
10
+ """
11
+
12
+ from datetime import timedelta
13
+ from typing import Optional
14
+
15
+ from meshtrade.common import BaseGRPCClient
16
+ from meshtrade.iam.api_user.v1.api_credentials import find_credentials
17
+
18
+ from .group_pb2 import Group
19
+ from .service_options_meshpy import ServiceOptions
20
+ from .service_pb2 import (
21
+ GetGroupRequest,
22
+ ListGroupsRequest,
23
+ ListGroupsResponse,
24
+ SearchGroupsRequest,
25
+ SearchGroupsResponse,
26
+ )
27
+ from .service_pb2_grpc import GroupServiceStub
28
+
29
+
30
+ def _create_groupservice_stub(channel):
31
+ """Factory function to create GroupServiceStub from gRPC channel."""
32
+ return GroupServiceStub(channel)
33
+
34
+
35
+ class GroupService(BaseGRPCClient):
36
+ """GroupService gRPC service with authentication, timeouts, and resource management.
37
+
38
+ This service provides a complete implementation of the GroupService with proper authentication, timeout handling, and automatic resource cleanup.
39
+
40
+ Full Service documentation: https://meshtrade.github.io/api/docs/api-reference/iam/group/v1
41
+
42
+ Basic service usage with default SDK Configuration:
43
+ ```python
44
+ service = GroupService()
45
+
46
+ with service: # `with` ensures proper clean up of underlying connection after use
47
+ response = service.get_api_user(request)
48
+ ```
49
+
50
+ With default configuration API credentials are searched for using the standard discovery hierarchy:
51
+
52
+ 1. MESH_API_CREDENTIALS environment variable
53
+
54
+ 2. Default credential file location:
55
+
56
+ - Linux: `$XDG_CONFIG_HOME/mesh/credentials.json` or fallback to `$HOME/.config/mesh/credentials.json`
57
+ - macOS: `$HOME/Library/Application Support/mesh/credentials.json`
58
+ - Windows: `C:\\Users\\<user>\\AppData\\Roaming\\mesh\\credentials.json`
59
+
60
+ For more information on authentication: https://meshtrade.github.io/api/docs/architecture/authentication
61
+
62
+ The service may also be configured with custom options:
63
+ ```python
64
+ from .service_options_meshpy import ServiceOptions
65
+ from datetime import timedelta
66
+
67
+ options = ServiceOptions(
68
+ url="api.staging.example.com",
69
+ port=443,
70
+ api_key="your-api-key",
71
+ group="groups/your-group-id",
72
+ timeout=timedelta(seconds=60)
73
+ )
74
+
75
+ service = GroupService(options)
76
+
77
+ with service: # `with` ensures proper clean up of underlying connection after use
78
+ response = service.get_api_user(request)
79
+ ```
80
+
81
+ For more information on service configuration: https://meshtrade.github.io/api/docs/architecture/sdk-configuration
82
+ """
83
+
84
+ def __init__(self, options: Optional[ServiceOptions] = None):
85
+ """Construct and initialize the GroupService service.
86
+
87
+ Full Service documentation: https://meshtrade.github.io/api/docs/api-reference/iam/group/v1
88
+
89
+ Args:
90
+ options: Optional ServiceOptions for configuring the service.
91
+ If None, service is constructed with default configuration.
92
+ With default configuration API credentials are searched for using the standard discovery hierarchy:
93
+
94
+ 1. MESH_API_CREDENTIALS environment variable
95
+
96
+ 2. Default credential file location:
97
+
98
+ - Linux: `$XDG_CONFIG_HOME/mesh/credentials.json` or fallback to `$HOME/.config/mesh/credentials.json`
99
+ - macOS: `$HOME/Library/Application Support/mesh/credentials.json`
100
+ - Windows: `C:\\Users\\<user>\\AppData\\Roaming\\mesh\\credentials.json`
101
+
102
+ For more information on authentication: https://meshtrade.github.io/api/docs/architecture/authentication
103
+
104
+ For more information on service configuration: https://meshtrade.github.io/api/docs/architecture/sdk-configuration
105
+
106
+ Example:
107
+ ```python
108
+ # construct with default configuration
109
+ service = GroupService()
110
+
111
+ # construct with custom configuration
112
+ options = ServiceOptions(
113
+ url="api.example.com",
114
+ api_key="your-key",
115
+ group="groups/your-group"
116
+ )
117
+ service = GroupService(options)
118
+ ```
119
+ """
120
+ if options is None:
121
+ options = ServiceOptions()
122
+
123
+ # Initialize the base client with all common functionality
124
+ super().__init__(
125
+ service_name="GroupService",
126
+ stub_factory=_create_groupservice_stub,
127
+ find_credentials_func=find_credentials,
128
+ url=options.url,
129
+ port=options.port,
130
+ api_key=options.api_key,
131
+ group=options.group,
132
+ timeout=options.timeout,
133
+ tls=options.tls,
134
+ )
135
+
136
+ def get_group(self, request: GetGroupRequest, timeout: Optional[timedelta] = None) -> Group:
137
+ """GetGroup method.
138
+
139
+ Args:
140
+ request: The GetGroup request message
141
+ timeout: Optional timeout override for this call
142
+
143
+ Returns:
144
+ The GetGroup response message
145
+
146
+ Raises:
147
+ grpc.RpcError: If the gRPC call fails
148
+ ValueError: If authentication credentials are missing
149
+ """
150
+ return self._execute_method("GetGroup", request, timeout)
151
+
152
+ def list_groups(self, request: ListGroupsRequest, timeout: Optional[timedelta] = None) -> ListGroupsResponse:
153
+ """ListGroups method.
154
+
155
+ Args:
156
+ request: The ListGroups request message
157
+ timeout: Optional timeout override for this call
158
+
159
+ Returns:
160
+ The ListGroups response message
161
+
162
+ Raises:
163
+ grpc.RpcError: If the gRPC call fails
164
+ ValueError: If authentication credentials are missing
165
+ """
166
+ return self._execute_method("ListGroups", request, timeout)
167
+
168
+ def search_groups(self, request: SearchGroupsRequest, timeout: Optional[timedelta] = None) -> SearchGroupsResponse:
169
+ """SearchGroups method.
170
+
171
+ Args:
172
+ request: The SearchGroups request message
173
+ timeout: Optional timeout override for this call
174
+
175
+ Returns:
176
+ The SearchGroups response message
177
+
178
+ Raises:
179
+ grpc.RpcError: If the gRPC call fails
180
+ ValueError: If authentication credentials are missing
181
+ """
182
+ return self._execute_method("SearchGroups", request, timeout)
183
+
184
+
185
+ # Create aliases to match expected exports
186
+ GroupServiceGRPCClient = GroupService
187
+ GroupServiceGRPCClientInterface = GroupService
@@ -0,0 +1,65 @@
1
+ # Code generated by protoc-gen-meshpy. DO NOT EDIT.
2
+ # source: meshtrade/iam/group/v1/service.proto
3
+
4
+ """
5
+ Configuration options for GroupService gRPC service.
6
+ This module provides a clean, extensible way to configure the service with optional
7
+ parameters while maintaining backward compatibility and readability.
8
+ """
9
+
10
+ from datetime import timedelta
11
+
12
+
13
+ class ServiceOptions:
14
+ """Configuration options for GroupService gRPC service.
15
+
16
+ This class provides a clean, extensible way to configure the service with optional
17
+ parameters while maintaining backward compatibility and readability.
18
+ """
19
+
20
+ def __init__(
21
+ self,
22
+ tls: bool = True,
23
+ url: str | None = None,
24
+ port: int | None = None,
25
+ api_key: str | None = None,
26
+ group: str | None = None,
27
+ timeout: timedelta = timedelta(seconds=30),
28
+ ):
29
+ """Initialize service options.
30
+
31
+ Args:
32
+ tls: Whether to use TLS encryption for the gRPC connection.
33
+ When True, establishes a secure connection using TLS.
34
+ When False, uses an insecure connection.
35
+ Default: True (secure connection)
36
+
37
+ url: The server hostname or IP address (e.g., "api.example.com", "localhost").
38
+ Default: Uses DEFAULT_GRPC_URL from common module
39
+
40
+ port: The server port number (e.g., 443 for HTTPS, 8080 for development).
41
+ Default: Uses DEFAULT_GRPC_PORT from common module
42
+
43
+ api_key: The API key string (without "Bearer " prefix) for authentication.
44
+ The API key will be sent as a Bearer token in the Authorization header.
45
+ This is the primary authentication method for service-to-service communication.
46
+
47
+ group: The group resource name in format groups/{group_id} required for all API requests.
48
+ The group determines the authorization context for operations
49
+ and is sent as an "x-group" header with every request.
50
+
51
+ timeout: The default timeout for all gRPC method calls.
52
+ This timeout applies to individual method calls and helps prevent hanging requests.
53
+ If a request takes longer than the specified timeout, it will be cancelled.
54
+ Default: 30 seconds
55
+ """
56
+ self.tls = tls
57
+ self.url = url
58
+ self.port = port
59
+ self.api_key = api_key
60
+ self.group = group
61
+ self.timeout = timeout
62
+
63
+
64
+ # Create alias to match expected exports
65
+ ClientOptions = ServiceOptions
@@ -23,18 +23,34 @@ _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
25
  from meshtrade.iam.group.v1 import group_pb2 as meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2
26
+ from meshtrade.iam.role.v1 import role_pb2 as meshtrade_dot_iam_dot_role_dot_v1_dot_role__pb2
27
+ from meshtrade.option.v1 import method_type_pb2 as meshtrade_dot_option_dot_v1_dot_method__type__pb2
26
28
 
27
29
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtrade/iam/group/v1/service.proto\x12\x16meshtrade.iam.group.v1\x1a\"meshtrade/iam/group/v1/group.proto\"\x11\n\x0fGetGroupRequest2b\n\x0cGroupService\x12R\n\x08GetGroup\x12\'.meshtrade.iam.group.v1.GetGroupRequest\x1a\x1d.meshtrade.iam.group.v1.GroupB2Z0github.com/meshtrade/api/go/iam/group/v1;groupv1b\x06proto3')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtrade/iam/group/v1/service.proto\x12\x16meshtrade.iam.group.v1\x1a\"meshtrade/iam/group/v1/group.proto\x1a meshtrade/iam/role/v1/role.proto\x1a%meshtrade/option/v1/method_type.proto\"%\n\x0fGetGroupRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\x13\n\x11ListGroupsRequest\"K\n\x12ListGroupsResponse\x12\x35\n\x06groups\x18\x01 \x03(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupR\x06groups\")\n\x13SearchGroupsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"M\n\x14SearchGroupsResponse\x12\x35\n\x06groups\x18\x01 \x03(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupR\x06groups2\xdc\x02\n\x0cGroupService\x12`\n\x08GetGroup\x12\'.meshtrade.iam.group.v1.GetGroupRequest\x1a\x1d.meshtrade.iam.group.v1.Group\"\x0c\xa0\xb5\x18\x01\xaa\xb5\x18\x04\n\x02\x05\x06\x12q\n\nListGroups\x12).meshtrade.iam.group.v1.ListGroupsRequest\x1a*.meshtrade.iam.group.v1.ListGroupsResponse\"\x0c\xa0\xb5\x18\x01\xaa\xb5\x18\x04\n\x02\x05\x06\x12w\n\x0cSearchGroups\x12+.meshtrade.iam.group.v1.SearchGroupsRequest\x1a,.meshtrade.iam.group.v1.SearchGroupsResponse\"\x0c\xa0\xb5\x18\x01\xaa\xb5\x18\x04\n\x02\x05\x06\x42Q\n\x1d\x63o.meshtrade.api.iam.group.v1Z0github.com/meshtrade/api/go/iam/group/v1;groupv1b\x06proto3')
29
31
 
30
32
  _globals = globals()
31
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32
34
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtrade.iam.group.v1.service_pb2', _globals)
33
35
  if not _descriptor._USE_C_DESCRIPTORS:
34
36
  _globals['DESCRIPTOR']._loaded_options = None
35
- _globals['DESCRIPTOR']._serialized_options = b'Z0github.com/meshtrade/api/go/iam/group/v1;groupv1'
36
- _globals['_GETGROUPREQUEST']._serialized_start=100
37
- _globals['_GETGROUPREQUEST']._serialized_end=117
38
- _globals['_GROUPSERVICE']._serialized_start=119
39
- _globals['_GROUPSERVICE']._serialized_end=217
37
+ _globals['DESCRIPTOR']._serialized_options = b'\n\035co.meshtrade.api.iam.group.v1Z0github.com/meshtrade/api/go/iam/group/v1;groupv1'
38
+ _globals['_GROUPSERVICE'].methods_by_name['GetGroup']._loaded_options = None
39
+ _globals['_GROUPSERVICE'].methods_by_name['GetGroup']._serialized_options = b'\240\265\030\001\252\265\030\004\n\002\005\006'
40
+ _globals['_GROUPSERVICE'].methods_by_name['ListGroups']._loaded_options = None
41
+ _globals['_GROUPSERVICE'].methods_by_name['ListGroups']._serialized_options = b'\240\265\030\001\252\265\030\004\n\002\005\006'
42
+ _globals['_GROUPSERVICE'].methods_by_name['SearchGroups']._loaded_options = None
43
+ _globals['_GROUPSERVICE'].methods_by_name['SearchGroups']._serialized_options = b'\240\265\030\001\252\265\030\004\n\002\005\006'
44
+ _globals['_GETGROUPREQUEST']._serialized_start=173
45
+ _globals['_GETGROUPREQUEST']._serialized_end=210
46
+ _globals['_LISTGROUPSREQUEST']._serialized_start=212
47
+ _globals['_LISTGROUPSREQUEST']._serialized_end=231
48
+ _globals['_LISTGROUPSRESPONSE']._serialized_start=233
49
+ _globals['_LISTGROUPSRESPONSE']._serialized_end=308
50
+ _globals['_SEARCHGROUPSREQUEST']._serialized_start=310
51
+ _globals['_SEARCHGROUPSREQUEST']._serialized_end=351
52
+ _globals['_SEARCHGROUPSRESPONSE']._serialized_start=353
53
+ _globals['_SEARCHGROUPSRESPONSE']._serialized_end=430
54
+ _globals['_GROUPSERVICE']._serialized_start=433
55
+ _globals['_GROUPSERVICE']._serialized_end=781
40
56
  # @@protoc_insertion_point(module_scope)
@@ -1,10 +1,38 @@
1
1
  from meshtrade.iam.group.v1 import group_pb2 as _group_pb2
2
+ from meshtrade.iam.role.v1 import role_pb2 as _role_pb2
3
+ from meshtrade.option.v1 import method_type_pb2 as _method_type_pb2
4
+ from google.protobuf.internal import containers as _containers
2
5
  from google.protobuf import descriptor as _descriptor
3
6
  from google.protobuf import message as _message
4
- from typing import ClassVar as _ClassVar
7
+ from collections.abc import Iterable as _Iterable, Mapping as _Mapping
8
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
5
9
 
6
10
  DESCRIPTOR: _descriptor.FileDescriptor
7
11
 
8
12
  class GetGroupRequest(_message.Message):
13
+ __slots__ = ("name",)
14
+ NAME_FIELD_NUMBER: _ClassVar[int]
15
+ name: str
16
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
17
+
18
+ class ListGroupsRequest(_message.Message):
9
19
  __slots__ = ()
10
20
  def __init__(self) -> None: ...
21
+
22
+ class ListGroupsResponse(_message.Message):
23
+ __slots__ = ("groups",)
24
+ GROUPS_FIELD_NUMBER: _ClassVar[int]
25
+ groups: _containers.RepeatedCompositeFieldContainer[_group_pb2.Group]
26
+ def __init__(self, groups: _Optional[_Iterable[_Union[_group_pb2.Group, _Mapping]]] = ...) -> None: ...
27
+
28
+ class SearchGroupsRequest(_message.Message):
29
+ __slots__ = ("name",)
30
+ NAME_FIELD_NUMBER: _ClassVar[int]
31
+ name: str
32
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
33
+
34
+ class SearchGroupsResponse(_message.Message):
35
+ __slots__ = ("groups",)
36
+ GROUPS_FIELD_NUMBER: _ClassVar[int]
37
+ groups: _containers.RepeatedCompositeFieldContainer[_group_pb2.Group]
38
+ def __init__(self, groups: _Optional[_Iterable[_Union[_group_pb2.Group, _Mapping]]] = ...) -> None: ...
@@ -0,0 +1,170 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
5
+ from meshtrade.iam.group.v1 import group_pb2 as meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2
6
+ from meshtrade.iam.group.v1 import service_pb2 as meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2
7
+
8
+
9
+ class GroupServiceStub(object):
10
+ """Missing associated documentation comment in .proto file."""
11
+
12
+ def __init__(self, channel):
13
+ """Constructor.
14
+
15
+ Args:
16
+ channel: A grpc.Channel.
17
+ """
18
+ self.GetGroup = channel.unary_unary(
19
+ '/meshtrade.iam.group.v1.GroupService/GetGroup',
20
+ request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.SerializeToString,
21
+ response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
22
+ _registered_method=True)
23
+ self.ListGroups = channel.unary_unary(
24
+ '/meshtrade.iam.group.v1.GroupService/ListGroups',
25
+ request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.ListGroupsRequest.SerializeToString,
26
+ response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.ListGroupsResponse.FromString,
27
+ _registered_method=True)
28
+ self.SearchGroups = channel.unary_unary(
29
+ '/meshtrade.iam.group.v1.GroupService/SearchGroups',
30
+ request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsRequest.SerializeToString,
31
+ response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsResponse.FromString,
32
+ _registered_method=True)
33
+
34
+
35
+ class GroupServiceServicer(object):
36
+ """Missing associated documentation comment in .proto file."""
37
+
38
+ def GetGroup(self, request, context):
39
+ """
40
+ Get Specific Group.
41
+ """
42
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
43
+ context.set_details('Method not implemented!')
44
+ raise NotImplementedError('Method not implemented!')
45
+
46
+ def ListGroups(self, request, context):
47
+ """
48
+ Get all groups
49
+ """
50
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
51
+ context.set_details('Method not implemented!')
52
+ raise NotImplementedError('Method not implemented!')
53
+
54
+ def SearchGroups(self, request, context):
55
+ """
56
+ Get all groups with search filtering options.
57
+ """
58
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
59
+ context.set_details('Method not implemented!')
60
+ raise NotImplementedError('Method not implemented!')
61
+
62
+
63
+ def add_GroupServiceServicer_to_server(servicer, server):
64
+ rpc_method_handlers = {
65
+ 'GetGroup': grpc.unary_unary_rpc_method_handler(
66
+ servicer.GetGroup,
67
+ request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.FromString,
68
+ response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.SerializeToString,
69
+ ),
70
+ 'ListGroups': grpc.unary_unary_rpc_method_handler(
71
+ servicer.ListGroups,
72
+ request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.ListGroupsRequest.FromString,
73
+ response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.ListGroupsResponse.SerializeToString,
74
+ ),
75
+ 'SearchGroups': grpc.unary_unary_rpc_method_handler(
76
+ servicer.SearchGroups,
77
+ request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsRequest.FromString,
78
+ response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsResponse.SerializeToString,
79
+ ),
80
+ }
81
+ generic_handler = grpc.method_handlers_generic_handler(
82
+ 'meshtrade.iam.group.v1.GroupService', rpc_method_handlers)
83
+ server.add_generic_rpc_handlers((generic_handler,))
84
+ server.add_registered_method_handlers('meshtrade.iam.group.v1.GroupService', rpc_method_handlers)
85
+
86
+
87
+ # This class is part of an EXPERIMENTAL API.
88
+ class GroupService(object):
89
+ """Missing associated documentation comment in .proto file."""
90
+
91
+ @staticmethod
92
+ def GetGroup(request,
93
+ target,
94
+ options=(),
95
+ channel_credentials=None,
96
+ call_credentials=None,
97
+ insecure=False,
98
+ compression=None,
99
+ wait_for_ready=None,
100
+ timeout=None,
101
+ metadata=None):
102
+ return grpc.experimental.unary_unary(
103
+ request,
104
+ target,
105
+ '/meshtrade.iam.group.v1.GroupService/GetGroup',
106
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.SerializeToString,
107
+ meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
108
+ options,
109
+ channel_credentials,
110
+ insecure,
111
+ call_credentials,
112
+ compression,
113
+ wait_for_ready,
114
+ timeout,
115
+ metadata,
116
+ _registered_method=True)
117
+
118
+ @staticmethod
119
+ def ListGroups(request,
120
+ target,
121
+ options=(),
122
+ channel_credentials=None,
123
+ call_credentials=None,
124
+ insecure=False,
125
+ compression=None,
126
+ wait_for_ready=None,
127
+ timeout=None,
128
+ metadata=None):
129
+ return grpc.experimental.unary_unary(
130
+ request,
131
+ target,
132
+ '/meshtrade.iam.group.v1.GroupService/ListGroups',
133
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.ListGroupsRequest.SerializeToString,
134
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.ListGroupsResponse.FromString,
135
+ options,
136
+ channel_credentials,
137
+ insecure,
138
+ call_credentials,
139
+ compression,
140
+ wait_for_ready,
141
+ timeout,
142
+ metadata,
143
+ _registered_method=True)
144
+
145
+ @staticmethod
146
+ def SearchGroups(request,
147
+ target,
148
+ options=(),
149
+ channel_credentials=None,
150
+ call_credentials=None,
151
+ insecure=False,
152
+ compression=None,
153
+ wait_for_ready=None,
154
+ timeout=None,
155
+ metadata=None):
156
+ return grpc.experimental.unary_unary(
157
+ request,
158
+ target,
159
+ '/meshtrade.iam.group.v1.GroupService/SearchGroups',
160
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsRequest.SerializeToString,
161
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsResponse.FromString,
162
+ options,
163
+ channel_credentials,
164
+ insecure,
165
+ call_credentials,
166
+ compression,
167
+ wait_for_ready,
168
+ timeout,
169
+ metadata,
170
+ _registered_method=True)
@@ -0,0 +1,44 @@
1
+ """Role v1 package."""
2
+
3
+ # ===================================================================
4
+ # AUTO-GENERATED SECTION - ONLY EDIT BELOW THE CLOSING COMMENT BLOCK
5
+ # ===================================================================
6
+ # This section is automatically managed by protoc-gen-meshpy.
7
+ #
8
+ # DO NOT EDIT ANYTHING IN THIS SECTION MANUALLY!
9
+ # Your changes will be overwritten during code generation.
10
+ #
11
+ # To add custom imports and exports, scroll down to the
12
+ # "MANUAL SECTION" indicated below.
13
+ # ===================================================================
14
+
15
+ # Generated protobuf imports
16
+ from .role_pb2 import Role, RoleList
17
+
18
+ # ===================================================================
19
+ # END OF AUTO-GENERATED SECTION
20
+ # ===================================================================
21
+ #
22
+ # MANUAL SECTION - ADD YOUR CUSTOM IMPORTS AND EXPORTS BELOW
23
+ #
24
+ # You can safely add your own imports, functions, classes, and exports
25
+ # in this section. They will be preserved across code generation.
26
+ #
27
+ # Example:
28
+ # from my_custom_module import my_function
29
+ #
30
+ # ===================================================================
31
+
32
+ from .role import full_resource_name_from_group_name
33
+
34
+ # ===================================================================
35
+ # MODULE EXPORTS
36
+ # ===================================================================
37
+ # Combined auto-generated and manual exports
38
+ __all__ = [
39
+ # Generated exports
40
+ "Role",
41
+ "RoleList",
42
+ # Manual exports
43
+ "full_resource_name_from_group_name",
44
+ ]
@@ -0,0 +1,23 @@
1
+ """Role helper functions for IAM role management."""
2
+
3
+ from .role_pb2 import Role
4
+
5
+
6
+ def full_resource_name_from_group_name(role: Role, group_name: str) -> str:
7
+ """
8
+ Create a full resource name for a role within a specific group.
9
+
10
+ This function provides the Python equivalent of Go's Role.FullResourceNameFromGroupName() method.
11
+
12
+ Args:
13
+ role: The Role enum value (e.g., Role.ROLE_IAM_ADMIN)
14
+ group_name: The group name (e.g., "groups/01DD32GZ7R0000000000000001")
15
+
16
+ Returns:
17
+ The full resource name string (e.g., "groups/01DD32GZ7R0000000000000001/5")
18
+
19
+ Example:
20
+ >>> full_resource_name_from_group_name(Role.ROLE_IAM_ADMIN, "groups/01DD32GZ7R0000000000000001")
21
+ "groups/01DD32GZ7R0000000000000001/5"
22
+ """
23
+ return f"{group_name}/{role}"
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: meshtrade/iam/role/v1/role.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'meshtrade/iam/role/v1/role.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
26
+
27
+
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/role/v1/role.proto\x12\x15meshtrade.iam.role.v1\x1a google/protobuf/descriptor.proto\"=\n\x08RoleList\x12\x31\n\x05roles\x18\x01 \x03(\x0e\x32\x1b.meshtrade.iam.role.v1.RoleR\x05roles*\x97\x02\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11ROLE_WALLET_ADMIN\x10\x01\x12\x16\n\x12ROLE_WALLET_VIEWER\x10\x02\x12\x19\n\x15ROLE_COMPLIANCE_ADMIN\x10\x03\x12\x1a\n\x16ROLE_COMPLIANCE_VIEWER\x10\x04\x12\x12\n\x0eROLE_IAM_ADMIN\x10\x05\x12\x13\n\x0fROLE_IAM_VIEWER\x10\x06\x12\x1b\n\x17ROLE_ISSUANCE_HUB_ADMIN\x10\x07\x12\x1c\n\x18ROLE_ISSUANCE_HUB_VIEWER\x10\x08\x12\x16\n\x12ROLE_TRADING_ADMIN\x10\t\x12\x17\n\x13ROLE_TRADING_VIEWER\x10\n:f\n\x0estandard_roles\x12\x1c.google.protobuf.FileOptions\x18\xd3\x86\x03 \x01(\x0b\x32\x1f.meshtrade.iam.role.v1.RoleListR\rstandardRoles:W\n\x05roles\x12\x1e.google.protobuf.MethodOptions\x18\xd5\x86\x03 \x01(\x0b\x32\x1f.meshtrade.iam.role.v1.RoleListR\x05rolesBN\n\x1c\x63o.meshtrade.api.iam.role.v1Z.github.com/meshtrade/api/go/iam/role/v1;rolev1b\x06proto3')
29
+
30
+ _globals = globals()
31
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtrade.iam.role.v1.role_pb2', _globals)
33
+ if not _descriptor._USE_C_DESCRIPTORS:
34
+ _globals['DESCRIPTOR']._loaded_options = None
35
+ _globals['DESCRIPTOR']._serialized_options = b'\n\034co.meshtrade.api.iam.role.v1Z.github.com/meshtrade/api/go/iam/role/v1;rolev1'
36
+ _globals['_ROLE']._serialized_start=157
37
+ _globals['_ROLE']._serialized_end=436
38
+ _globals['_ROLELIST']._serialized_start=93
39
+ _globals['_ROLELIST']._serialized_end=154
40
+ # @@protoc_insertion_point(module_scope)
@@ -13,9 +13,25 @@ class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
13
13
  ROLE_UNSPECIFIED: _ClassVar[Role]
14
14
  ROLE_WALLET_ADMIN: _ClassVar[Role]
15
15
  ROLE_WALLET_VIEWER: _ClassVar[Role]
16
+ ROLE_COMPLIANCE_ADMIN: _ClassVar[Role]
17
+ ROLE_COMPLIANCE_VIEWER: _ClassVar[Role]
18
+ ROLE_IAM_ADMIN: _ClassVar[Role]
19
+ ROLE_IAM_VIEWER: _ClassVar[Role]
20
+ ROLE_ISSUANCE_HUB_ADMIN: _ClassVar[Role]
21
+ ROLE_ISSUANCE_HUB_VIEWER: _ClassVar[Role]
22
+ ROLE_TRADING_ADMIN: _ClassVar[Role]
23
+ ROLE_TRADING_VIEWER: _ClassVar[Role]
16
24
  ROLE_UNSPECIFIED: Role
17
25
  ROLE_WALLET_ADMIN: Role
18
26
  ROLE_WALLET_VIEWER: Role
27
+ ROLE_COMPLIANCE_ADMIN: Role
28
+ ROLE_COMPLIANCE_VIEWER: Role
29
+ ROLE_IAM_ADMIN: Role
30
+ ROLE_IAM_VIEWER: Role
31
+ ROLE_ISSUANCE_HUB_ADMIN: Role
32
+ ROLE_ISSUANCE_HUB_VIEWER: Role
33
+ ROLE_TRADING_ADMIN: Role
34
+ ROLE_TRADING_VIEWER: Role
19
35
  STANDARD_ROLES_FIELD_NUMBER: _ClassVar[int]
20
36
  standard_roles: _descriptor.FieldDescriptor
21
37
  ROLES_FIELD_NUMBER: _ClassVar[int]
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+