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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ergon-framework-python
3
- Version: 0.2.3
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 `nylas`.
89
+ `ergon-platform`, `nylas`, and `outlook`.
85
90
 
86
- For local development, install in editable mode:
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=0lPvQj_4HxSE_otQ5LIi89Es9DQvf_kDw-YjDSt8cOs,218
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=qBgpM6yArVb-ns7l09RN6hYU84Rxx1_3aD4ZZiCFTRE,6648
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=VEnt-BYh09HuBg4YohzgEyv42WScnXYWd1b6UMTnb1k,52278
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.3.dist-info/licenses/LICENSE,sha256=bWCIhHzaadz_ecLdCdtwyMafeQ17s2d7_FSSuSuEcDs,1079
113
- ergon_framework_python-0.2.3.dist-info/METADATA,sha256=sdHxy70TKNbvaEfY5zCuNaQTEG_j77DyfX3IqxmdnMA,16914
114
- ergon_framework_python-0.2.3.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
115
- ergon_framework_python-0.2.3.dist-info/entry_points.txt,sha256=reZ934txb5OrtcNBgTGqCsXa1biUDQWubD2a9fGZynE,42
116
- ergon_framework_python-0.2.3.dist-info/top_level.txt,sha256=KSPt6N7RzsjU7PRAalWQ9Cul7YTUxbo84yAJ-y2vLm8,6
117
- ergon_framework_python-0.2.3.dist-info/RECORD,,
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,,