fragment-python 0.2.1__tar.gz → 0.3.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 (82) hide show
  1. {fragment_python-0.2.1 → fragment_python-0.3.0}/PKG-INFO +6 -4
  2. {fragment_python-0.2.1 → fragment_python-0.3.0}/README.md +2 -2
  3. {fragment_python-0.2.1/fragment/sync_sdk → fragment_python-0.3.0/fragment/sdk}/__init__.py +66 -0
  4. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/base_model.py +1 -2
  5. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/client.py +168 -4
  6. fragment_python-0.3.0/fragment/sdk/delete_custom_txs.py +49 -0
  7. fragment_python-0.3.0/fragment/sdk/delete_ledger.py +32 -0
  8. fragment_python-0.3.0/fragment/sdk/delete_schema.py +32 -0
  9. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/enums.py +6 -0
  10. {fragment_python-0.2.1/fragment/sync_sdk → fragment_python-0.3.0/fragment/sdk}/input_types.py +23 -0
  11. fragment_python-0.3.0/fragment/sdk/reverse_ledger_entry.py +115 -0
  12. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/std_queries/queries.graphql +113 -0
  13. {fragment_python-0.2.1/fragment/sdk → fragment_python-0.3.0/fragment/sync_sdk}/__init__.py +68 -2
  14. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/base_model.py +1 -2
  15. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/client.py +210 -52
  16. fragment_python-0.3.0/fragment/sync_sdk/delete_custom_txs.py +49 -0
  17. fragment_python-0.3.0/fragment/sync_sdk/delete_ledger.py +32 -0
  18. fragment_python-0.3.0/fragment/sync_sdk/delete_schema.py +32 -0
  19. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/enums.py +6 -0
  20. {fragment_python-0.2.1/fragment/sdk → fragment_python-0.3.0/fragment/sync_sdk}/input_types.py +23 -0
  21. fragment_python-0.3.0/fragment/sync_sdk/reverse_ledger_entry.py +115 -0
  22. fragment_python-0.3.0/fragment/sync_sdk/sync_client.py +65 -0
  23. {fragment_python-0.2.1 → fragment_python-0.3.0}/pyproject.toml +4 -5
  24. {fragment_python-0.2.1 → fragment_python-0.3.0}/LICENSE +0 -0
  25. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/__init__.py +0 -0
  26. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/client/__init__.py +0 -0
  27. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/client/async_client.py +0 -0
  28. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/client/sync_client.py +0 -0
  29. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/codegen/__init__.py +0 -0
  30. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/codegen/helpers.py +0 -0
  31. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/codegen/main.py +0 -0
  32. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/codegen/plugins/__init__.py +0 -0
  33. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/codegen/plugins/generate_client_method.py +0 -0
  34. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/codegen/plugins/get_file_comment.py +0 -0
  35. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/exceptions.py +0 -0
  36. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/logger.py +0 -0
  37. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/add_ledger_entry.py +0 -0
  38. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/add_ledger_entry_runtime.py +0 -0
  39. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/async_client.py +0 -0
  40. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/create_custom_link.py +0 -0
  41. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/create_ledger.py +0 -0
  42. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/get_ledger.py +0 -0
  43. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/get_ledger_account_balance.py +0 -0
  44. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/get_ledger_account_lines.py +0 -0
  45. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/get_ledger_entry.py +0 -0
  46. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/get_schema.py +0 -0
  47. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/get_workspace.py +0 -0
  48. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/list_ledger_account_balances.py +0 -0
  49. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/list_ledger_accounts.py +0 -0
  50. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/list_ledger_entries.py +0 -0
  51. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/list_ledger_entry_group_balances.py +0 -0
  52. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/list_multi_currency_ledger_account_balances.py +0 -0
  53. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/reconcile_tx.py +0 -0
  54. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/reconcile_tx_runtime.py +0 -0
  55. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/store_schema.py +0 -0
  56. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/sync_custom_accounts.py +0 -0
  57. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/sync_custom_txs.py +0 -0
  58. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/update_ledger.py +0 -0
  59. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sdk/update_ledger_entry.py +0 -0
  60. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/add_ledger_entry.py +0 -0
  61. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/add_ledger_entry_runtime.py +0 -0
  62. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/async_client.py +0 -0
  63. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/create_custom_link.py +0 -0
  64. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/create_ledger.py +0 -0
  65. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/get_ledger.py +0 -0
  66. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/get_ledger_account_balance.py +0 -0
  67. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/get_ledger_account_lines.py +0 -0
  68. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/get_ledger_entry.py +0 -0
  69. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/get_schema.py +0 -0
  70. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/get_workspace.py +0 -0
  71. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/list_ledger_account_balances.py +0 -0
  72. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/list_ledger_accounts.py +0 -0
  73. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/list_ledger_entries.py +0 -0
  74. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/list_ledger_entry_group_balances.py +0 -0
  75. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/list_multi_currency_ledger_account_balances.py +0 -0
  76. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/reconcile_tx.py +0 -0
  77. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/reconcile_tx_runtime.py +0 -0
  78. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/store_schema.py +0 -0
  79. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/sync_custom_accounts.py +0 -0
  80. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/sync_custom_txs.py +0 -0
  81. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/update_ledger.py +0 -0
  82. {fragment_python-0.2.1 → fragment_python-0.3.0}/fragment/sync_sdk/update_ledger_entry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fragment-python
