maleo-schemas 0.0.1__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.
@@ -0,0 +1,65 @@
1
+ from pydantic import BaseModel, Field
2
+ from typing import Generic, Literal, Optional, TypeVar
3
+ from maleo.mixins.general import SuccessT
4
+ from maleo.enums.operation import OperationType, SystemOperationType
5
+ from maleo.types.base.dict import OptionalStringToAnyDict
6
+ from maleo.dtos.authentication import AuthenticationT
7
+ from maleo.dtos.contexts.request import RequestContext
8
+ from maleo.dtos.error import (
9
+ GenericErrorT,
10
+ ErrorT,
11
+ )
12
+ from ..response import ResponseT, ErrorResponseT, SuccessResponseT
13
+ from .base import BaseOperation
14
+
15
+
16
+ class SystemOperationAction(BaseModel):
17
+ type: SystemOperationType = Field(..., description="Action's type")
18
+ details: OptionalStringToAnyDict = Field(None, description="Action's details")
19
+
20
+
21
+ SystemOperationActionT = TypeVar(
22
+ "SystemOperationActionT", bound=Optional[SystemOperationAction]
23
+ )
24
+
25
+
26
+ class SystemOperationActionMixin(BaseModel, Generic[SystemOperationActionT]):
27
+ action: SystemOperationActionT = Field(..., description="Operation's action")
28
+
29
+
30
+ class SystemOperation(
31
+ BaseOperation[
32
+ None,
33
+ SuccessT,
34
+ GenericErrorT,
35
+ Optional[RequestContext],
36
+ AuthenticationT,
37
+ SystemOperationAction,
38
+ None,
39
+ ResponseT,
40
+ ],
41
+ Generic[
42
+ SuccessT,
43
+ GenericErrorT,
44
+ AuthenticationT,
45
+ ResponseT,
46
+ ],
47
+ ):
48
+ type: OperationType = OperationType.SYSTEM
49
+ resource: None = None
50
+ response_context: None = None
51
+
52
+
53
+ class FailedSystemOperation(
54
+ SystemOperation[Literal[False], ErrorT, AuthenticationT, ErrorResponseT],
55
+ Generic[ErrorT, AuthenticationT, ErrorResponseT],
56
+ ):
57
+ success: Literal[False] = False
58
+
59
+
60
+ class SuccessfulSystemOperation(
61
+ SystemOperation[Literal[True], None, AuthenticationT, SuccessResponseT],
62
+ Generic[AuthenticationT, SuccessResponseT],
63
+ ):
64
+ success: Literal[True] = True
65
+ error: None = None
@@ -0,0 +1,44 @@
1
+ from maleo.mixins.parameter import (
2
+ Filters,
3
+ ListOfDataStatuses,
4
+ Sorts,
5
+ Search,
6
+ UseCache,
7
+ StatusUpdateAction,
8
+ )
9
+ from maleo.dtos.pagination import BaseFlexiblePagination, BaseStrictPagination
10
+
11
+
12
+ class ReadSingleQueryParameter(
13
+ ListOfDataStatuses,
14
+ UseCache,
15
+ ):
16
+ pass
17
+
18
+
19
+ class BaseReadMultipleQueryParameter(
20
+ Sorts,
21
+ Search,
22
+ ListOfDataStatuses,
23
+ Filters,
24
+ UseCache,
25
+ ):
26
+ pass
27
+
28
+
29
+ class ReadUnpaginatedMultipleQueryParameter(
30
+ BaseFlexiblePagination,
31
+ BaseReadMultipleQueryParameter,
32
+ ):
33
+ pass
34
+
35
+
36
+ class ReadPaginatedMultipleQueryParameter(
37
+ BaseStrictPagination,
38
+ BaseReadMultipleQueryParameter,
39
+ ):
40
+ pass
41
+
42
+
43
+ class StatusUpdateQueryParameter(StatusUpdateAction):
44
+ pass
@@ -0,0 +1,373 @@
1
+ from pydantic import BaseModel, Field
2
+ from typing import Dict, Generic, List, Literal, Optional, TypeVar, Union
3
+ from maleo.dtos.data import DataPair, GenericDataT, DataT
4
+ from maleo.dtos.descriptor import (
5
+ ErrorDescriptor,
6
+ BadRequestErrorDescriptor,
7
+ UnauthorizedErrorDescriptor,
8
+ ForbiddenErrorDescriptor,
9
+ NotFoundErrorDescriptor,
10
+ MethodNotAllowedErrorDescriptor,
11
+ ConflictErrorDescriptor,
12
+ UnprocessableEntityErrorDescriptor,
13
+ TooManyRequestsErrorDescriptor,
14
+ InternalServerErrorDescriptor,
15
+ DatabaseErrorDescriptor,
16
+ NotImplementedErrorDescriptor,
17
+ BadGatewayErrorDescriptor,
18
+ ServiceUnavailableErrorDescriptor,
19
+ SuccessDescriptor,
20
+ AnyDataSuccessDescriptor,
21
+ NoDataSuccessDescriptor,
22
+ SingleDataSuccessDescriptor,
23
+ OptionalSingleDataSuccessDescriptor,
24
+ CreateSingleDataSuccessDescriptor,
25
+ ReadSingleDataSuccessDescriptor,
26
+ UpdateSingleDataSuccessDescriptor,
27
+ DeleteSingleDataSuccessDescriptor,
28
+ MultipleDataSuccessDescriptor,
29
+ OptionalMultipleDataSuccessDescriptor,
30
+ CreateMultipleDataSuccessDescriptor,
31
+ ReadMultipleDataSuccessDescriptor,
32
+ UpdateMultipleDataSuccessDescriptor,
33
+ DeleteMultipleDataSuccessDescriptor,
34
+ )
35
+ from maleo.dtos.metadata import MetadataT
36
+ from maleo.dtos.pagination import PaginationT, GenericPaginationT
37
+ from maleo.dtos.payload import (
38
+ Payload,
39
+ NoDataPayload,
40
+ SingleDataPayload,
41
+ CreateSingleDataPayload,
42
+ ReadSingleDataPayload,
43
+ UpdateSingleDataPayload,
44
+ DeleteSingleDataPayload,
45
+ OptionalSingleDataPayload,
46
+ MultipleDataPayload,
47
+ CreateMultipleDataPayload,
48
+ ReadMultipleDataPayload,
49
+ UpdateMultipleDataPayload,
50
+ DeleteMultipleDataPayload,
51
+ OptionalMultipleDataPayload,
52
+ )
53
+ from maleo.enums.error import Code as ErrorCode
54
+ from maleo.enums.success import Code as SuccessCode
55
+ from maleo.mixins.general import SuccessT, Success, CodeT, Descriptor
56
+ from maleo.types.base.any import OptionalAny
57
+ from maleo.types.base.dict import StringToAnyDict
58
+
59
+
60
+ class Response(
61
+ Payload[GenericDataT, GenericPaginationT, MetadataT],
62
+ Descriptor[CodeT],
63
+ Success[SuccessT],
64
+ BaseModel,
65
+ Generic[SuccessT, CodeT, GenericDataT, GenericPaginationT, MetadataT],
66
+ ):
67
+ pass
68
+
69
+
70
+ ResponseT = TypeVar("ResponseT", bound=Response)
71
+
72
+
73
+ class ResponseMixin(BaseModel, Generic[ResponseT]):
74
+ response: ResponseT = Field(..., description="Response")
75
+
76
+
77
+ # Failure Response
78
+ class ErrorResponse(
79
+ NoDataPayload[None],
80
+ ErrorDescriptor,
81
+ Response[Literal[False], ErrorCode, None, None, None],
82
+ ):
83
+ success: Literal[False] = False
84
+ data: None = None
85
+ pagination: None = None
86
+ metadata: None = None
87
+ other: OptionalAny = "Please try again later or contact administrator"
88
+
89
+
90
+ ErrorResponseT = TypeVar("ErrorResponseT", bound=ErrorResponse)
91
+
92
+
93
+ class BadRequestResponse(
94
+ BadRequestErrorDescriptor,
95
+ ErrorResponse,
96
+ ):
97
+ pass
98
+
99
+
100
+ class UnauthorizedResponse(
101
+ UnauthorizedErrorDescriptor,
102
+ ErrorResponse,
103
+ ):
104
+ pass
105
+
106
+
107
+ class ForbiddenResponse(
108
+ ForbiddenErrorDescriptor,
109
+ ErrorResponse,
110
+ ):
111
+ pass
112
+
113
+
114
+ class NotFoundResponse(
115
+ NotFoundErrorDescriptor,
116
+ ErrorResponse,
117
+ ):
118
+ pass
119
+
120
+
121
+ class MethodNotAllowedResponse(
122
+ MethodNotAllowedErrorDescriptor,
123
+ ErrorResponse,
124
+ ):
125
+ pass
126
+
127
+
128
+ class ConflictResponse(
129
+ ConflictErrorDescriptor,
130
+ ErrorResponse,
131
+ ):
132
+ pass
133
+
134
+
135
+ class UnprocessableEntityResponse(
136
+ UnprocessableEntityErrorDescriptor,
137
+ ErrorResponse,
138
+ ):
139
+ pass
140
+
141
+
142
+ class TooManyRequestsResponse(
143
+ TooManyRequestsErrorDescriptor,
144
+ ErrorResponse,
145
+ ):
146
+ pass
147
+
148
+
149
+ class InternalServerErrorResponse(
150
+ InternalServerErrorDescriptor,
151
+ ErrorResponse,
152
+ ):
153
+ pass
154
+
155
+
156
+ class DatabaseErrorResponse(
157
+ DatabaseErrorDescriptor,
158
+ ErrorResponse,
159
+ ):
160
+ pass
161
+
162
+
163
+ class NotImplementedResponse(
164
+ NotImplementedErrorDescriptor,
165
+ ErrorResponse,
166
+ ):
167
+ pass
168
+
169
+
170
+ class BadGatewayResponse(
171
+ BadGatewayErrorDescriptor,
172
+ ErrorResponse,
173
+ ):
174
+ pass
175
+
176
+
177
+ class ServiceUnavailableResponse(
178
+ ServiceUnavailableErrorDescriptor,
179
+ ErrorResponse,
180
+ ):
181
+ pass
182
+
183
+
184
+ OTHER_RESPONSES: Optional[Dict[Union[int, str], StringToAnyDict]] = {
185
+ 400: {
186
+ "description": "Bad Request Response",
187
+ "model": BadRequestResponse,
188
+ },
189
+ 401: {
190
+ "description": "Unauthorized Response",
191
+ "model": UnauthorizedResponse,
192
+ },
193
+ 403: {
194
+ "description": "Forbidden Response",
195
+ "model": ForbiddenResponse,
196
+ },
197
+ 404: {
198
+ "description": "Not Found Response",
199
+ "model": NotFoundResponse,
200
+ },
201
+ 405: {
202
+ "description": "Method Not Allowed Response",
203
+ "model": MethodNotAllowedResponse,
204
+ },
205
+ 409: {
206
+ "description": "Conflict Response",
207
+ "model": ConflictResponse,
208
+ },
209
+ 422: {
210
+ "description": "Unprocessable Entity Response",
211
+ "model": UnprocessableEntityResponse,
212
+ },
213
+ 429: {
214
+ "description": "Too Many Requests Response",
215
+ "model": TooManyRequestsResponse,
216
+ },
217
+ 500: {
218
+ "description": "Internal Server Error Response",
219
+ "model": [
220
+ InternalServerErrorResponse,
221
+ DatabaseErrorResponse,
222
+ ],
223
+ },
224
+ 501: {
225
+ "description": "Not Implemented Response",
226
+ "model": NotImplementedResponse,
227
+ },
228
+ 502: {
229
+ "description": "Bad Gateway Response",
230
+ "model": BadGatewayResponse,
231
+ },
232
+ 503: {
233
+ "description": "Service Unavailable Response",
234
+ "model": ServiceUnavailableResponse,
235
+ },
236
+ }
237
+
238
+
239
+ class SuccessResponse(
240
+ SuccessDescriptor,
241
+ Response[Literal[True], SuccessCode, GenericDataT, GenericPaginationT, MetadataT],
242
+ Generic[GenericDataT, GenericPaginationT, MetadataT],
243
+ ):
244
+ success: Literal[True] = True
245
+
246
+
247
+ SuccessResponseT = TypeVar("SuccessResponseT", bound=SuccessResponse)
248
+
249
+
250
+ class AnyDataResponse(
251
+ AnyDataSuccessDescriptor,
252
+ SuccessResponse[DataT, GenericPaginationT, MetadataT],
253
+ Generic[DataT, GenericPaginationT, MetadataT],
254
+ ):
255
+ pass
256
+
257
+
258
+ class NoDataResponse(
259
+ NoDataPayload[MetadataT],
260
+ NoDataSuccessDescriptor,
261
+ SuccessResponse[None, None, MetadataT],
262
+ Generic[MetadataT],
263
+ ):
264
+ data: None = None
265
+ pagination: None = None
266
+
267
+
268
+ class SingleDataResponse(
269
+ SingleDataPayload[DataT, MetadataT],
270
+ SingleDataSuccessDescriptor,
271
+ SuccessResponse[DataT, None, MetadataT],
272
+ Generic[DataT, MetadataT],
273
+ ):
274
+ pagination: None = None
275
+
276
+
277
+ class CreateSingleDataResponse(
278
+ CreateSingleDataPayload[DataT, MetadataT],
279
+ CreateSingleDataSuccessDescriptor,
280
+ SuccessResponse[DataPair[None, DataT], None, MetadataT],
281
+ Generic[DataT, MetadataT],
282
+ ):
283
+ pass
284
+
285
+
286
+ class ReadSingleDataResponse(
287
+ ReadSingleDataPayload[DataT, MetadataT],
288
+ ReadSingleDataSuccessDescriptor,
289
+ SuccessResponse[DataPair[DataT, None], None, MetadataT],
290
+ Generic[DataT, MetadataT],
291
+ ):
292
+ pass
293
+
294
+
295
+ class UpdateSingleDataResponse(
296
+ UpdateSingleDataPayload[DataT, MetadataT],
297
+ UpdateSingleDataSuccessDescriptor,
298
+ SuccessResponse[DataPair[DataT, DataT], None, MetadataT],
299
+ Generic[DataT, MetadataT],
300
+ ):
301
+ pass
302
+
303
+
304
+ class DeleteSingleDataResponse(
305
+ DeleteSingleDataPayload[DataT, MetadataT],
306
+ DeleteSingleDataSuccessDescriptor,
307
+ SuccessResponse[DataPair[DataT, None], None, MetadataT],
308
+ Generic[DataT, MetadataT],
309
+ ):
310
+ pass
311
+
312
+
313
+ class OptionalSingleDataResponse(
314
+ OptionalSingleDataPayload[DataT, MetadataT],
315
+ OptionalSingleDataSuccessDescriptor,
316
+ SuccessResponse[Optional[DataT], None, MetadataT],
317
+ Generic[DataT, MetadataT],
318
+ ):
319
+ pagination: None = None
320
+
321
+
322
+ class MultipleDataResponse(
323
+ MultipleDataPayload[DataT, PaginationT, MetadataT],
324
+ MultipleDataSuccessDescriptor,
325
+ SuccessResponse[List[DataT], PaginationT, MetadataT],
326
+ Generic[DataT, PaginationT, MetadataT],
327
+ ):
328
+ pass
329
+
330
+
331
+ class CreateMultipleDataResponse(
332
+ CreateMultipleDataPayload[DataT, PaginationT, MetadataT],
333
+ CreateMultipleDataSuccessDescriptor,
334
+ SuccessResponse[DataPair[None, List[DataT]], PaginationT, MetadataT],
335
+ Generic[DataT, PaginationT, MetadataT],
336
+ ):
337
+ pass
338
+
339
+
340
+ class ReadMultipleDataResponse(
341
+ ReadMultipleDataPayload[DataT, PaginationT, MetadataT],
342
+ ReadMultipleDataSuccessDescriptor,
343
+ SuccessResponse[DataPair[List[DataT], None], PaginationT, MetadataT],
344
+ Generic[DataT, PaginationT, MetadataT],
345
+ ):
346
+ pass
347
+
348
+
349
+ class UpdateMultipleDataResponse(
350
+ UpdateMultipleDataPayload[DataT, PaginationT, MetadataT],
351
+ UpdateMultipleDataSuccessDescriptor,
352
+ SuccessResponse[DataPair[List[DataT], List[DataT]], PaginationT, MetadataT],
353
+ Generic[DataT, PaginationT, MetadataT],
354
+ ):
355
+ pass
356
+
357
+
358
+ class DeleteMultipleDataResponse(
359
+ DeleteMultipleDataPayload[DataT, PaginationT, MetadataT],
360
+ DeleteMultipleDataSuccessDescriptor,
361
+ SuccessResponse[DataPair[List[DataT], None], PaginationT, MetadataT],
362
+ Generic[DataT, PaginationT, MetadataT],
363
+ ):
364
+ pass
365
+
366
+
367
+ class OptionalMultipleDataResponse(
368
+ OptionalMultipleDataPayload[DataT, PaginationT, MetadataT],
369
+ OptionalMultipleDataSuccessDescriptor,
370
+ SuccessResponse[Optional[List[DataT]], PaginationT, MetadataT],
371
+ Generic[DataT, PaginationT, MetadataT],
372
+ ):
373
+ pass
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.4
2
+ Name: maleo-schemas
3
+ Version: 0.0.1
4
+ Summary: Schemas package for MaleoSuite
5
+ Author-email: Agra Bima Yuda <agra@nexmedis.com>
6
+ License: Proprietary
7
+ Requires-Python: >=3.12
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: annotated-types>=0.7.0
11
+ Requires-Dist: anyio>=4.10.0
12
+ Requires-Dist: black>=25.1.0
13
+ Requires-Dist: cachetools>=5.5.2
14
+ Requires-Dist: certifi>=2025.8.3
15
+ Requires-Dist: cffi>=1.17.1
16
+ Requires-Dist: cfgv>=3.4.0
17
+ Requires-Dist: charset-normalizer>=3.4.3
18
+ Requires-Dist: click>=8.2.1
19
+ Requires-Dist: cryptography>=45.0.7
20
+ Requires-Dist: distlib>=0.4.0
21
+ Requires-Dist: fastapi>=0.116.1
22
+ Requires-Dist: filelock>=3.19.1
23
+ Requires-Dist: google-api-core>=2.25.1
24
+ Requires-Dist: google-auth>=2.40.3
25
+ Requires-Dist: google-cloud-appengine-logging>=1.6.2
26
+ Requires-Dist: google-cloud-audit-log>=0.3.2
27
+ Requires-Dist: google-cloud-core>=2.4.3
28
+ Requires-Dist: google-cloud-logging>=3.12.1
29
+ Requires-Dist: google-cloud-pubsub>=2.31.1
30
+ Requires-Dist: googleapis-common-protos>=1.70.0
31
+ Requires-Dist: grpc-google-iam-v1>=0.14.2
32
+ Requires-Dist: grpcio>=1.74.0
33
+ Requires-Dist: grpcio-status>=1.74.0
34
+ Requires-Dist: h11>=0.16.0
35
+ Requires-Dist: httpcore>=1.0.9
36
+ Requires-Dist: httpx>=0.28.1
37
+ Requires-Dist: identify>=2.6.13
38
+ Requires-Dist: idna>=3.10
39
+ Requires-Dist: importlib_metadata>=8.7.0
40
+ Requires-Dist: maleo-constants>=0.0.4
41
+ Requires-Dist: maleo-dtos>=0.0.2
42
+ Requires-Dist: maleo-enums>=0.0.6
43
+ Requires-Dist: maleo-logging>=0.0.4
44
+ Requires-Dist: maleo-mixins>=0.0.9
45
+ Requires-Dist: maleo-types-base>=0.0.2
46
+ Requires-Dist: maleo-types-controllers>=0.0.1
47
+ Requires-Dist: maleo-types-enums>=0.0.4
48
+ Requires-Dist: maleo-utils>=0.0.3
49
+ Requires-Dist: mypy_extensions>=1.1.0
50
+ Requires-Dist: nodeenv>=1.9.1
51
+ Requires-Dist: opentelemetry-api>=1.36.0
52
+ Requires-Dist: opentelemetry-sdk>=1.36.0
53
+ Requires-Dist: opentelemetry-semantic-conventions>=0.57b0
54
+ Requires-Dist: packaging>=25.0
55
+ Requires-Dist: pathspec>=0.12.1
56
+ Requires-Dist: platformdirs>=4.4.0
57
+ Requires-Dist: pre_commit>=4.3.0
58
+ Requires-Dist: proto-plus>=1.26.1
59
+ Requires-Dist: protobuf>=6.32.0
60
+ Requires-Dist: pyasn1>=0.6.1
61
+ Requires-Dist: pyasn1_modules>=0.4.2
62
+ Requires-Dist: pycparser>=2.22
63
+ Requires-Dist: pycryptodome>=3.23.0
64
+ Requires-Dist: pydantic>=2.11.7
65
+ Requires-Dist: pydantic-settings>=2.10.1
66
+ Requires-Dist: pydantic_core>=2.33.2
67
+ Requires-Dist: python-dotenv>=1.1.1
68
+ Requires-Dist: PyYAML>=6.0.2
69
+ Requires-Dist: requests>=2.32.5
70
+ Requires-Dist: rsa>=4.9.1
71
+ Requires-Dist: sniffio>=1.3.1
72
+ Requires-Dist: starlette>=0.47.3
73
+ Requires-Dist: typing-inspection>=0.4.1
74
+ Requires-Dist: typing_extensions>=4.15.0
75
+ Requires-Dist: ua-parser>=1.0.1
76
+ Requires-Dist: ua-parser-builtins>=0.18.0.post1
77
+ Requires-Dist: urllib3>=2.5.0
78
+ Requires-Dist: user-agents>=2.2.0
79
+ Requires-Dist: virtualenv>=20.34.0
80
+ Requires-Dist: zipp>=3.23.0
81
+ Dynamic: license-file
82
+
83
+ # README #
84
+
85
+ This README would normally document whatever steps are necessary to get your application up and running.
86
+
87
+ ### What is this repository for? ###
88
+
89
+ * Quick summary
90
+ * Version
91
+ * [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
92
+
93
+ ### How do I get set up? ###
94
+
95
+ * Summary of set up
96
+ * Configuration
97
+ * Dependencies
98
+ * Database configuration
99
+ * How to run tests
100
+ * Deployment instructions
101
+
102
+ ### Contribution guidelines ###
103
+
104
+ * Writing tests
105
+ * Code review
106
+ * Other guidelines
107
+
108
+ ### Who do I talk to? ###
109
+
110
+ * Repo owner or admin
111
+ * Other community or team contact
@@ -0,0 +1,14 @@
1
+ maleo/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ maleo/schemas/request.py,sha256=1tFUZyr6kofpNHVM5h1Qx9TCHt4EqS_hfIZlADuaUI0,733
3
+ maleo/schemas/response.py,sha256=te11s9dhMAM8cwzzXgz5FzyrJJ8Ivf3FnUvA_InLLuE,9077
4
+ maleo/schemas/operation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ maleo/schemas/operation/action.py,sha256=LjR7KQBpB_oA64iFT4WGvnA0IrwXW4v0sI35o3vlY5Y,293
6
+ maleo/schemas/operation/base.py,sha256=4L1pqVe7hjRRpIPCeV4FbMryCiB0pCxLjJXPoegofrE,7271
7
+ maleo/schemas/operation/request.py,sha256=t_bTGcihjmg9a2BBP2f5q6--ed6WA4jjI1WRIxSp_Ds,3225
8
+ maleo/schemas/operation/resource.py,sha256=wf1bDa97O0W9-QXjKXrkqFqeHTQuWV_RWc2vMLhRDvI,27771
9
+ maleo/schemas/operation/system.py,sha256=nZgRwp2cc6DLqpl8-notwJjZTkedfBa_72sY_HbcBk4,1865
10
+ maleo_schemas-0.0.1.dist-info/licenses/LICENSE,sha256=aftGsecnk7TWVX-7KW94FqK4Syy6YSZ8PZEF7EcIp3M,2621
11
+ maleo_schemas-0.0.1.dist-info/METADATA,sha256=pMwPJgqP7ttWQvgdrBW_6LvkX3FRdImCWwHjdCXAm34,3357
12
+ maleo_schemas-0.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
+ maleo_schemas-0.0.1.dist-info/top_level.txt,sha256=3Tpd1siVsfYoeI9FEOJNYnffx_shzZ3wsPpTvz5bljc,6
14
+ maleo_schemas-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,57 @@
1
+ # Proprietary Software License
2
+
3
+ **Copyright (c) 2025 Agra Bima Yuda / Nexmedis**
4
+
5
+ ## License Grant
6
+
7
+ This software and associated documentation files (the "Software") are proprietary and confidential to Agra Bima Yuda and/or Nexmedis ("Licensor"). All rights reserved.
8
+
9
+ ## Restrictions
10
+
11
+ **NO PERMISSION** is granted to any person to:
12
+
13
+ 1. **Use** the Software for any purpose without explicit written permission from the Licensor
14
+ 2. **Copy, modify, merge, publish, distribute, sublicense, or sell** copies of the Software
15
+ 3. **Reverse engineer, decompile, or disassemble** the Software
16
+ 4. **Create derivative works** based upon the Software
17
+ 5. **Remove or alter** any proprietary notices, labels, or marks on the Software
18
+
19
+ ## Permitted Use
20
+
21
+ Use of this Software is permitted only under the following conditions:
22
+
23
+ 1. **Authorized Users**: Only individuals or entities explicitly authorized by the Licensor in writing
24
+ 2. **Internal Use Only**: The Software may only be used for internal business purposes of the authorized entity
25
+ 3. **No Redistribution**: The Software may not be shared, distributed, or made available to any third party
26
+
27
+ ## Ownership
28
+
29
+ The Software is and remains the exclusive property of the Licensor. This license does not grant any ownership rights in the Software.
30
+
31
+ ## Confidentiality
32
+
33
+ The Software contains proprietary and confidential information. Recipients agree to:
34
+
35
+ 1. Maintain the confidentiality of the Software
36
+ 2. Use the same degree of care to protect the Software as they use for their own confidential information, but no less than reasonable care
37
+ 3. Not disclose the Software to any third party without prior written consent
38
+
39
+ ## Termination
40
+
41
+ This license is effective until terminated. The Licensor may terminate this license at any time without notice. Upon termination, all rights granted herein cease immediately, and the recipient must destroy all copies of the Software.
42
+
43
+ ## Disclaimer of Warranty
44
+
45
+ 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.
46
+
47
+ ## Limitation of Liability
48
+
49
+ IN NO EVENT SHALL THE LICENSOR 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.
50
+
51
+ ## Governing Law
52
+
53
+ This license shall be governed by and construed in accordance with the laws of Indonesia, without regard to its conflict of law provisions.
54
+
55
+ ---
56
+
57
+ For licensing inquiries, contact: agra@nexmedis.com
@@ -0,0 +1 @@
1
+ maleo