@backtomyfuture/exchange-cli-darwin-arm64 0.1.8 → 0.1.10

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 (243) hide show
  1. package/bin/_internal/Python +0 -0
  2. package/bin/_internal/Python.framework/Python +0 -0
  3. package/bin/_internal/Python.framework/Resources/Info.plist +3 -3
  4. package/bin/_internal/Python.framework/Versions/3.12/Python +0 -0
  5. package/bin/_internal/Python.framework/Versions/{3.14 → 3.12}/Resources/Info.plist +3 -3
  6. package/bin/_internal/Python.framework/Versions/Current/Python +0 -0
  7. package/bin/_internal/Python.framework/Versions/Current/Resources/Info.plist +3 -3
  8. package/bin/_internal/_cffi_backend.cpython-312-darwin.so +0 -0
  9. package/bin/_internal/ada92cb5d92a588d1b93__mypyc.cpython-312-darwin.so +0 -0
  10. package/bin/_internal/base_library.zip +0 -0
  11. package/bin/_internal/certifi/cacert.pem +0 -631
  12. package/bin/_internal/charset_normalizer/{md.cpython-314-darwin.so → cd.cpython-312-darwin.so} +0 -0
  13. package/bin/_internal/charset_normalizer/{cd.cpython-314-darwin.so → md.cpython-312-darwin.so} +0 -0
  14. package/bin/_internal/{click-8.3.2.dist-info → click-8.4.2.dist-info}/METADATA +1 -1
  15. package/bin/_internal/click-8.4.2.dist-info/RECORD +40 -0
  16. package/bin/_internal/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  17. package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/METADATA +7 -36
  18. package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/RECORD +137 -122
  19. package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/WHEEL +1 -1
  20. package/bin/_internal/cryptography-48.0.1.dist-info/sboms/cryptography-rust.cyclonedx.json +1362 -0
  21. package/bin/_internal/cryptography-48.0.1.dist-info/sboms/sbom.json +43 -0
  22. package/bin/_internal/exchangelib/__init__.py +120 -0
  23. package/bin/_internal/exchangelib/account.py +896 -0
  24. package/bin/_internal/exchangelib/attachments.py +268 -0
  25. package/bin/_internal/exchangelib/autodiscover/__init__.py +24 -0
  26. package/bin/_internal/exchangelib/autodiscover/cache.py +150 -0
  27. package/bin/_internal/exchangelib/autodiscover/discovery.py +491 -0
  28. package/bin/_internal/exchangelib/autodiscover/protocol.py +58 -0
  29. package/bin/_internal/exchangelib/configuration.py +106 -0
  30. package/bin/_internal/exchangelib/credentials.py +319 -0
  31. package/bin/_internal/exchangelib/errors.py +1710 -0
  32. package/bin/_internal/exchangelib/ewsdatetime.py +309 -0
  33. package/bin/_internal/exchangelib/extended_properties.py +311 -0
  34. package/bin/_internal/exchangelib/fields.py +1842 -0
  35. package/bin/_internal/exchangelib/folders/__init__.py +249 -0
  36. package/bin/_internal/exchangelib/folders/base.py +954 -0
  37. package/bin/_internal/exchangelib/folders/collections.py +576 -0
  38. package/bin/_internal/exchangelib/folders/known_folders.py +856 -0
  39. package/bin/_internal/exchangelib/folders/queryset.py +187 -0
  40. package/bin/_internal/exchangelib/folders/roots.py +390 -0
  41. package/bin/_internal/exchangelib/indexed_properties.py +96 -0
  42. package/bin/_internal/exchangelib/items/__init__.py +147 -0
  43. package/bin/_internal/exchangelib/items/base.py +241 -0
  44. package/bin/_internal/exchangelib/items/calendar_item.py +466 -0
  45. package/bin/_internal/exchangelib/items/contact.py +263 -0
  46. package/bin/_internal/exchangelib/items/item.py +413 -0
  47. package/bin/_internal/exchangelib/items/message.py +201 -0
  48. package/bin/_internal/exchangelib/items/post.py +38 -0
  49. package/bin/_internal/exchangelib/items/task.py +139 -0
  50. package/bin/_internal/exchangelib/properties.py +2364 -0
  51. package/bin/_internal/exchangelib/protocol.py +823 -0
  52. package/bin/_internal/exchangelib/queryset.py +691 -0
  53. package/bin/_internal/exchangelib/recurrence.py +349 -0
  54. package/bin/_internal/exchangelib/restriction.py +568 -0
  55. package/bin/_internal/exchangelib/services/__init__.py +117 -0
  56. package/bin/_internal/exchangelib/services/archive_item.py +33 -0
  57. package/bin/_internal/exchangelib/services/common.py +983 -0
  58. package/bin/_internal/exchangelib/services/convert_id.py +45 -0
  59. package/bin/_internal/exchangelib/services/copy_item.py +7 -0
  60. package/bin/_internal/exchangelib/services/create_attachment.py +34 -0
  61. package/bin/_internal/exchangelib/services/create_folder.py +45 -0
  62. package/bin/_internal/exchangelib/services/create_item.py +97 -0
  63. package/bin/_internal/exchangelib/services/create_user_configuration.py +19 -0
  64. package/bin/_internal/exchangelib/services/delete_attachment.py +28 -0
  65. package/bin/_internal/exchangelib/services/delete_folder.py +21 -0
  66. package/bin/_internal/exchangelib/services/delete_item.py +51 -0
  67. package/bin/_internal/exchangelib/services/delete_user_configuration.py +19 -0
  68. package/bin/_internal/exchangelib/services/empty_folder.py +25 -0
  69. package/bin/_internal/exchangelib/services/expand_dl.py +21 -0
  70. package/bin/_internal/exchangelib/services/export_items.py +27 -0
  71. package/bin/_internal/exchangelib/services/find_folder.py +80 -0
  72. package/bin/_internal/exchangelib/services/find_item.py +112 -0
  73. package/bin/_internal/exchangelib/services/find_people.py +106 -0
  74. package/bin/_internal/exchangelib/services/get_attachment.py +117 -0
  75. package/bin/_internal/exchangelib/services/get_delegate.py +45 -0
  76. package/bin/_internal/exchangelib/services/get_events.py +39 -0
  77. package/bin/_internal/exchangelib/services/get_folder.py +65 -0
  78. package/bin/_internal/exchangelib/services/get_item.py +41 -0
  79. package/bin/_internal/exchangelib/services/get_mail_tips.py +43 -0
  80. package/bin/_internal/exchangelib/services/get_persona.py +31 -0
  81. package/bin/_internal/exchangelib/services/get_room_lists.py +21 -0
  82. package/bin/_internal/exchangelib/services/get_rooms.py +21 -0
  83. package/bin/_internal/exchangelib/services/get_searchable_mailboxes.py +48 -0
  84. package/bin/_internal/exchangelib/services/get_server_time_zones.py +39 -0
  85. package/bin/_internal/exchangelib/services/get_streaming_events.py +102 -0
  86. package/bin/_internal/exchangelib/services/get_user_availability.py +67 -0
  87. package/bin/_internal/exchangelib/services/get_user_configuration.py +43 -0
  88. package/bin/_internal/exchangelib/services/get_user_oof_settings.py +40 -0
  89. package/bin/_internal/exchangelib/services/get_user_settings.py +87 -0
  90. package/bin/_internal/exchangelib/services/inbox_rules.py +104 -0
  91. package/bin/_internal/exchangelib/services/mark_as_junk.py +27 -0
  92. package/bin/_internal/exchangelib/services/move_folder.py +27 -0
  93. package/bin/_internal/exchangelib/services/move_item.py +28 -0
  94. package/bin/_internal/exchangelib/services/resolve_names.py +104 -0
  95. package/bin/_internal/exchangelib/services/send_item.py +26 -0
  96. package/bin/_internal/exchangelib/services/send_notification.py +43 -0
  97. package/bin/_internal/exchangelib/services/set_user_oof_settings.py +34 -0
  98. package/bin/_internal/exchangelib/services/subscribe.py +125 -0
  99. package/bin/_internal/exchangelib/services/sync_folder_hierarchy.py +95 -0
  100. package/bin/_internal/exchangelib/services/sync_folder_items.py +77 -0
  101. package/bin/_internal/exchangelib/services/unsubscribe.py +21 -0
  102. package/bin/_internal/exchangelib/services/update_folder.py +158 -0
  103. package/bin/_internal/exchangelib/services/update_item.py +113 -0
  104. package/bin/_internal/exchangelib/services/update_user_configuration.py +17 -0
  105. package/bin/_internal/exchangelib/services/upload_items.py +47 -0
  106. package/bin/_internal/exchangelib/settings.py +88 -0
  107. package/bin/_internal/exchangelib/transport.py +214 -0
  108. package/bin/_internal/exchangelib/util.py +894 -0
  109. package/bin/_internal/exchangelib/version.py +320 -0
  110. package/bin/_internal/exchangelib/winzone.py +662 -0
  111. package/bin/_internal/exchangelib-5.6.0.dist-info/INSTALLER +1 -0
  112. package/bin/_internal/exchangelib-5.6.0.dist-info/METADATA +77 -0
  113. package/bin/_internal/exchangelib-5.6.0.dist-info/RECORD +184 -0
  114. package/bin/_internal/exchangelib-5.6.0.dist-info/licenses/LICENSE +21 -0
  115. package/bin/_internal/exchangelib-5.6.0.dist-info/top_level.txt +1 -0
  116. package/bin/_internal/libcrypto.3.dylib +0 -0
  117. package/bin/_internal/libssl.3.dylib +0 -0
  118. package/bin/_internal/lxml/_elementpath.cpython-312-darwin.so +0 -0
  119. package/bin/_internal/lxml/builder.cpython-312-darwin.so +0 -0
  120. package/bin/_internal/lxml/{etree.cpython-314-darwin.so → etree.cpython-312-darwin.so} +0 -0
  121. package/bin/_internal/lxml/html/_difflib.cpython-312-darwin.so +0 -0
  122. package/bin/_internal/lxml/html/diff.cpython-312-darwin.so +0 -0
  123. package/bin/_internal/lxml/{objectify.cpython-314-darwin.so → objectify.cpython-312-darwin.so} +0 -0
  124. package/bin/_internal/lxml/sax.cpython-312-darwin.so +0 -0
  125. package/bin/_internal/python3.12/lib-dynload/_asyncio.cpython-312-darwin.so +0 -0
  126. package/bin/_internal/{python3.14/lib-dynload/termios.cpython-314-darwin.so → python3.12/lib-dynload/_bisect.cpython-312-darwin.so} +0 -0
  127. package/bin/_internal/{python3.14/lib-dynload/_sha2.cpython-314-darwin.so → python3.12/lib-dynload/_blake2.cpython-312-darwin.so} +0 -0
  128. package/bin/_internal/{python3.14/lib-dynload/_bz2.cpython-314-darwin.so → python3.12/lib-dynload/_bz2.cpython-312-darwin.so} +0 -0
  129. package/bin/_internal/{python3.14/lib-dynload/_codecs_cn.cpython-314-darwin.so → python3.12/lib-dynload/_codecs_cn.cpython-312-darwin.so} +0 -0
  130. package/bin/_internal/{python3.14/lib-dynload/_codecs_hk.cpython-314-darwin.so → python3.12/lib-dynload/_codecs_hk.cpython-312-darwin.so} +0 -0
  131. package/bin/_internal/{python3.14/lib-dynload/_interpqueues.cpython-314-darwin.so → python3.12/lib-dynload/_codecs_iso2022.cpython-312-darwin.so} +0 -0
  132. package/bin/_internal/{python3.14/lib-dynload/_codecs_jp.cpython-314-darwin.so → python3.12/lib-dynload/_codecs_jp.cpython-312-darwin.so} +0 -0
  133. package/bin/_internal/{python3.14/lib-dynload/_codecs_kr.cpython-314-darwin.so → python3.12/lib-dynload/_codecs_kr.cpython-312-darwin.so} +0 -0
  134. package/bin/_internal/{python3.14/lib-dynload/_codecs_tw.cpython-314-darwin.so → python3.12/lib-dynload/_codecs_tw.cpython-312-darwin.so} +0 -0
  135. package/bin/_internal/{python3.14/lib-dynload/_statistics.cpython-314-darwin.so → python3.12/lib-dynload/_contextvars.cpython-312-darwin.so} +0 -0
  136. package/bin/_internal/{python3.14/lib-dynload/_csv.cpython-314-darwin.so → python3.12/lib-dynload/_csv.cpython-312-darwin.so} +0 -0
  137. package/bin/_internal/python3.12/lib-dynload/_ctypes.cpython-312-darwin.so +0 -0
  138. package/bin/_internal/python3.12/lib-dynload/_datetime.cpython-312-darwin.so +0 -0
  139. package/bin/_internal/{python3.14/lib-dynload/_dbm.cpython-314-darwin.so → python3.12/lib-dynload/_dbm.cpython-312-darwin.so} +0 -0
  140. package/bin/_internal/python3.12/lib-dynload/_decimal.cpython-312-darwin.so +0 -0
  141. package/bin/_internal/python3.12/lib-dynload/_elementtree.cpython-312-darwin.so +0 -0
  142. package/bin/_internal/python3.12/lib-dynload/_hashlib.cpython-312-darwin.so +0 -0
  143. package/bin/_internal/{python3.14/lib-dynload/_heapq.cpython-314-darwin.so → python3.12/lib-dynload/_heapq.cpython-312-darwin.so} +0 -0
  144. package/bin/_internal/python3.12/lib-dynload/_json.cpython-312-darwin.so +0 -0
  145. package/bin/_internal/python3.12/lib-dynload/_lzma.cpython-312-darwin.so +0 -0
  146. package/bin/_internal/{python3.14/lib-dynload/_md5.cpython-314-darwin.so → python3.12/lib-dynload/_md5.cpython-312-darwin.so} +0 -0
  147. package/bin/_internal/python3.12/lib-dynload/_multibytecodec.cpython-312-darwin.so +0 -0
  148. package/bin/_internal/{python3.14/lib-dynload/_multiprocessing.cpython-314-darwin.so → python3.12/lib-dynload/_multiprocessing.cpython-312-darwin.so} +0 -0
  149. package/bin/_internal/python3.12/lib-dynload/_opcode.cpython-312-darwin.so +0 -0
  150. package/bin/_internal/python3.12/lib-dynload/_pickle.cpython-312-darwin.so +0 -0
  151. package/bin/_internal/{python3.14/lib-dynload/_bisect.cpython-314-darwin.so → python3.12/lib-dynload/_posixshmem.cpython-312-darwin.so} +0 -0
  152. package/bin/_internal/{python3.14/lib-dynload/_posixsubprocess.cpython-314-darwin.so → python3.12/lib-dynload/_posixsubprocess.cpython-312-darwin.so} +0 -0
  153. package/bin/_internal/{python3.14/lib-dynload/_queue.cpython-314-darwin.so → python3.12/lib-dynload/_queue.cpython-312-darwin.so} +0 -0
  154. package/bin/_internal/{python3.14/lib-dynload/_random.cpython-314-darwin.so → python3.12/lib-dynload/_random.cpython-312-darwin.so} +0 -0
  155. package/bin/_internal/{python3.14/lib-dynload/_scproxy.cpython-314-darwin.so → python3.12/lib-dynload/_scproxy.cpython-312-darwin.so} +0 -0
  156. package/bin/_internal/{python3.14/lib-dynload/_sha1.cpython-314-darwin.so → python3.12/lib-dynload/_sha1.cpython-312-darwin.so} +0 -0
  157. package/bin/_internal/python3.12/lib-dynload/_sha2.cpython-312-darwin.so +0 -0
  158. package/bin/_internal/{python3.14/lib-dynload/_blake2.cpython-314-darwin.so → python3.12/lib-dynload/_sha3.cpython-312-darwin.so} +0 -0
  159. package/bin/_internal/python3.12/lib-dynload/_socket.cpython-312-darwin.so +0 -0
  160. package/bin/_internal/python3.12/lib-dynload/_ssl.cpython-312-darwin.so +0 -0
  161. package/bin/_internal/{python3.14/lib-dynload/_posixshmem.cpython-314-darwin.so → python3.12/lib-dynload/_statistics.cpython-312-darwin.so} +0 -0
  162. package/bin/_internal/python3.12/lib-dynload/_struct.cpython-312-darwin.so +0 -0
  163. package/bin/_internal/{python3.14/lib-dynload/_uuid.cpython-314-darwin.so → python3.12/lib-dynload/_uuid.cpython-312-darwin.so} +0 -0
  164. package/bin/_internal/{python3.14/lib-dynload/_zoneinfo.cpython-314-darwin.so → python3.12/lib-dynload/_zoneinfo.cpython-312-darwin.so} +0 -0
  165. package/bin/_internal/python3.12/lib-dynload/array.cpython-312-darwin.so +0 -0
  166. package/bin/_internal/{python3.14/lib-dynload/binascii.cpython-314-darwin.so → python3.12/lib-dynload/binascii.cpython-312-darwin.so} +0 -0
  167. package/bin/_internal/{python3.14/lib-dynload/fcntl.cpython-314-darwin.so → python3.12/lib-dynload/fcntl.cpython-312-darwin.so} +0 -0
  168. package/bin/_internal/{python3.14/lib-dynload/grp.cpython-314-darwin.so → python3.12/lib-dynload/grp.cpython-312-darwin.so} +0 -0
  169. package/bin/_internal/python3.12/lib-dynload/math.cpython-312-darwin.so +0 -0
  170. package/bin/_internal/{python3.14/lib-dynload/_sha3.cpython-314-darwin.so → python3.12/lib-dynload/mmap.cpython-312-darwin.so} +0 -0
  171. package/bin/_internal/python3.12/lib-dynload/pyexpat.cpython-312-darwin.so +0 -0
  172. package/bin/_internal/python3.12/lib-dynload/readline.cpython-312-darwin.so +0 -0
  173. package/bin/_internal/{python3.14/lib-dynload/resource.cpython-314-darwin.so → python3.12/lib-dynload/resource.cpython-312-darwin.so} +0 -0
  174. package/bin/_internal/{python3.14/lib-dynload/select.cpython-314-darwin.so → python3.12/lib-dynload/select.cpython-312-darwin.so} +0 -0
  175. package/bin/_internal/{python3.14/lib-dynload/syslog.cpython-314-darwin.so → python3.12/lib-dynload/syslog.cpython-312-darwin.so} +0 -0
  176. package/bin/_internal/python3.12/lib-dynload/termios.cpython-312-darwin.so +0 -0
  177. package/bin/_internal/python3.12/lib-dynload/unicodedata.cpython-312-darwin.so +0 -0
  178. package/bin/_internal/python3.12/lib-dynload/zlib.cpython-312-darwin.so +0 -0
  179. package/bin/_internal/tzdata/zoneinfo/Africa/Casablanca +0 -0
  180. package/bin/_internal/tzdata/zoneinfo/Africa/El_Aaiun +0 -0
  181. package/bin/_internal/tzdata/zoneinfo/America/Edmonton +0 -0
  182. package/bin/_internal/tzdata/zoneinfo/America/Vancouver +0 -0
  183. package/bin/_internal/tzdata/zoneinfo/America/Yellowknife +0 -0
  184. package/bin/_internal/tzdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  185. package/bin/_internal/tzdata/zoneinfo/Asia/Saigon +0 -0
  186. package/bin/_internal/tzdata/zoneinfo/Canada/Mountain +0 -0
  187. package/bin/_internal/tzdata/zoneinfo/Canada/Pacific +0 -0
  188. package/bin/_internal/tzdata/zoneinfo/leapseconds +4 -4
  189. package/bin/_internal/tzdata/zoneinfo/tzdata.zi +11 -131
  190. package/bin/_internal/tzdata/zoneinfo/zone.tab +2 -2
  191. package/bin/_internal/tzdata/zoneinfo/zone1970.tab +2 -2
  192. package/bin/_internal/tzdata/zoneinfo/zonenow.tab +8 -2
  193. package/bin/exchange-cli +0 -0
  194. package/package.json +10 -7
  195. package/bin/_internal/81d243bd2c585b0f4821__mypyc.cpython-314-darwin.so +0 -0
  196. package/bin/_internal/Python.framework/Versions/3.14/Python +0 -0
  197. package/bin/_internal/_cffi_backend.cpython-314-darwin.so +0 -0
  198. package/bin/_internal/click-8.3.2.dist-info/RECORD +0 -40
  199. package/bin/_internal/liblzma.5.dylib +0 -0
  200. package/bin/_internal/libmpdec.4.dylib +0 -0
  201. package/bin/_internal/libzstd.1.dylib +0 -0
  202. package/bin/_internal/lxml/_elementpath.cpython-314-darwin.so +0 -0
  203. package/bin/_internal/lxml/builder.cpython-314-darwin.so +0 -0
  204. package/bin/_internal/lxml/html/_difflib.cpython-314-darwin.so +0 -0
  205. package/bin/_internal/lxml/html/diff.cpython-314-darwin.so +0 -0
  206. package/bin/_internal/lxml/sax.cpython-314-darwin.so +0 -0
  207. package/bin/_internal/python3.14/lib-dynload/_asyncio.cpython-314-darwin.so +0 -0
  208. package/bin/_internal/python3.14/lib-dynload/_codecs_iso2022.cpython-314-darwin.so +0 -0
  209. package/bin/_internal/python3.14/lib-dynload/_ctypes.cpython-314-darwin.so +0 -0
  210. package/bin/_internal/python3.14/lib-dynload/_decimal.cpython-314-darwin.so +0 -0
  211. package/bin/_internal/python3.14/lib-dynload/_elementtree.cpython-314-darwin.so +0 -0
  212. package/bin/_internal/python3.14/lib-dynload/_hashlib.cpython-314-darwin.so +0 -0
  213. package/bin/_internal/python3.14/lib-dynload/_hmac.cpython-314-darwin.so +0 -0
  214. package/bin/_internal/python3.14/lib-dynload/_interpreters.cpython-314-darwin.so +0 -0
  215. package/bin/_internal/python3.14/lib-dynload/_json.cpython-314-darwin.so +0 -0
  216. package/bin/_internal/python3.14/lib-dynload/_lzma.cpython-314-darwin.so +0 -0
  217. package/bin/_internal/python3.14/lib-dynload/_multibytecodec.cpython-314-darwin.so +0 -0
  218. package/bin/_internal/python3.14/lib-dynload/_pickle.cpython-314-darwin.so +0 -0
  219. package/bin/_internal/python3.14/lib-dynload/_socket.cpython-314-darwin.so +0 -0
  220. package/bin/_internal/python3.14/lib-dynload/_ssl.cpython-314-darwin.so +0 -0
  221. package/bin/_internal/python3.14/lib-dynload/_struct.cpython-314-darwin.so +0 -0
  222. package/bin/_internal/python3.14/lib-dynload/_zstd.cpython-314-darwin.so +0 -0
  223. package/bin/_internal/python3.14/lib-dynload/array.cpython-314-darwin.so +0 -0
  224. package/bin/_internal/python3.14/lib-dynload/math.cpython-314-darwin.so +0 -0
  225. package/bin/_internal/python3.14/lib-dynload/mmap.cpython-314-darwin.so +0 -0
  226. package/bin/_internal/python3.14/lib-dynload/pyexpat.cpython-314-darwin.so +0 -0
  227. package/bin/_internal/python3.14/lib-dynload/readline.cpython-314-darwin.so +0 -0
  228. package/bin/_internal/python3.14/lib-dynload/unicodedata.cpython-314-darwin.so +0 -0
  229. package/bin/_internal/python3.14/lib-dynload/zlib.cpython-314-darwin.so +0 -0
  230. package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER +0 -1
  231. package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA +0 -133
  232. package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD +0 -21
  233. package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED +0 -0
  234. package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +0 -73
  235. package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt +0 -1
  236. /package/bin/_internal/{click-8.3.2.dist-info → click-8.4.2.dist-info}/INSTALLER +0 -0
  237. /package/bin/_internal/{click-8.3.2.dist-info → click-8.4.2.dist-info}/WHEEL +0 -0
  238. /package/bin/_internal/{click-8.3.2.dist-info → click-8.4.2.dist-info}/licenses/LICENSE.txt +0 -0
  239. /package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/INSTALLER +0 -0
  240. /package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/licenses/LICENSE +0 -0
  241. /package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/licenses/LICENSE.APACHE +0 -0
  242. /package/bin/_internal/{cryptography-46.0.7.dist-info → cryptography-48.0.1.dist-info}/licenses/LICENSE.BSD +0 -0
  243. /package/bin/_internal/{setuptools/_vendor/importlib_metadata-8.7.1.dist-info → exchangelib-5.6.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,349 @@
1
+ import logging
2
+
3
+ from .fields import (
4
+ MONTHS,
5
+ WEEK_NUMBERS,
6
+ WEEKDAY_NAMES,
7
+ WEEKDAYS,
8
+ DateOrDateTimeField,
9
+ DateTimeField,
10
+ EnumField,
11
+ EWSElementField,
12
+ IdElementField,
13
+ IntegerField,
14
+ WeekdaysField,
15
+ )
16
+ from .properties import EWSElement, EWSMeta, IdChangeKeyMixIn, ItemId
17
+
18
+ log = logging.getLogger(__name__)
19
+
20
+
21
+ def _month_to_str(month):
22
+ return MONTHS[month - 1] if isinstance(month, int) else month
23
+
24
+
25
+ def _weekday_to_str(weekday):
26
+ return WEEKDAYS[weekday - 1] if isinstance(weekday, int) else weekday
27
+
28
+
29
+ def _week_number_to_str(week_number):
30
+ return WEEK_NUMBERS[week_number - 1] if isinstance(week_number, int) else week_number
31
+
32
+
33
+ class Pattern(EWSElement, metaclass=EWSMeta):
34
+ """Base class for all classes implementing recurring pattern elements."""
35
+
36
+
37
+ class Regeneration(Pattern, metaclass=EWSMeta):
38
+ """Base class for all classes implementing recurring regeneration elements."""
39
+
40
+
41
+ class AbsoluteYearlyPattern(Pattern):
42
+ """MSDN:
43
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/absoluteyearlyrecurrence
44
+ """
45
+
46
+ ELEMENT_NAME = "AbsoluteYearlyRecurrence"
47
+
48
+ # The day of month of an occurrence, in range 1 -> 31. If a particular month has fewer days than the day_of_month
49
+ # value, the last day in the month is assumed
50
+ day_of_month = IntegerField(field_uri="DayOfMonth", min=1, max=31, is_required=True)
51
+ # The month of the year, from 1 to 12
52
+ month = EnumField(field_uri="Month", enum=MONTHS, is_required=True)
53
+
54
+ def __str__(self):
55
+ return f"Occurs on day {self.day_of_month} of {_month_to_str(self.month)}"
56
+
57
+
58
+ class RelativeYearlyPattern(Pattern):
59
+ """MSDN:
60
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/relativeyearlyrecurrence
61
+ """
62
+
63
+ ELEMENT_NAME = "RelativeYearlyRecurrence"
64
+
65
+ # Valid ISO 8601 weekday, as a number in range 1 -> 7 (1 being Monday). The value can also be one of the DAY
66
+ # (or 8), WEEK_DAY (or 9) or WEEKEND_DAY (or 10) consts which is interpreted as the first day, weekday, or weekend
67
+ # day of the year. Despite the field name in EWS, this is not a list.
68
+ weekday = EnumField(field_uri="DaysOfWeek", enum=WEEKDAYS, is_required=True)
69
+ # Week number of the month, in range 1 -> 5. If 5 is specified, this assumes the last week of the month for
70
+ # months that have only 4 weeks
71
+ week_number = EnumField(field_uri="DayOfWeekIndex", enum=WEEK_NUMBERS, is_required=True)
72
+ # The month of the year, from 1 to 12
73
+ month = EnumField(field_uri="Month", enum=MONTHS, is_required=True)
74
+
75
+ def __str__(self):
76
+ return (
77
+ f"Occurs on weekday {_weekday_to_str(self.weekday)} in the {_week_number_to_str(self.week_number)} "
78
+ f"week of {_month_to_str(self.month)}"
79
+ )
80
+
81
+
82
+ class AbsoluteMonthlyPattern(Pattern):
83
+ """MSDN:
84
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/absolutemonthlyrecurrence
85
+ """
86
+
87
+ ELEMENT_NAME = "AbsoluteMonthlyRecurrence"
88
+
89
+ # Interval, in months, in range 1 -> 99
90
+ interval = IntegerField(field_uri="Interval", min=1, max=99, is_required=True)
91
+ # The day of month of an occurrence, in range 1 -> 31. If a particular month has fewer days than the day_of_month
92
+ # value, the last day in the month is assumed
93
+ day_of_month = IntegerField(field_uri="DayOfMonth", min=1, max=31, is_required=True)
94
+
95
+ def __str__(self):
96
+ return f"Occurs on day {self.day_of_month} of every {self.interval} month(s)"
97
+
98
+
99
+ class RelativeMonthlyPattern(Pattern):
100
+ """MSDN:
101
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/relativemonthlyrecurrence
102
+ """
103
+
104
+ ELEMENT_NAME = "RelativeMonthlyRecurrence"
105
+
106
+ # Interval, in months, in range 1 -> 99
107
+ interval = IntegerField(field_uri="Interval", min=1, max=99, is_required=True)
108
+ # Valid ISO 8601 weekday, as a number in range 1 -> 7 (1 being Monday). The value can also be one of the DAY
109
+ # (or 8), WEEK_DAY (or 9) or WEEKEND_DAY (or 10) consts which is interpreted as the first day, weekday, or weekend
110
+ # day of the month. Despite the field name in EWS, this is not a list.
111
+ weekday = EnumField(field_uri="DaysOfWeek", enum=WEEKDAYS, is_required=True)
112
+ # Week number of the month, in range 1 -> 5. If 5 is specified, this assumes the last week of the month for
113
+ # months that have only 4 weeks.
114
+ week_number = EnumField(field_uri="DayOfWeekIndex", enum=WEEK_NUMBERS, is_required=True)
115
+
116
+ def __str__(self):
117
+ return (
118
+ f"Occurs on weekday {_weekday_to_str(self.weekday)} in the {_week_number_to_str(self.week_number)} "
119
+ f"week of every {self.interval} month(s)"
120
+ )
121
+
122
+
123
+ class WeeklyPattern(Pattern):
124
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/weeklyrecurrence"""
125
+
126
+ ELEMENT_NAME = "WeeklyRecurrence"
127
+
128
+ # Interval, in weeks, in range 1 -> 99
129
+ interval = IntegerField(field_uri="Interval", min=1, max=99, is_required=True)
130
+ # List of valid ISO 8601 weekdays, as list of numbers in range 1 -> 7 (1 being Monday)
131
+ weekdays = WeekdaysField(field_uri="DaysOfWeek", enum=WEEKDAY_NAMES, is_required=True)
132
+ # The first day of the week. Defaults to Monday
133
+ first_day_of_week = EnumField(field_uri="FirstDayOfWeek", enum=WEEKDAY_NAMES, default=1, is_required=True)
134
+
135
+ def __str__(self):
136
+ weekdays = [_weekday_to_str(i) for i in self.get_field_by_fieldname("weekdays").clean(self.weekdays)]
137
+ return (
138
+ f'Occurs on weekdays {", ".join(weekdays)} of every {self.interval} week(s) where the first day of '
139
+ f"the week is {_weekday_to_str(self.first_day_of_week)}"
140
+ )
141
+
142
+
143
+ class DailyPattern(Pattern):
144
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/dailyrecurrence"""
145
+
146
+ ELEMENT_NAME = "DailyRecurrence"
147
+
148
+ # Interval, in days, in range 1 -> 999
149
+ interval = IntegerField(field_uri="Interval", min=1, max=999, is_required=True)
150
+
151
+ def __str__(self):
152
+ return f"Occurs every {self.interval} day(s)"
153
+
154
+
155
+ class YearlyRegeneration(Regeneration):
156
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/yearlyregeneration"""
157
+
158
+ ELEMENT_NAME = "YearlyRegeneration"
159
+
160
+ # Interval, in years
161
+ interval = IntegerField(field_uri="Interval", min=1, is_required=True)
162
+
163
+ def __str__(self):
164
+ return f"Regenerates every {self.interval} year(s)"
165
+
166
+
167
+ class MonthlyRegeneration(Regeneration):
168
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/monthlyregeneration"""
169
+
170
+ ELEMENT_NAME = "MonthlyRegeneration"
171
+
172
+ # Interval, in months
173
+ interval = IntegerField(field_uri="Interval", min=1, is_required=True)
174
+
175
+ def __str__(self):
176
+ return f"Regenerates every {self.interval} month(s)"
177
+
178
+
179
+ class WeeklyRegeneration(Regeneration):
180
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/weeklyregeneration"""
181
+
182
+ ELEMENT_NAME = "WeeklyRegeneration"
183
+
184
+ # Interval, in weeks
185
+ interval = IntegerField(field_uri="Interval", min=1, is_required=True)
186
+
187
+ def __str__(self):
188
+ return f"Regenerates every {self.interval} week(s)"
189
+
190
+
191
+ class DailyRegeneration(Regeneration):
192
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/dailyregeneration"""
193
+
194
+ ELEMENT_NAME = "DailyRegeneration"
195
+
196
+ # Interval, in days
197
+ interval = IntegerField(field_uri="Interval", min=1, is_required=True)
198
+
199
+ def __str__(self):
200
+ return f"Regenerates every {self.interval} day(s)"
201
+
202
+
203
+ class Boundary(EWSElement, metaclass=EWSMeta):
204
+ """Base class for all classes implementing recurring boundary elements."""
205
+
206
+
207
+ class NoEndPattern(Boundary):
208
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/noendrecurrence"""
209
+
210
+ ELEMENT_NAME = "NoEndRecurrence"
211
+
212
+ # Start date, as EWSDate or EWSDateTime
213
+ start = DateOrDateTimeField(field_uri="StartDate", is_required=True)
214
+
215
+ def __str__(self):
216
+ return f"Starts on {self.start}"
217
+
218
+
219
+ class EndDatePattern(Boundary):
220
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/enddaterecurrence"""
221
+
222
+ ELEMENT_NAME = "EndDateRecurrence"
223
+
224
+ # Start date, as EWSDate or EWSDateTime
225
+ start = DateOrDateTimeField(field_uri="StartDate", is_required=True)
226
+ # End date, as EWSDate
227
+ end = DateOrDateTimeField(field_uri="EndDate", is_required=True)
228
+
229
+ def __str__(self):
230
+ return f"Starts on {self.start}, ends on {self.end}"
231
+
232
+
233
+ class NumberedPattern(Boundary):
234
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/numberedrecurrence"""
235
+
236
+ ELEMENT_NAME = "NumberedRecurrence"
237
+
238
+ # Start date, as EWSDate or EWSDateTime
239
+ start = DateOrDateTimeField(field_uri="StartDate", is_required=True)
240
+ # The number of occurrences in this pattern, in range 1 -> 999
241
+ number = IntegerField(field_uri="NumberOfOccurrences", min=1, max=999, is_required=True)
242
+
243
+ def __str__(self):
244
+ return f"Starts on {self.start} and occurs {self.number} time(s)"
245
+
246
+
247
+ class Occurrence(IdChangeKeyMixIn):
248
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/occurrence"""
249
+
250
+ ELEMENT_NAME = "Occurrence"
251
+ ID_ELEMENT_CLS = ItemId
252
+
253
+ _id = IdElementField(field_uri="ItemId", value_cls=ID_ELEMENT_CLS)
254
+ # The modified start time of the item, as EWSDateTime
255
+ start = DateTimeField(field_uri="Start")
256
+ # The modified end time of the item, as EWSDateTime
257
+ end = DateTimeField(field_uri="End")
258
+ # The original start time of the item, as EWSDateTime
259
+ original_start = DateTimeField(field_uri="OriginalStart")
260
+
261
+
262
+ # Container elements:
263
+ # 'ModifiedOccurrences'
264
+ # 'DeletedOccurrences'
265
+
266
+
267
+ class FirstOccurrence(Occurrence):
268
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/firstoccurrence"""
269
+
270
+ ELEMENT_NAME = "FirstOccurrence"
271
+
272
+
273
+ class LastOccurrence(Occurrence):
274
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/lastoccurrence"""
275
+
276
+ ELEMENT_NAME = "LastOccurrence"
277
+
278
+
279
+ class DeletedOccurrence(EWSElement):
280
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/deletedoccurrence"""
281
+
282
+ ELEMENT_NAME = "DeletedOccurrence"
283
+
284
+ # The modified start time of the item, as EWSDateTime
285
+ start = DateTimeField(field_uri="Start")
286
+
287
+
288
+ PATTERN_CLASSES = (
289
+ AbsoluteYearlyPattern,
290
+ RelativeYearlyPattern,
291
+ AbsoluteMonthlyPattern,
292
+ RelativeMonthlyPattern,
293
+ WeeklyPattern,
294
+ DailyPattern,
295
+ )
296
+ REGENERATION_CLASSES = YearlyRegeneration, MonthlyRegeneration, WeeklyRegeneration, DailyRegeneration
297
+ BOUNDARY_CLASSES = NoEndPattern, EndDatePattern, NumberedPattern
298
+
299
+
300
+ class Recurrence(EWSElement):
301
+ """MSDN:
302
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/recurrence-recurrencetype
303
+ """
304
+
305
+ ELEMENT_NAME = "Recurrence"
306
+ PATTERN_CLASS_MAP = {cls.response_tag(): cls for cls in PATTERN_CLASSES}
307
+ BOUNDARY_CLASS_MAP = {cls.response_tag(): cls for cls in BOUNDARY_CLASSES}
308
+
309
+ pattern = EWSElementField(value_cls=Pattern)
310
+ boundary = EWSElementField(value_cls=Boundary)
311
+
312
+ def __init__(self, **kwargs):
313
+ # Allow specifying a start, end and/or number as a shortcut to creating a boundary
314
+ start = kwargs.pop("start", None)
315
+ end = kwargs.pop("end", None)
316
+ number = kwargs.pop("number", None)
317
+ if any([start, end, number]):
318
+ if "boundary" in kwargs:
319
+ raise ValueError("'boundary' is not allowed in combination with 'start', 'end' or 'number'")
320
+ if start and not end and not number:
321
+ kwargs["boundary"] = NoEndPattern(start=start)
322
+ elif start and end and not number:
323
+ kwargs["boundary"] = EndDatePattern(start=start, end=end)
324
+ elif start and number and not end:
325
+ kwargs["boundary"] = NumberedPattern(start=start, number=number)
326
+ else:
327
+ raise ValueError("Unsupported 'start', 'end', 'number' combination")
328
+ super().__init__(**kwargs)
329
+
330
+ @classmethod
331
+ def from_xml(cls, elem, account):
332
+ pattern, boundary = None, None
333
+ for child_elem in elem:
334
+ if child_elem.tag in cls.PATTERN_CLASS_MAP:
335
+ pattern = cls.PATTERN_CLASS_MAP[child_elem.tag].from_xml(elem=child_elem, account=account)
336
+ elif child_elem.tag in cls.BOUNDARY_CLASS_MAP:
337
+ boundary = cls.BOUNDARY_CLASS_MAP[child_elem.tag].from_xml(elem=child_elem, account=account)
338
+ return cls(pattern=pattern, boundary=boundary)
339
+
340
+ def __str__(self):
341
+ return f"Pattern: {self.pattern}, Boundary: {self.boundary}"
342
+
343
+
344
+ class TaskRecurrence(Recurrence):
345
+ """MSDN:
346
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/recurrence-taskrecurrencetype
347
+ """
348
+
349
+ PATTERN_CLASS_MAP = {cls.response_tag(): cls for cls in PATTERN_CLASSES + REGENERATION_CLASSES}