ergon-framework-python 0.2.3__py3-none-any.whl → 0.2.4__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.
- ergon/__init__.py +1 -1
- ergon/connector/__init__.py +54 -0
- ergon/connector/outlook/__init__.py +67 -0
- ergon/connector/outlook/async_connector.py +198 -0
- ergon/connector/outlook/async_service.py +168 -0
- ergon/connector/outlook/connector.py +198 -0
- ergon/connector/outlook/models.py +315 -0
- ergon/connector/outlook/service.py +410 -0
- ergon/connector/outlook/utils.py +118 -0
- ergon/task/mixins/consumer.py +33 -21
- {ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/METADATA +47 -3
- {ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/RECORD +16 -9
- {ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/WHEEL +0 -0
- {ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/entry_points.txt +0 -0
- {ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/licenses/LICENSE +0 -0
- {ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ergon-framework-python
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Ergon internal task-oriented project bootstrapper
|
|
5
5
|
Author-email: Ergondata Technologies <anza.vossos@protonmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -31,6 +31,7 @@ Requires-Dist: asyncpg>=0.29.0; extra == "all"
|
|
|
31
31
|
Requires-Dist: boto3>=1.35.0; extra == "all"
|
|
32
32
|
Requires-Dist: ergon-platform-sdk>=0.2.0; extra == "all"
|
|
33
33
|
Requires-Dist: httpx>=0.28.0; extra == "all"
|
|
34
|
+
Requires-Dist: msal>=1.37.0; extra == "all"
|
|
34
35
|
Requires-Dist: nylas>=6.0.0; extra == "all"
|
|
35
36
|
Requires-Dist: openpyxl>=3.1.5; extra == "all"
|
|
36
37
|
Requires-Dist: pika>=1.3.0; extra == "all"
|
|
@@ -42,6 +43,9 @@ Provides-Extra: excel
|
|
|
42
43
|
Requires-Dist: openpyxl>=3.1.5; extra == "excel"
|
|
43
44
|
Provides-Extra: nylas
|
|
44
45
|
Requires-Dist: nylas>=6.0.0; extra == "nylas"
|
|
46
|
+
Provides-Extra: outlook
|
|
47
|
+
Requires-Dist: msal>=1.37.0; extra == "outlook"
|
|
48
|
+
Requires-Dist: requests>=2.32.5; extra == "outlook"
|
|
45
49
|
Provides-Extra: pipefy
|
|
46
50
|
Requires-Dist: httpx>=0.28.0; extra == "pipefy"
|
|
47
51
|
Requires-Dist: requests>=2.32.5; extra == "pipefy"
|
|
@@ -77,13 +81,53 @@ pull in client libraries that your application does not use:
|
|
|
77
81
|
```bash
|
|
78
82
|
pip install 'ergon-framework-python[rabbitmq]'
|
|
79
83
|
pip install 'ergon-framework-python[sqs,postgres]'
|
|
84
|
+
pip install 'ergon-framework-python[outlook]'
|
|
80
85
|
pip install 'ergon-framework-python[all]'
|
|
81
86
|
```
|
|
82
87
|
|
|
83
88
|
Available extras are `rabbitmq`, `sqs`, `postgres`, `pipefy`, `excel`,
|
|
84
|
-
`ergon-platform`, and `
|
|
89
|
+
`ergon-platform`, `nylas`, and `outlook`.
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
### Outlook / Microsoft Graph
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install 'ergon-framework-python[outlook]'
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The Outlook connector talks to Microsoft Graph with Entra **application**
|
|
98
|
+
credentials. Consuming messages and attachments needs `Mail.Read`; marking,
|
|
99
|
+
categorizing, moving, and deleting need `Mail.ReadWrite`; send, reply, and
|
|
100
|
+
forward need `Mail.Send`. Graph `$filter` and `$search` cannot be combined.
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
from ergon.connector.outlook import (
|
|
104
|
+
AsyncOutlookGraphConnector,
|
|
105
|
+
OutlookAckActionConfig,
|
|
106
|
+
OutlookConsumerConfig,
|
|
107
|
+
OutlookGraphClient,
|
|
108
|
+
OutlookMessageFilter,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
client = OutlookGraphClient(
|
|
112
|
+
tenant_id="...",
|
|
113
|
+
client_id="...",
|
|
114
|
+
client_secret="...",
|
|
115
|
+
user_email="mailbox@example.com",
|
|
116
|
+
)
|
|
117
|
+
consumer = OutlookConsumerConfig(
|
|
118
|
+
folder_id="Inbox",
|
|
119
|
+
filter=OutlookMessageFilter(unread_only=True, has_attachments=True),
|
|
120
|
+
download_attachments=True,
|
|
121
|
+
ack_config=OutlookAckActionConfig(mark_as_read=True),
|
|
122
|
+
)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Runnable example: [examples/outlook](https://github.com/danzanellovossos/ergon-framework/tree/main/sdks/python/examples/outlook).
|
|
126
|
+
Module reference: [Outlook connector README](https://github.com/danzanellovossos/ergon-framework/blob/main/sdks/python/src/ergon/connector/outlook/README.md).
|
|
127
|
+
|
|
128
|
+
### Local development
|
|
129
|
+
|
|
130
|
+
Install in editable mode:
|
|
87
131
|
|
|
88
132
|
```bash
|
|
89
133
|
pip install -e /path/to/ergon-framework/sdks/python
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
ergon/__init__.py,sha256=
|
|
1
|
+
ergon/__init__.py,sha256=YxjNiBz68BV9DIN53Yy5zCKMVcca7VJk8A_8_Z184M4,218
|
|
2
2
|
ergon/cli.py,sha256=CF8PvOjIguR18a657aEBEyhFXUoSVtSRVXv5PfnuWtA,6021
|
|
3
3
|
ergon/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
ergon/bootstrap/src/__project__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -22,7 +22,7 @@ ergon/bootstrap/src/__project__/tasks/example_task/exceptions.py,sha256=LTWwquhM
|
|
|
22
22
|
ergon/bootstrap/src/__project__/tasks/example_task/helpers.py,sha256=uR_XZEtxR6JzbJloi7OhJb77f7Wc6pnOe1W3CHvl8vE,122
|
|
23
23
|
ergon/bootstrap/src/__project__/tasks/example_task/schemas.py,sha256=3_qANKlJIQ90gaRNrDuBAM42UNzfDbLI4-F0kkjjWHc,155
|
|
24
24
|
ergon/bootstrap/src/__project__/tasks/example_task/task.py,sha256=XnmVg-B0N8Ld48FMLJgGfTTJLjmpy5Nog_Gaj1ruVEQ,36
|
|
25
|
-
ergon/connector/__init__.py,sha256=
|
|
25
|
+
ergon/connector/__init__.py,sha256=zqKuXsx1nO7Dh2-Dei-GjRo2pre__PwmSUq9JpW2s-w,8396
|
|
26
26
|
ergon/connector/_lazy.py,sha256=ANsKY3JTtmVo8Z8p3ey3LwkQGVVYITKO1eEK66IvA3U,1690
|
|
27
27
|
ergon/connector/connector.py,sha256=jaF1iXKALE1IHHfcP54mTD5mvj-wzk5iNaLo96IOcDI,3944
|
|
28
28
|
ergon/connector/transaction.py,sha256=LMGEFfisdjGGCPrWps3nYJ-SRBKa-P2pOFmwbSgDN-E,291
|
|
@@ -63,6 +63,13 @@ ergon/connector/nylas/connector.py,sha256=4mIRdaQ6YH6j1gt4htAVeXVoKvZMYses6M3d2G
|
|
|
63
63
|
ergon/connector/nylas/models.py,sha256=dqPG5xhM5ZBFKN1hPW0US7lDztSaV-CZwwIherrdDkA,10230
|
|
64
64
|
ergon/connector/nylas/service.py,sha256=kj0zY0cvBWkqlne_gZyw4fFDDiIJ5ACB4PX7vYksE3Q,11525
|
|
65
65
|
ergon/connector/nylas/utils.py,sha256=jP-_hslfSWQgS4Sh5FPOKKLnX-n68m38mkuHOcRVaFk,4715
|
|
66
|
+
ergon/connector/outlook/__init__.py,sha256=lYLgvXtKTv-jxMyJaeGhd6MO_FWnd0N-1nxRGOmXLXs,1737
|
|
67
|
+
ergon/connector/outlook/async_connector.py,sha256=aV60SXsFM9rDmbNItdnvpTNYqFy0iqqbvaxXfO9sOGM,7545
|
|
68
|
+
ergon/connector/outlook/async_service.py,sha256=uC3ldsS8d-yN5inY6qA5-NOyWRaeAc3mxcX-hFslz6M,5618
|
|
69
|
+
ergon/connector/outlook/connector.py,sha256=jX8kGV6glQ1z5cF9Spg5V1fXlYHaslcT7Q9xpuWEJlE,7190
|
|
70
|
+
ergon/connector/outlook/models.py,sha256=zIww_QBqSSnkWv3c13pdtMr97-LwQZn1S4eD5OWXRS0,11219
|
|
71
|
+
ergon/connector/outlook/service.py,sha256=TdkTroNeQxZ-Sh5mcETRFkqb3OGEZuAKJtQfXCcgTNk,15695
|
|
72
|
+
ergon/connector/outlook/utils.py,sha256=--IXPNJAG-Bxe4ATFaT0aAKMznMazAOlMpjRMke3KMQ,4102
|
|
66
73
|
ergon/connector/pipefy/__init__.py,sha256=FI9OfHDa_914NC2s-SMjNYwZj6tpgBve7TER9SE9zo4,1119
|
|
67
74
|
ergon/connector/pipefy/async_connector.py,sha256=Ls4fRcTD21gWbeSj32WpSID6b5ZYTNBjWN7kNw-9Ey0,1739
|
|
68
75
|
ergon/connector/pipefy/async_service.py,sha256=Kpd-LVTet3Ve6z85pUWZ2uUWFpgTaF74znbKFzmXAMA,26298
|
|
@@ -99,7 +106,7 @@ ergon/task/policies.py,sha256=3x1SV-yt3FXNgmnATdQdpRtsDtlskjx582SpbC6UH6A,7358
|
|
|
99
106
|
ergon/task/runner.py,sha256=xUaMSO6V_iOq6QJdiyW1IA5kfWuwQjh1IJl6HUh06hY,20344
|
|
100
107
|
ergon/task/utils.py,sha256=OmlP2AhLM32V8O9OMky6DdSvxwmMNn9x2LTguf0y-M0,2501
|
|
101
108
|
ergon/task/mixins/__init__.py,sha256=6A8vNgdjaQYNJvymWNF-kBN2oTaQBYRLctS3Sq1w_-Y,320
|
|
102
|
-
ergon/task/mixins/consumer.py,sha256=
|
|
109
|
+
ergon/task/mixins/consumer.py,sha256=LrCSbekQos5GU0xIY3F5_jUd69L09JV6FY_hMy2eol4,52467
|
|
103
110
|
ergon/task/mixins/metrics.py,sha256=4bavwo8koWiN5ADD8t5qd2BVeVcgxo6ddzq-xOybeTg,13159
|
|
104
111
|
ergon/task/mixins/producer.py,sha256=xENTZdZ7t0dpw5YsreQT20iTycSaj1EA4ny-60u-SWM,20427
|
|
105
112
|
ergon/telemetry/__init__.py,sha256=8waeIAHEx6tMXWfw-zOEKgjrg7V8S1poG070MdAmi_8,100
|
|
@@ -109,9 +116,9 @@ ergon/telemetry/metrics.py,sha256=0T_CuNw9P5AG1U9k1-bNp1g7McyiNLUIt_zKyLOtrnA,28
|
|
|
109
116
|
ergon/telemetry/tracing.py,sha256=_ktiZWAgB1DU-uN91Mzr0iYNXxbCN21LnKiRo5SOJxY,4454
|
|
110
117
|
ergon/utils/__init__.py,sha256=M0_VCjMN7jvSPlRZLZHeFKTHAl1zu3BnAhjrzJjDfiI,57
|
|
111
118
|
ergon/utils/env.py,sha256=lji4xENvfHqg2GTGnzG95VKpxxM4f3DHIKKP61xQG08,621
|
|
112
|
-
ergon_framework_python-0.2.
|
|
113
|
-
ergon_framework_python-0.2.
|
|
114
|
-
ergon_framework_python-0.2.
|
|
115
|
-
ergon_framework_python-0.2.
|
|
116
|
-
ergon_framework_python-0.2.
|
|
117
|
-
ergon_framework_python-0.2.
|
|
119
|
+
ergon_framework_python-0.2.4.dist-info/licenses/LICENSE,sha256=bWCIhHzaadz_ecLdCdtwyMafeQ17s2d7_FSSuSuEcDs,1079
|
|
120
|
+
ergon_framework_python-0.2.4.dist-info/METADATA,sha256=Mt-c5h17mfvb-JJDgqNfQKXg2zeIYBBxUh9XrsKrt2A,18371
|
|
121
|
+
ergon_framework_python-0.2.4.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
122
|
+
ergon_framework_python-0.2.4.dist-info/entry_points.txt,sha256=reZ934txb5OrtcNBgTGqCsXa1biUDQWubD2a9fGZynE,42
|
|
123
|
+
ergon_framework_python-0.2.4.dist-info/top_level.txt,sha256=KSPt6N7RzsjU7PRAalWQ9Cul7YTUxbo84yAJ-y2vLm8,6
|
|
124
|
+
ergon_framework_python-0.2.4.dist-info/RECORD,,
|
|
File without changes
|
{ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{ergon_framework_python-0.2.3.dist-info → ergon_framework_python-0.2.4.dist-info}/top_level.txt
RENAMED
|
File without changes
|