3
- Version: 0.2.1
3
+ Version: 0.3.0
4
4
  Summary: Python SDK for https://fragment.dev/
5
5
  License: Apache 2.0
6
6
  Author: Fragment Foundries Inc
@@ -12,11 +12,13 @@ Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Requires-Dist: ariadne-codegen (>=0.13.0,<0.14.0)
14
14
  Requires-Dist: authlib (>=1.3.1,<2.0.0)
15
+ Requires-Dist: certifi (==2024.07.04)
15
16
  Requires-Dist: click (>=8.1.7,<9.0.0)
17
+ Requires-Dist: cryptography (==44.0.1)
16
18
  Requires-Dist: graphql-core (>=3.2.3,<4.0.0)
17
19
  Requires-Dist: httpx (>=0.27.0,<0.28.0)
18
20
  Requires-Dist: pydantic (>=2.8.0,<3.0.0)
19
- Requires-Dist: requests-oauth2client (>=1.5.3,<2.0.0)
21
+ Requires-Dist: requests-oauth2client (>=1.6.0,<2.0.0)
20
22
  Description-Content-Type: text/markdown
21
23
 
22
24
  # fragment-python
@@ -133,14 +135,14 @@ query getSchemaName($key: SafeString!) {
133
135
  2. Run `fragment-python-client-codegen` to generate the GraphQL SDK client. GraphQL named queries are converted to snake_case to conform to Python's code conventions. Optionally, pass the `--sync` flag to generate a synchronous client instead of the default async GraphQL client.
134
136
  ```bash
135
137
  fragment-python-client-codegen \
136
- --input-dir queries/ \
138
+ --input-dir libs/fragment/queries/ \
137
139
  --target-package-name=custom_queries_package \
138
140
  --output-dir=libs/fragment
139
141
  ```
140
142
  3. Use the client from the generated package in your product! Apart from the custom query methods, this client is functionally identical to `fragment.sdk.client.Client`
141
143
 
142
144
  ```python
143
- from .libs.custom_queries_package.client import Client
145
+ from .libs.fragment.custom_queries_package.client import Client
144
146
 
145
147
  graphql_client = Client(
146
148
  client_id="<client id from the dashboard>",
@@ -112,14 +112,14 @@ query getSchemaName($key: SafeString!) {
112
112
  2. Run `fragment-python-client-codegen` to generate the GraphQL SDK client. GraphQL named queries are converted to snake_case to conform to Python's code conventions. Optionally, pass the `--sync` flag to generate a synchronous client instead of the default async GraphQL client.
113
113
  ```bash
114
114
  fragment-python-client-codegen \
115
- --input-dir queries/ \
115
+ --input-dir libs/fragment/queries/ \
116
116
  --target-package-name=custom_queries_package \
117
117
  --output-dir=libs/fragment
118
118
  ```
119
119
  3. Use the client from the generated package in your product! Apart from the custom query methods, this client is functionally identical to `fragment.sdk.client.Client`
120
120
 
121
121
  ```python
122
- from .libs.custom_queries_package.client import Client
122
+ from .libs.fragment.custom_queries_package.client import Client
123
123
 
124
124
  graphql_client = Client(
125
125
  client_id="<client id from the dashboard>",
@@ -36,12 +36,33 @@ from .create_ledger import (
36
36
  CreateLedgerCreateLedgerCreateLedgerResultLedgerSchema,
37
37
  CreateLedgerCreateLedgerInternalError,
38
38
  )
39
+ from .delete_custom_txs import (
40
+ DeleteCustomTxs,
41
+ DeleteCustomTxsDeleteCustomTxsBadRequestError,
42
+ DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResult,
43
+ DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxs,
44
+ DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxsTx,
45
+ DeleteCustomTxsDeleteCustomTxsInternalError,
46
+ )
47
+ from .delete_ledger import (
48
+ DeleteLedger,
49
+ DeleteLedgerDeleteLedgerBadRequestError,
50
+ DeleteLedgerDeleteLedgerDeleteLedgerResult,
51
+ DeleteLedgerDeleteLedgerInternalError,
52
+ )
53
+ from .delete_schema import (
54
+ DeleteSchema,
55
+ DeleteSchemaDeleteSchemaBadRequestError,
56
+ DeleteSchemaDeleteSchemaDeleteSchemaResult,
57
+ DeleteSchemaDeleteSchemaInternalError,
58
+ )
39
59
  from .enums import (
40
60
  BalanceUpdateConsistencyMode,
41
61
  CurrencyCode,
42
62
  CurrencyMode,
43
63
  ExternalTransferType,
44
64
  ExternalTxSource,
65
+ Granularity,
45
66
  IncreaseEnv,
46
67
  LedgerAccountTypes,
47
68
  LedgerLinesConsistencyMode,
@@ -91,6 +112,8 @@ from .input_types import (
91
112
  ExternalAccountFilter,
92
113
  ExternalAccountMatchInput,
93
114
  GroupBalanceAccountFilter,
115
+ GroupFilter,
116
+ GroupNotFilter,
94
117
  Int96ConditionInput,
95
118
  Int96Filter,
96
119
  LedgerAccountConditionInput,
@@ -213,6 +236,20 @@ from .reconcile_tx_runtime import (
213
236
  ReconcileTxRuntimeReconcileTxReconcileTxResultLines,
214
237
  ReconcileTxRuntimeReconcileTxReconcileTxResultLinesAccount,
215
238
  )
239
+ from .reverse_ledger_entry import (
240
+ ReverseLedgerEntry,
241
+ ReverseLedgerEntryReverseLedgerEntryBadRequestError,
242
+ ReverseLedgerEntryReverseLedgerEntryInternalError,
243
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResult,
244
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntry,
245
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntryLines,
246
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntryLinesNodes,
247
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntryLinesNodesAccount,
248
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntry,
249
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntryLines,
250
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntryLinesNodes,
251
+ ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntryLinesNodesAccount,
252
+ )
216
253
  from .store_schema import (
217
254
  StoreSchema,
218
255
  StoreSchemaStoreSchemaBadRequestError,
@@ -299,6 +336,20 @@ __all__ = [
299
336
  "CustomTxInput",
300
337
  "DateFilter",
301
338
  "DateTimeFilter",
339
+ "DeleteCustomTxs",
340
+ "DeleteCustomTxsDeleteCustomTxsBadRequestError",
341
+ "DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResult",
342
+ "DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxs",
343
+ "DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxsTx",
344
+ "DeleteCustomTxsDeleteCustomTxsInternalError",
345
+ "DeleteLedger",
346
+ "DeleteLedgerDeleteLedgerBadRequestError",
347
+ "DeleteLedgerDeleteLedgerDeleteLedgerResult",
348
+ "DeleteLedgerDeleteLedgerInternalError",
349
+ "DeleteSchema",
350
+ "DeleteSchemaDeleteSchemaBadRequestError",
351
+ "DeleteSchemaDeleteSchemaDeleteSchemaResult",
352
+ "DeleteSchemaDeleteSchemaInternalError",
302
353
  "EntryGroupMatchInput",
303
354
  "ExternalAccountFilter",
304
355
  "ExternalAccountMatchInput",
@@ -323,7 +374,10 @@ __all__ = [
323
374
  "GetSchemaSchemaVersion",
324
375
  "GetWorkspace",
325
376
  "GetWorkspaceWorkspace",
377
+ "Granularity",
326
378
  "GroupBalanceAccountFilter",
379
+ "GroupFilter",
380
+ "GroupNotFilter",
327
381
  "IncreaseEnv",
328
382
  "Int96ConditionInput",
329
383
  "Int96Filter",
@@ -409,6 +463,18 @@ __all__ = [
409
463
  "ReconcileTxRuntimeReconcileTxReconcileTxResultEntry",
410
464
  "ReconcileTxRuntimeReconcileTxReconcileTxResultLines",
411
465
  "ReconcileTxRuntimeReconcileTxReconcileTxResultLinesAccount",
466
+ "ReverseLedgerEntry",
467
+ "ReverseLedgerEntryReverseLedgerEntryBadRequestError",
468
+ "ReverseLedgerEntryReverseLedgerEntryInternalError",
469
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResult",
470
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntry",
471
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntryLines",
472
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntryLinesNodes",
473
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversedLedgerEntryLinesNodesAccount",
474
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntry",
475
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntryLines",
476
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntryLinesNodes",
477
+ "ReverseLedgerEntryReverseLedgerEntryReverseLedgerEntryResultReversingLedgerEntryLinesNodesAccount",
412
478
  "SceneEntryInput",
413
479
  "SceneEventInput",
414
480
  "SceneEventType",
@@ -2,8 +2,7 @@
2
2
 
3
3
  from io import IOBase
4
4
 
5
- from pydantic import BaseModel as PydanticBaseModel
6
- from pydantic import ConfigDict
5
+ from pydantic import BaseModel as PydanticBaseModel, ConfigDict
7
6
 
8
7
 
9
8
  class UnsetType:
@@ -8,6 +8,9 @@ from .add_ledger_entry_runtime import AddLedgerEntryRuntime
8
8
  from .async_client import AsyncFragmentClient
9
9
  from .create_custom_link import CreateCustomLink
10
10
  from .create_ledger import CreateLedger
11
+ from .delete_custom_txs import DeleteCustomTxs
12
+ from .delete_ledger import DeleteLedger
13
+ from .delete_schema import DeleteSchema
11
14
  from .enums import ReadBalanceConsistencyMode
12
15
  from .get_ledger import GetLedger
13
16
  from .get_ledger_account_balance import GetLedgerAccountBalance
@@ -26,7 +29,9 @@ from .input_types import (
26
29
  LedgerEntryTagInput,
27
30
  LedgerLineInput,
28
31
  LedgerLinesFilterSet,
32
+ LedgerMatchInput,
29
33
  SchemaInput,
34
+ SchemaMatchInput,
30
35
  UpdateLedgerEntryInput,
31
36
  UpdateLedgerInput,
32
37
  )
@@ -39,6 +44,7 @@ from .list_multi_currency_ledger_account_balances import (
39
44
  )
40
45
  from .reconcile_tx import ReconcileTx
41
46
  from .reconcile_tx_runtime import ReconcileTxRuntime
47
+ from .reverse_ledger_entry import ReverseLedgerEntry
42
48
  from .store_schema import StoreSchema
43
49
  from .sync_custom_accounts import SyncCustomAccounts
44
50
  from .sync_custom_txs import SyncCustomTxs
@@ -83,6 +89,33 @@ class Client(AsyncFragmentClient):
83
89
  data = self.get_data(response)
84
90
  return StoreSchema.model_validate(data)
85
91
 
92
+ async def delete_schema(
93
+ self, schema: SchemaMatchInput, **kwargs: Any
94
+ ) -> DeleteSchema:
95
+ query = gql(
96
+ """
97
+ mutation deleteSchema($schema: SchemaMatchInput!) {
98
+ deleteSchema(schema: $schema) {
99
+ __typename
100
+ ... on DeleteSchemaResult {
101
+ success
102
+ }
103
+ ... on Error {
104
+ code
105
+ message
106
+ retryable
107
+ }
108
+ }
109
+ }
110
+ """
111
+ )
112
+ variables: Dict[str, object] = {"schema": schema}
113
+ response = await self.execute(
114
+ query=query, operation_name="deleteSchema", variables=variables, **kwargs
115
+ )
116
+ data = self.get_data(response)
117
+ return DeleteSchema.model_validate(data)
118
+
86
119
  async def create_ledger(
87
120
  self, ik: Any, ledger: CreateLedgerInput, schema_key: Any, **kwargs: Any
88
121
  ) -> CreateLedger:
@@ -123,6 +156,33 @@ class Client(AsyncFragmentClient):
123
156
  data = self.get_data(response)
124
157
  return CreateLedger.model_validate(data)
125
158
 
159
+ async def delete_ledger(
160
+ self, ledger: LedgerMatchInput, **kwargs: Any
161
+ ) -> DeleteLedger:
162
+ query = gql(
163
+ """
164
+ mutation deleteLedger($ledger: LedgerMatchInput!) {
165
+ deleteLedger(ledger: $ledger) {
166
+ __typename
167
+ ... on DeleteLedgerResult {
168
+ success
169
+ }
170
+ ... on Error {
171
+ code
172
+ message
173
+ retryable
174
+ }
175
+ }
176
+ }
177
+ """
178
+ )
179
+ variables: Dict[str, object] = {"ledger": ledger}
180
+ response = await self.execute(
181
+ query=query, operation_name="deleteLedger", variables=variables, **kwargs
182
+ )
183
+ data = self.get_data(response)
184
+ return DeleteLedger.model_validate(data)
185
+
126
186
  async def add_ledger_entry(
127
187
  self,
128
188
  ik: Any,
@@ -183,6 +243,70 @@ class Client(AsyncFragmentClient):
183
243
  data = self.get_data(response)
184
244
  return AddLedgerEntry.model_validate(data)
185
245
 
246
+ async def reverse_ledger_entry(self, id: str, **kwargs: Any) -> ReverseLedgerEntry:
247
+ query = gql(
248
+ """
249
+ mutation reverseLedgerEntry($id: ID!) {
250
+ reverseLedgerEntry(id: $id) {
251
+ __typename
252
+ ... on ReverseLedgerEntryResult {
253
+ reversingLedgerEntry {
254
+ ik
255
+ id
256
+ created
257
+ posted
258
+ type
259
+ description
260
+ hidden
261
+ lines {
262
+ nodes {
263
+ id
264
+ amount
265
+ account {
266
+ path
267
+ }
268
+ }
269
+ }
270
+ }
271
+ reversedLedgerEntry {
272
+ ik
273
+ id
274
+ created
275
+ posted
276
+ type
277
+ description
278
+ hidden
279
+ lines {
280
+ nodes {
281
+ id
282
+ amount
283
+ account {
284
+ path
285
+ }
286
+ }
287
+ }
288
+ }
289
+ isIkReplay
290
+ }
291
+ ... on Error {
292
+ code
293
+ message
294
+ retryable
295
+ }
296
+ }
297
+ }
298
+ """
299
+ )
300
+ variables: Dict[str, object] = {"id": id}
301
+ response = await self.execute(
302
+ query=query,
303
+ operation_name="reverseLedgerEntry",
304
+ variables=variables,
305
+ **kwargs
306
+ )
307
+ data = self.get_data(response)
308
+ return ReverseLedgerEntry.model_validate(data)
309
+
186
310
  async def add_ledger_entry_runtime(
187
311
  self,
188
312
  ik: Any,
@@ -190,16 +314,17 @@ class Client(AsyncFragmentClient):
190
314
  ledger_ik: Any,
191
315
  lines: List[LedgerLineInput],
192
316
  posted: Optional[Any] = None,
317
+ parameters: Optional[Any] = None,
193
318
  tags: Optional[List[LedgerEntryTagInput]] = None,
194
319
  groups: Optional[List[LedgerEntryGroupInput]] = None,
195
320
  **kwargs: Any
196
321
  ) -> AddLedgerEntryRuntime:
197
322
  query = gql(
198
323
  """
199
- mutation addLedgerEntryRuntime($ik: SafeString!, $type: String!, $ledgerIk: SafeString!, $posted: DateTime, $lines: [LedgerLineInput!]!, $tags: [LedgerEntryTagInput!], $groups: [LedgerEntryGroupInput!]) {
324
+ mutation addLedgerEntryRuntime($ik: SafeString!, $type: String!, $ledgerIk: SafeString!, $posted: DateTime, $parameters: JSON, $lines: [LedgerLineInput!]!, $tags: [LedgerEntryTagInput!], $groups: [LedgerEntryGroupInput!]) {
200
325
  addLedgerEntry(
201
326
  ik: $ik
202
- entry: {type: $type, ledger: {ik: $ledgerIk}, posted: $posted, lines: $lines, tags: $tags, groups: $groups}
327
+ entry: {type: $type, ledger: {ik: $ledgerIk}, posted: $posted, lines: $lines, tags: $tags, groups: $groups, parameters: $parameters}
203
328
  ) {
204
329
  __typename
205
330
  ... on AddLedgerEntryResult {
@@ -233,6 +358,7 @@ class Client(AsyncFragmentClient):
233
358
  "type": type,
234
359
  "ledgerIk": ledger_ik,
235
360
  "posted": posted,
361
+ "parameters": parameters,
236
362
  "lines": lines,
237
363
  "tags": tags,
238
364
  "groups": groups,
@@ -307,15 +433,16 @@ class Client(AsyncFragmentClient):
307
433
  ledger_ik: Any,
308
434
  type: str,
309
435
  lines: List[LedgerLineInput],
436
+ parameters: Optional[Any] = None,
310
437
  tags: Optional[List[LedgerEntryTagInput]] = None,
311
438
  groups: Optional[List[LedgerEntryGroupInput]] = None,
312
439
  **kwargs: Any
313
440
  ) -> ReconcileTxRuntime:
314
441
  query = gql(
315
442
  """
316
- mutation reconcileTxRuntime($ledgerIk: SafeString!, $type: String!, $lines: [LedgerLineInput!]!, $tags: [LedgerEntryTagInput!], $groups: [LedgerEntryGroupInput!]) {
443
+ mutation reconcileTxRuntime($ledgerIk: SafeString!, $type: String!, $lines: [LedgerLineInput!]!, $parameters: JSON, $tags: [LedgerEntryTagInput!], $groups: [LedgerEntryGroupInput!]) {
317
444
  reconcileTx(
318
- entry: {ledger: {ik: $ledgerIk}, type: $type, lines: $lines, tags: $tags, groups: $groups}
445
+ entry: {ledger: {ik: $ledgerIk}, type: $type, lines: $lines, tags: $tags, groups: $groups, parameters: $parameters}
319
446
  ) {
320
447
  __typename
321
448
  ... on ReconcileTxResult {
@@ -349,6 +476,7 @@ class Client(AsyncFragmentClient):
349
476
  "ledgerIk": ledger_ik,
350
477
  "type": type,
351
478
  "lines": lines,
479
+ "parameters": parameters,
352
480
  "tags": tags,
353
481
  "groups": groups,
354
482
  }
@@ -564,6 +692,42 @@ class Client(AsyncFragmentClient):
564
692
  data = self.get_data(response)
565
693
  return SyncCustomTxs.model_validate(data)
566
694
 
695
+ async def delete_custom_txs(self, txs: List[str], **kwargs: Any) -> DeleteCustomTxs:
696
+ query = gql(
697
+ """
698
+ mutation deleteCustomTxs($txs: [ID!]!) {
699
+ deleteCustomTxs(txs: $txs) {
700
+ __typename
701
+ ... on DeleteCustomTxsResult {
702
+ txs {
703
+ tx {
704
+ linkId
705
+ id
706
+ externalId
707
+ externalAccountId
708
+ amount
709
+ description
710
+ posted
711
+ deletedAt
712
+ }
713
+ }
714
+ }
715
+ ... on Error {
716
+ code
717
+ message
718
+ retryable
719
+ }
720
+ }
721
+ }
722
+ """
723
+ )
724
+ variables: Dict[str, object] = {"txs": txs}
725
+ response = await self.execute(
726
+ query=query, operation_name="deleteCustomTxs", variables=variables, **kwargs
727
+ )
728
+ data = self.get_data(response)
729
+ return DeleteCustomTxs.model_validate(data)
730
+
567
731
  async def get_ledger(self, ik: Any, **kwargs: Any) -> GetLedger:
568
732
  query = gql(
569
733
  """
@@ -0,0 +1,49 @@
1
+ # Generated by fragment (with the help of ariadne-codegen)
2
+ # Source: queries/
3
+
4
+ from typing import Any, List, Literal, Optional, Union
5
+
6
+ from pydantic import Field
7
+
8
+ from .base_model import BaseModel
9
+
10
+
11
+ class DeleteCustomTxs(BaseModel):
12
+ delete_custom_txs: Union[
13
+ "DeleteCustomTxsDeleteCustomTxsBadRequestError",
14
+ "DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResult",
15
+ "DeleteCustomTxsDeleteCustomTxsInternalError",
16
+ ] = Field(alias="deleteCustomTxs", discriminator="typename__")
17
+
18
+
19
+ class DeleteCustomTxsDeleteCustomTxsBadRequestError(BaseModel):
20
+ typename__: Literal["BadRequestError"] = Field(alias="__typename")
21
+
22
+
23
+ class DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResult(BaseModel):
24
+ typename__: Literal["DeleteCustomTxsResult"] = Field(alias="__typename")
25
+ txs: List["DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxs"]
26
+
27
+
28
+ class DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxs(BaseModel):
29
+ tx: "DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxsTx"
30
+
31
+
32
+ class DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxsTx(BaseModel):
33
+ link_id: str = Field(alias="linkId")
34
+ id: str
35
+ external_id: str = Field(alias="externalId")
36
+ external_account_id: str = Field(alias="externalAccountId")
37
+ amount: Any
38
+ description: str
39
+ posted: Any
40
+ deleted_at: Optional[Any] = Field(alias="deletedAt")
41
+
42
+
43
+ class DeleteCustomTxsDeleteCustomTxsInternalError(BaseModel):
44
+ typename__: Literal["InternalError"] = Field(alias="__typename")
45
+
46
+
47
+ DeleteCustomTxs.model_rebuild()
48
+ DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResult.model_rebuild()
49
+ DeleteCustomTxsDeleteCustomTxsDeleteCustomTxsResultTxs.model_rebuild()
@@ -0,0 +1,32 @@
1
+ # Generated by fragment (with the help of ariadne-codegen)
2
+ # Source: queries/
3
+
4
+ from typing import Literal, Union
5
+
6
+ from pydantic import Field
7
+
8
+ from .base_model import BaseModel
9
+
10
+
11
+ class DeleteLedger(BaseModel):
12
+ delete_ledger: Union[
13
+ "DeleteLedgerDeleteLedgerBadRequestError",
14
+ "DeleteLedgerDeleteLedgerDeleteLedgerResult",
15
+ "DeleteLedgerDeleteLedgerInternalError",
16
+ ] = Field(alias="deleteLedger", discriminator="typename__")
17
+
18
+
19
+ class DeleteLedgerDeleteLedgerBadRequestError(BaseModel):
20
+ typename__: Literal["BadRequestError"] = Field(alias="__typename")
21
+
22
+
23
+ class DeleteLedgerDeleteLedgerDeleteLedgerResult(BaseModel):
24
+ typename__: Literal["DeleteLedgerResult"] = Field(alias="__typename")
25
+ success: bool
26
+
27
+
28
+ class DeleteLedgerDeleteLedgerInternalError(BaseModel):
29
+ typename__: Literal["InternalError"] = Field(alias="__typename")
30
+
31
+
32
+ DeleteLedger.model_rebuild()
@@ -0,0 +1,32 @@
1
+ # Generated by fragment (with the help of ariadne-codegen)
2
+ # Source: queries/
3
+
4
+ from typing import Literal, Union
5
+
6
+ from pydantic import Field
7
+
8
+ from .base_model import BaseModel
9
+
10
+
11
+ class DeleteSchema(BaseModel):
12
+ delete_schema: Union[
13
+ "DeleteSchemaDeleteSchemaBadRequestError",
14
+ "DeleteSchemaDeleteSchemaDeleteSchemaResult",
15
+ "DeleteSchemaDeleteSchemaInternalError",
16
+ ] = Field(alias="deleteSchema", discriminator="typename__")
17
+
18
+
19
+ class DeleteSchemaDeleteSchemaBadRequestError(BaseModel):
20
+ typename__: Literal["BadRequestError"] = Field(alias="__typename")
21
+
22
+
23
+ class DeleteSchemaDeleteSchemaDeleteSchemaResult(BaseModel):
24
+ typename__: Literal["DeleteSchemaResult"] = Field(alias="__typename")
25
+ success: bool
26
+
27
+
28
+ class DeleteSchemaDeleteSchemaInternalError(BaseModel):
29
+ typename__: Literal["InternalError"] = Field(alias="__typename")
30
+
31
+
32
+ DeleteSchema.model_rebuild()
@@ -204,6 +204,12 @@ class ExternalTxSource(str, Enum):
204
204
  increase = "increase"
205
205
 
206
206
 
207
+ class Granularity(str, Enum):
208
+ daily = "daily"
209
+ hourly = "hourly"
210
+ monthly = "monthly"
211
+
212
+
207
213
  class IncreaseEnv(str, Enum):
208
214
  production = "production"
209
215
  sandbox = "sandbox"
@@ -136,6 +136,15 @@ class GroupBalanceAccountFilter(BaseModel):
136
136
  path: Optional["StringMatchFilter"] = None
137
137
 
138
138
 
139
+ class GroupFilter(BaseModel):
140
+ key_in: Optional[List[Any]] = Field(alias="keyIn", default=None)
141
+ not_: Optional["GroupNotFilter"] = Field(alias="not", default=None)
142
+
143
+
144
+ class GroupNotFilter(BaseModel):
145
+ key_in: Optional[List[Any]] = Field(alias="keyIn", default=None)
146
+
147
+
139
148
  class Int96ConditionInput(BaseModel):
140
149
  eq: Optional[Any] = None
141
150
  gte: Optional[Any] = None
@@ -202,10 +211,14 @@ class LedgerAccountsFilterSet(BaseModel):
202
211
 
203
212
  class LedgerEntriesFilterSet(BaseModel):
204
213
  date: Optional["DateFilter"] = None
214
+ group: Optional["GroupFilter"] = None
215
+ is_reversal: Optional[bool] = Field(alias="isReversal", default=None)
216
+ is_reversed: Optional[bool] = Field(alias="isReversed", default=None)
205
217
  ledger_entry: Optional["LedgerEntryFilter"] = Field(
206
218
  alias="ledgerEntry", default=None
207
219
  )
208
220
  posted: Optional["DateTimeFilter"] = None
221
+ show_hidden: Optional[bool] = Field(alias="showHidden", default=None)
209
222
  tag: Optional["TagFilter"] = None
210
223
  type: Optional["StringFilter"] = None
211
224
 
@@ -242,6 +255,7 @@ class LedgerEntryGroupMatchInput(BaseModel):
242
255
  class LedgerEntryGroupsFilterSet(BaseModel):
243
256
  created: Optional["DateTimeFilter"] = None
244
257
  key: Optional["StringFilter"] = None
258
+ value: Optional["StringFilter"] = None
245
259
 
246
260
 
247
261
  class LedgerEntryInput(BaseModel):
@@ -254,6 +268,7 @@ class LedgerEntryInput(BaseModel):
254
268
  posted: Optional[Any] = None
255
269
  tags: Optional[List["LedgerEntryTagInput"]] = None
256
270
  type: Optional[str] = None
271
+ version: Optional[int] = None
257
272
 
258
273
 
259
274
  class LedgerEntryMatchInput(BaseModel):
@@ -283,8 +298,11 @@ class LedgerLineMatchInput(BaseModel):
283
298
  class LedgerLinesFilterSet(BaseModel):
284
299
  created: Optional["DateTimeFilter"] = None
285
300
  date: Optional["DateFilter"] = None
301
+ is_reversal: Optional[bool] = Field(alias="isReversal", default=None)
302
+ is_reversed: Optional[bool] = Field(alias="isReversed", default=None)
286
303
  key: Optional["StringFilter"] = None
287
304
  posted: Optional["DateTimeFilter"] = None
305
+ show_hidden: Optional[bool] = Field(alias="showHidden", default=None)
288
306
  type: Optional["TxTypeFilter"] = None
289
307
 
290
308
 
@@ -406,6 +424,7 @@ class SchemaLedgerEntryInput(BaseModel):
406
424
  parameters: Optional[Any] = None
407
425
  tags: Optional[List["SchemaLedgerEntryTagInput"]] = None
408
426
  type: Any
427
+ version: Optional[int] = None
409
428
 
410
429
 
411
430
  class SchemaLedgerEntryTagInput(BaseModel):
@@ -435,15 +454,19 @@ class SchemaTxMatchInput(BaseModel):
435
454
  class StringFilter(BaseModel):
436
455
  equal_to: Optional[str] = Field(alias="equalTo", default=None)
437
456
  in_: Optional[List[str]] = Field(alias="in", default=None)
457
+ not_equal_to: Optional[str] = Field(alias="notEqualTo", default=None)
458
+ not_in: Optional[List[str]] = Field(alias="notIn", default=None)
438
459
 
439
460
 
440
461
  class StringMatchFilter(BaseModel):
462
+ contains: Optional[str] = None
441
463
  equal_to: Optional[str] = Field(alias="equalTo", default=None)
442
464
  in_: Optional[List[str]] = Field(alias="in", default=None)
443
465
  matches: Optional[str] = None
444
466
 
445
467
 
446
468
  class TagFilter(BaseModel):
469
+ contains: Optional["TagMatchInput"] = None
447
470
  equal_to: Optional["TagMatchInput"] = Field(alias="equalTo", default=None)
448
471
  in_: Optional[List["TagMatchInput"]] = Field(alias="in", default=None)
449
472