@backtomyfuture/exchange-cli-win32-ia32 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 (774) hide show
  1. package/bin/_internal/VCRUNTIME140.dll +0 -0
  2. package/bin/_internal/_asyncio.pyd +0 -0
  3. package/bin/_internal/_bz2.pyd +0 -0
  4. package/bin/_internal/_cffi_backend.cp312-win32.pyd +0 -0
  5. package/bin/_internal/_ctypes.pyd +0 -0
  6. package/bin/_internal/_decimal.pyd +0 -0
  7. package/bin/_internal/_elementtree.pyd +0 -0
  8. package/bin/_internal/_hashlib.pyd +0 -0
  9. package/bin/_internal/_lzma.pyd +0 -0
  10. package/bin/_internal/_multiprocessing.pyd +0 -0
  11. package/bin/_internal/_overlapped.pyd +0 -0
  12. package/bin/_internal/_queue.pyd +0 -0
  13. package/bin/_internal/_socket.pyd +0 -0
  14. package/bin/_internal/_ssl.pyd +0 -0
  15. package/bin/_internal/_uuid.pyd +0 -0
  16. package/bin/_internal/_wmi.pyd +0 -0
  17. package/bin/_internal/_zoneinfo.pyd +0 -0
  18. package/bin/_internal/ada92cb5d92a588d1b93__mypyc.cp312-win32.pyd +0 -0
  19. package/bin/_internal/base_library.zip +0 -0
  20. package/bin/_internal/certifi/cacert.pem +3959 -0
  21. package/bin/_internal/certifi/py.typed +0 -0
  22. package/bin/_internal/charset_normalizer/cd.cp312-win32.pyd +0 -0
  23. package/bin/_internal/charset_normalizer/md.cp312-win32.pyd +0 -0
  24. package/bin/_internal/click-8.4.2.dist-info/INSTALLER +1 -0
  25. package/bin/_internal/click-8.4.2.dist-info/METADATA +84 -0
  26. package/bin/_internal/click-8.4.2.dist-info/RECORD +40 -0
  27. package/bin/_internal/click-8.4.2.dist-info/WHEEL +4 -0
  28. package/bin/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt +28 -0
  29. package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
  30. package/bin/_internal/cryptography-48.0.1.dist-info/INSTALLER +1 -0
  31. package/bin/_internal/cryptography-48.0.1.dist-info/METADATA +110 -0
  32. package/bin/_internal/cryptography-48.0.1.dist-info/RECORD +195 -0
  33. package/bin/_internal/cryptography-48.0.1.dist-info/WHEEL +4 -0
  34. package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE +3 -0
  35. package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE.APACHE +202 -0
  36. package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE.BSD +27 -0
  37. package/bin/_internal/cryptography-48.0.1.dist-info/sboms/cryptography-rust.cyclonedx.json +1332 -0
  38. package/bin/_internal/cryptography-48.0.1.dist-info/sboms/sbom.json +43 -0
  39. package/bin/_internal/exchangelib/__init__.py +120 -0
  40. package/bin/_internal/exchangelib/account.py +896 -0
  41. package/bin/_internal/exchangelib/attachments.py +268 -0
  42. package/bin/_internal/exchangelib/autodiscover/__init__.py +24 -0
  43. package/bin/_internal/exchangelib/autodiscover/cache.py +150 -0
  44. package/bin/_internal/exchangelib/autodiscover/discovery.py +491 -0
  45. package/bin/_internal/exchangelib/autodiscover/protocol.py +58 -0
  46. package/bin/_internal/exchangelib/configuration.py +106 -0
  47. package/bin/_internal/exchangelib/credentials.py +319 -0
  48. package/bin/_internal/exchangelib/errors.py +1710 -0
  49. package/bin/_internal/exchangelib/ewsdatetime.py +309 -0
  50. package/bin/_internal/exchangelib/extended_properties.py +311 -0
  51. package/bin/_internal/exchangelib/fields.py +1842 -0
  52. package/bin/_internal/exchangelib/folders/__init__.py +249 -0
  53. package/bin/_internal/exchangelib/folders/base.py +954 -0
  54. package/bin/_internal/exchangelib/folders/collections.py +576 -0
  55. package/bin/_internal/exchangelib/folders/known_folders.py +856 -0
  56. package/bin/_internal/exchangelib/folders/queryset.py +187 -0
  57. package/bin/_internal/exchangelib/folders/roots.py +390 -0
  58. package/bin/_internal/exchangelib/indexed_properties.py +96 -0
  59. package/bin/_internal/exchangelib/items/__init__.py +147 -0
  60. package/bin/_internal/exchangelib/items/base.py +241 -0
  61. package/bin/_internal/exchangelib/items/calendar_item.py +466 -0
  62. package/bin/_internal/exchangelib/items/contact.py +263 -0
  63. package/bin/_internal/exchangelib/items/item.py +413 -0
  64. package/bin/_internal/exchangelib/items/message.py +201 -0
  65. package/bin/_internal/exchangelib/items/post.py +38 -0
  66. package/bin/_internal/exchangelib/items/task.py +139 -0
  67. package/bin/_internal/exchangelib/properties.py +2364 -0
  68. package/bin/_internal/exchangelib/protocol.py +823 -0
  69. package/bin/_internal/exchangelib/queryset.py +691 -0
  70. package/bin/_internal/exchangelib/recurrence.py +349 -0
  71. package/bin/_internal/exchangelib/restriction.py +568 -0
  72. package/bin/_internal/exchangelib/services/__init__.py +117 -0
  73. package/bin/_internal/exchangelib/services/archive_item.py +33 -0
  74. package/bin/_internal/exchangelib/services/common.py +983 -0
  75. package/bin/_internal/exchangelib/services/convert_id.py +45 -0
  76. package/bin/_internal/exchangelib/services/copy_item.py +7 -0
  77. package/bin/_internal/exchangelib/services/create_attachment.py +34 -0
  78. package/bin/_internal/exchangelib/services/create_folder.py +45 -0
  79. package/bin/_internal/exchangelib/services/create_item.py +97 -0
  80. package/bin/_internal/exchangelib/services/create_user_configuration.py +19 -0
  81. package/bin/_internal/exchangelib/services/delete_attachment.py +28 -0
  82. package/bin/_internal/exchangelib/services/delete_folder.py +21 -0
  83. package/bin/_internal/exchangelib/services/delete_item.py +51 -0
  84. package/bin/_internal/exchangelib/services/delete_user_configuration.py +19 -0
  85. package/bin/_internal/exchangelib/services/empty_folder.py +25 -0
  86. package/bin/_internal/exchangelib/services/expand_dl.py +21 -0
  87. package/bin/_internal/exchangelib/services/export_items.py +27 -0
  88. package/bin/_internal/exchangelib/services/find_folder.py +80 -0
  89. package/bin/_internal/exchangelib/services/find_item.py +112 -0
  90. package/bin/_internal/exchangelib/services/find_people.py +106 -0
  91. package/bin/_internal/exchangelib/services/get_attachment.py +117 -0
  92. package/bin/_internal/exchangelib/services/get_delegate.py +45 -0
  93. package/bin/_internal/exchangelib/services/get_events.py +39 -0
  94. package/bin/_internal/exchangelib/services/get_folder.py +65 -0
  95. package/bin/_internal/exchangelib/services/get_item.py +41 -0
  96. package/bin/_internal/exchangelib/services/get_mail_tips.py +43 -0
  97. package/bin/_internal/exchangelib/services/get_persona.py +31 -0
  98. package/bin/_internal/exchangelib/services/get_room_lists.py +21 -0
  99. package/bin/_internal/exchangelib/services/get_rooms.py +21 -0
  100. package/bin/_internal/exchangelib/services/get_searchable_mailboxes.py +48 -0
  101. package/bin/_internal/exchangelib/services/get_server_time_zones.py +39 -0
  102. package/bin/_internal/exchangelib/services/get_streaming_events.py +102 -0
  103. package/bin/_internal/exchangelib/services/get_user_availability.py +67 -0
  104. package/bin/_internal/exchangelib/services/get_user_configuration.py +43 -0
  105. package/bin/_internal/exchangelib/services/get_user_oof_settings.py +40 -0
  106. package/bin/_internal/exchangelib/services/get_user_settings.py +87 -0
  107. package/bin/_internal/exchangelib/services/inbox_rules.py +104 -0
  108. package/bin/_internal/exchangelib/services/mark_as_junk.py +27 -0
  109. package/bin/_internal/exchangelib/services/move_folder.py +27 -0
  110. package/bin/_internal/exchangelib/services/move_item.py +28 -0
  111. package/bin/_internal/exchangelib/services/resolve_names.py +104 -0
  112. package/bin/_internal/exchangelib/services/send_item.py +26 -0
  113. package/bin/_internal/exchangelib/services/send_notification.py +43 -0
  114. package/bin/_internal/exchangelib/services/set_user_oof_settings.py +34 -0
  115. package/bin/_internal/exchangelib/services/subscribe.py +125 -0
  116. package/bin/_internal/exchangelib/services/sync_folder_hierarchy.py +95 -0
  117. package/bin/_internal/exchangelib/services/sync_folder_items.py +77 -0
  118. package/bin/_internal/exchangelib/services/unsubscribe.py +21 -0
  119. package/bin/_internal/exchangelib/services/update_folder.py +158 -0
  120. package/bin/_internal/exchangelib/services/update_item.py +113 -0
  121. package/bin/_internal/exchangelib/services/update_user_configuration.py +17 -0
  122. package/bin/_internal/exchangelib/services/upload_items.py +47 -0
  123. package/bin/_internal/exchangelib/settings.py +88 -0
  124. package/bin/_internal/exchangelib/transport.py +214 -0
  125. package/bin/_internal/exchangelib/util.py +894 -0
  126. package/bin/_internal/exchangelib/version.py +320 -0
  127. package/bin/_internal/exchangelib/winzone.py +662 -0
  128. package/bin/_internal/exchangelib-5.6.0.dist-info/INSTALLER +1 -0
  129. package/bin/_internal/exchangelib-5.6.0.dist-info/METADATA +77 -0
  130. package/bin/_internal/exchangelib-5.6.0.dist-info/RECORD +184 -0
  131. package/bin/_internal/exchangelib-5.6.0.dist-info/WHEEL +5 -0
  132. package/bin/_internal/exchangelib-5.6.0.dist-info/licenses/LICENSE +21 -0
  133. package/bin/_internal/exchangelib-5.6.0.dist-info/top_level.txt +1 -0
  134. package/bin/_internal/libcrypto-3.dll +0 -0
  135. package/bin/_internal/libffi-8.dll +0 -0
  136. package/bin/_internal/libssl-3.dll +0 -0
  137. package/bin/_internal/lxml/_elementpath.cp312-win32.pyd +0 -0
  138. package/bin/_internal/lxml/builder.cp312-win32.pyd +0 -0
  139. package/bin/_internal/lxml/etree.cp312-win32.pyd +0 -0
  140. package/bin/_internal/lxml/html/_difflib.cp312-win32.pyd +0 -0
  141. package/bin/_internal/lxml/html/diff.cp312-win32.pyd +0 -0
  142. package/bin/_internal/lxml/isoschematron/resources/rng/iso-schematron.rng +709 -0
  143. package/bin/_internal/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl +75 -0
  144. package/bin/_internal/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl +77 -0
  145. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl +313 -0
  146. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl +1160 -0
  147. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl +55 -0
  148. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl +1796 -0
  149. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl +588 -0
  150. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt +84 -0
  151. package/bin/_internal/lxml/objectify.cp312-win32.pyd +0 -0
  152. package/bin/_internal/lxml/sax.cp312-win32.pyd +0 -0
  153. package/bin/_internal/pyexpat.pyd +0 -0
  154. package/bin/_internal/python3.dll +0 -0
  155. package/bin/_internal/python312.dll +0 -0
  156. package/bin/_internal/select.pyd +0 -0
  157. package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +2 -0
  158. package/bin/_internal/sspilib/raw/_context_attributes.pyd +0 -0
  159. package/bin/_internal/sspilib/raw/_credential.pyd +0 -0
  160. package/bin/_internal/sspilib/raw/_credential_attributes.pyd +0 -0
  161. package/bin/_internal/sspilib/raw/_message.pyd +0 -0
  162. package/bin/_internal/sspilib/raw/_ntstatus.pyd +0 -0
  163. package/bin/_internal/sspilib/raw/_security_buffer.pyd +0 -0
  164. package/bin/_internal/sspilib/raw/_security_context.pyd +0 -0
  165. package/bin/_internal/sspilib/raw/_security_package.pyd +0 -0
  166. package/bin/_internal/sspilib/raw/_text.pyd +0 -0
  167. package/bin/_internal/tzdata/zoneinfo/Africa/Abidjan +0 -0
  168. package/bin/_internal/tzdata/zoneinfo/Africa/Accra +0 -0
  169. package/bin/_internal/tzdata/zoneinfo/Africa/Addis_Ababa +0 -0
  170. package/bin/_internal/tzdata/zoneinfo/Africa/Algiers +0 -0
  171. package/bin/_internal/tzdata/zoneinfo/Africa/Asmara +0 -0
  172. package/bin/_internal/tzdata/zoneinfo/Africa/Asmera +0 -0
  173. package/bin/_internal/tzdata/zoneinfo/Africa/Bamako +0 -0
  174. package/bin/_internal/tzdata/zoneinfo/Africa/Bangui +0 -0
  175. package/bin/_internal/tzdata/zoneinfo/Africa/Banjul +0 -0
  176. package/bin/_internal/tzdata/zoneinfo/Africa/Bissau +0 -0
  177. package/bin/_internal/tzdata/zoneinfo/Africa/Blantyre +0 -0
  178. package/bin/_internal/tzdata/zoneinfo/Africa/Brazzaville +0 -0
  179. package/bin/_internal/tzdata/zoneinfo/Africa/Bujumbura +0 -0
  180. package/bin/_internal/tzdata/zoneinfo/Africa/Cairo +0 -0
  181. package/bin/_internal/tzdata/zoneinfo/Africa/Casablanca +0 -0
  182. package/bin/_internal/tzdata/zoneinfo/Africa/Ceuta +0 -0
  183. package/bin/_internal/tzdata/zoneinfo/Africa/Conakry +0 -0
  184. package/bin/_internal/tzdata/zoneinfo/Africa/Dakar +0 -0
  185. package/bin/_internal/tzdata/zoneinfo/Africa/Dar_es_Salaam +0 -0
  186. package/bin/_internal/tzdata/zoneinfo/Africa/Djibouti +0 -0
  187. package/bin/_internal/tzdata/zoneinfo/Africa/Douala +0 -0
  188. package/bin/_internal/tzdata/zoneinfo/Africa/El_Aaiun +0 -0
  189. package/bin/_internal/tzdata/zoneinfo/Africa/Freetown +0 -0
  190. package/bin/_internal/tzdata/zoneinfo/Africa/Gaborone +0 -0
  191. package/bin/_internal/tzdata/zoneinfo/Africa/Harare +0 -0
  192. package/bin/_internal/tzdata/zoneinfo/Africa/Johannesburg +0 -0
  193. package/bin/_internal/tzdata/zoneinfo/Africa/Juba +0 -0
  194. package/bin/_internal/tzdata/zoneinfo/Africa/Kampala +0 -0
  195. package/bin/_internal/tzdata/zoneinfo/Africa/Khartoum +0 -0
  196. package/bin/_internal/tzdata/zoneinfo/Africa/Kigali +0 -0
  197. package/bin/_internal/tzdata/zoneinfo/Africa/Kinshasa +0 -0
  198. package/bin/_internal/tzdata/zoneinfo/Africa/Lagos +0 -0
  199. package/bin/_internal/tzdata/zoneinfo/Africa/Libreville +0 -0
  200. package/bin/_internal/tzdata/zoneinfo/Africa/Lome +0 -0
  201. package/bin/_internal/tzdata/zoneinfo/Africa/Luanda +0 -0
  202. package/bin/_internal/tzdata/zoneinfo/Africa/Lubumbashi +0 -0
  203. package/bin/_internal/tzdata/zoneinfo/Africa/Lusaka +0 -0
  204. package/bin/_internal/tzdata/zoneinfo/Africa/Malabo +0 -0
  205. package/bin/_internal/tzdata/zoneinfo/Africa/Maputo +0 -0
  206. package/bin/_internal/tzdata/zoneinfo/Africa/Maseru +0 -0
  207. package/bin/_internal/tzdata/zoneinfo/Africa/Mbabane +0 -0
  208. package/bin/_internal/tzdata/zoneinfo/Africa/Mogadishu +0 -0
  209. package/bin/_internal/tzdata/zoneinfo/Africa/Monrovia +0 -0
  210. package/bin/_internal/tzdata/zoneinfo/Africa/Nairobi +0 -0
  211. package/bin/_internal/tzdata/zoneinfo/Africa/Ndjamena +0 -0
  212. package/bin/_internal/tzdata/zoneinfo/Africa/Niamey +0 -0
  213. package/bin/_internal/tzdata/zoneinfo/Africa/Nouakchott +0 -0
  214. package/bin/_internal/tzdata/zoneinfo/Africa/Ouagadougou +0 -0
  215. package/bin/_internal/tzdata/zoneinfo/Africa/Porto-Novo +0 -0
  216. package/bin/_internal/tzdata/zoneinfo/Africa/Sao_Tome +0 -0
  217. package/bin/_internal/tzdata/zoneinfo/Africa/Timbuktu +0 -0
  218. package/bin/_internal/tzdata/zoneinfo/Africa/Tripoli +0 -0
  219. package/bin/_internal/tzdata/zoneinfo/Africa/Tunis +0 -0
  220. package/bin/_internal/tzdata/zoneinfo/Africa/Windhoek +0 -0
  221. package/bin/_internal/tzdata/zoneinfo/America/Adak +0 -0
  222. package/bin/_internal/tzdata/zoneinfo/America/Anchorage +0 -0
  223. package/bin/_internal/tzdata/zoneinfo/America/Anguilla +0 -0
  224. package/bin/_internal/tzdata/zoneinfo/America/Antigua +0 -0
  225. package/bin/_internal/tzdata/zoneinfo/America/Araguaina +0 -0
  226. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  227. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Catamarca +0 -0
  228. package/bin/_internal/tzdata/zoneinfo/America/Argentina/ComodRivadavia +0 -0
  229. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Cordoba +0 -0
  230. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Jujuy +0 -0
  231. package/bin/_internal/tzdata/zoneinfo/America/Argentina/La_Rioja +0 -0
  232. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Mendoza +0 -0
  233. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Rio_Gallegos +0 -0
  234. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Salta +0 -0
  235. package/bin/_internal/tzdata/zoneinfo/America/Argentina/San_Juan +0 -0
  236. package/bin/_internal/tzdata/zoneinfo/America/Argentina/San_Luis +0 -0
  237. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Tucuman +0 -0
  238. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Ushuaia +0 -0
  239. package/bin/_internal/tzdata/zoneinfo/America/Aruba +0 -0
  240. package/bin/_internal/tzdata/zoneinfo/America/Asuncion +0 -0
  241. package/bin/_internal/tzdata/zoneinfo/America/Atikokan +0 -0
  242. package/bin/_internal/tzdata/zoneinfo/America/Atka +0 -0
  243. package/bin/_internal/tzdata/zoneinfo/America/Bahia +0 -0
  244. package/bin/_internal/tzdata/zoneinfo/America/Bahia_Banderas +0 -0
  245. package/bin/_internal/tzdata/zoneinfo/America/Barbados +0 -0
  246. package/bin/_internal/tzdata/zoneinfo/America/Belem +0 -0
  247. package/bin/_internal/tzdata/zoneinfo/America/Belize +0 -0
  248. package/bin/_internal/tzdata/zoneinfo/America/Blanc-Sablon +0 -0
  249. package/bin/_internal/tzdata/zoneinfo/America/Boa_Vista +0 -0
  250. package/bin/_internal/tzdata/zoneinfo/America/Bogota +0 -0
  251. package/bin/_internal/tzdata/zoneinfo/America/Boise +0 -0
  252. package/bin/_internal/tzdata/zoneinfo/America/Buenos_Aires +0 -0
  253. package/bin/_internal/tzdata/zoneinfo/America/Cambridge_Bay +0 -0
  254. package/bin/_internal/tzdata/zoneinfo/America/Campo_Grande +0 -0
  255. package/bin/_internal/tzdata/zoneinfo/America/Cancun +0 -0
  256. package/bin/_internal/tzdata/zoneinfo/America/Caracas +0 -0
  257. package/bin/_internal/tzdata/zoneinfo/America/Catamarca +0 -0
  258. package/bin/_internal/tzdata/zoneinfo/America/Cayenne +0 -0
  259. package/bin/_internal/tzdata/zoneinfo/America/Cayman +0 -0
  260. package/bin/_internal/tzdata/zoneinfo/America/Chicago +0 -0
  261. package/bin/_internal/tzdata/zoneinfo/America/Chihuahua +0 -0
  262. package/bin/_internal/tzdata/zoneinfo/America/Ciudad_Juarez +0 -0
  263. package/bin/_internal/tzdata/zoneinfo/America/Coral_Harbour +0 -0
  264. package/bin/_internal/tzdata/zoneinfo/America/Cordoba +0 -0
  265. package/bin/_internal/tzdata/zoneinfo/America/Costa_Rica +0 -0
  266. package/bin/_internal/tzdata/zoneinfo/America/Coyhaique +0 -0
  267. package/bin/_internal/tzdata/zoneinfo/America/Creston +0 -0
  268. package/bin/_internal/tzdata/zoneinfo/America/Cuiaba +0 -0
  269. package/bin/_internal/tzdata/zoneinfo/America/Curacao +0 -0
  270. package/bin/_internal/tzdata/zoneinfo/America/Danmarkshavn +0 -0
  271. package/bin/_internal/tzdata/zoneinfo/America/Dawson +0 -0
  272. package/bin/_internal/tzdata/zoneinfo/America/Dawson_Creek +0 -0
  273. package/bin/_internal/tzdata/zoneinfo/America/Denver +0 -0
  274. package/bin/_internal/tzdata/zoneinfo/America/Detroit +0 -0
  275. package/bin/_internal/tzdata/zoneinfo/America/Dominica +0 -0
  276. package/bin/_internal/tzdata/zoneinfo/America/Edmonton +0 -0
  277. package/bin/_internal/tzdata/zoneinfo/America/Eirunepe +0 -0
  278. package/bin/_internal/tzdata/zoneinfo/America/El_Salvador +0 -0
  279. package/bin/_internal/tzdata/zoneinfo/America/Ensenada +0 -0
  280. package/bin/_internal/tzdata/zoneinfo/America/Fort_Nelson +0 -0
  281. package/bin/_internal/tzdata/zoneinfo/America/Fort_Wayne +0 -0
  282. package/bin/_internal/tzdata/zoneinfo/America/Fortaleza +0 -0
  283. package/bin/_internal/tzdata/zoneinfo/America/Glace_Bay +0 -0
  284. package/bin/_internal/tzdata/zoneinfo/America/Godthab +0 -0
  285. package/bin/_internal/tzdata/zoneinfo/America/Goose_Bay +0 -0
  286. package/bin/_internal/tzdata/zoneinfo/America/Grand_Turk +0 -0
  287. package/bin/_internal/tzdata/zoneinfo/America/Grenada +0 -0
  288. package/bin/_internal/tzdata/zoneinfo/America/Guadeloupe +0 -0
  289. package/bin/_internal/tzdata/zoneinfo/America/Guatemala +0 -0
  290. package/bin/_internal/tzdata/zoneinfo/America/Guayaquil +0 -0
  291. package/bin/_internal/tzdata/zoneinfo/America/Guyana +0 -0
  292. package/bin/_internal/tzdata/zoneinfo/America/Halifax +0 -0
  293. package/bin/_internal/tzdata/zoneinfo/America/Havana +0 -0
  294. package/bin/_internal/tzdata/zoneinfo/America/Hermosillo +0 -0
  295. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Indianapolis +0 -0
  296. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Knox +0 -0
  297. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Marengo +0 -0
  298. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Petersburg +0 -0
  299. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Tell_City +0 -0
  300. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Vevay +0 -0
  301. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Vincennes +0 -0
  302. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Winamac +0 -0
  303. package/bin/_internal/tzdata/zoneinfo/America/Indianapolis +0 -0
  304. package/bin/_internal/tzdata/zoneinfo/America/Inuvik +0 -0
  305. package/bin/_internal/tzdata/zoneinfo/America/Iqaluit +0 -0
  306. package/bin/_internal/tzdata/zoneinfo/America/Jamaica +0 -0
  307. package/bin/_internal/tzdata/zoneinfo/America/Jujuy +0 -0
  308. package/bin/_internal/tzdata/zoneinfo/America/Juneau +0 -0
  309. package/bin/_internal/tzdata/zoneinfo/America/Kentucky/Louisville +0 -0
  310. package/bin/_internal/tzdata/zoneinfo/America/Kentucky/Monticello +0 -0
  311. package/bin/_internal/tzdata/zoneinfo/America/Knox_IN +0 -0
  312. package/bin/_internal/tzdata/zoneinfo/America/Kralendijk +0 -0
  313. package/bin/_internal/tzdata/zoneinfo/America/La_Paz +0 -0
  314. package/bin/_internal/tzdata/zoneinfo/America/Lima +0 -0
  315. package/bin/_internal/tzdata/zoneinfo/America/Los_Angeles +0 -0
  316. package/bin/_internal/tzdata/zoneinfo/America/Louisville +0 -0
  317. package/bin/_internal/tzdata/zoneinfo/America/Lower_Princes +0 -0
  318. package/bin/_internal/tzdata/zoneinfo/America/Maceio +0 -0
  319. package/bin/_internal/tzdata/zoneinfo/America/Managua +0 -0
  320. package/bin/_internal/tzdata/zoneinfo/America/Manaus +0 -0
  321. package/bin/_internal/tzdata/zoneinfo/America/Marigot +0 -0
  322. package/bin/_internal/tzdata/zoneinfo/America/Martinique +0 -0
  323. package/bin/_internal/tzdata/zoneinfo/America/Matamoros +0 -0
  324. package/bin/_internal/tzdata/zoneinfo/America/Mazatlan +0 -0
  325. package/bin/_internal/tzdata/zoneinfo/America/Mendoza +0 -0
  326. package/bin/_internal/tzdata/zoneinfo/America/Menominee +0 -0
  327. package/bin/_internal/tzdata/zoneinfo/America/Merida +0 -0
  328. package/bin/_internal/tzdata/zoneinfo/America/Metlakatla +0 -0
  329. package/bin/_internal/tzdata/zoneinfo/America/Mexico_City +0 -0
  330. package/bin/_internal/tzdata/zoneinfo/America/Miquelon +0 -0
  331. package/bin/_internal/tzdata/zoneinfo/America/Moncton +0 -0
  332. package/bin/_internal/tzdata/zoneinfo/America/Monterrey +0 -0
  333. package/bin/_internal/tzdata/zoneinfo/America/Montevideo +0 -0
  334. package/bin/_internal/tzdata/zoneinfo/America/Montreal +0 -0
  335. package/bin/_internal/tzdata/zoneinfo/America/Montserrat +0 -0
  336. package/bin/_internal/tzdata/zoneinfo/America/Nassau +0 -0
  337. package/bin/_internal/tzdata/zoneinfo/America/New_York +0 -0
  338. package/bin/_internal/tzdata/zoneinfo/America/Nipigon +0 -0
  339. package/bin/_internal/tzdata/zoneinfo/America/Nome +0 -0
  340. package/bin/_internal/tzdata/zoneinfo/America/Noronha +0 -0
  341. package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/Beulah +0 -0
  342. package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/Center +0 -0
  343. package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/New_Salem +0 -0
  344. package/bin/_internal/tzdata/zoneinfo/America/Nuuk +0 -0
  345. package/bin/_internal/tzdata/zoneinfo/America/Ojinaga +0 -0
  346. package/bin/_internal/tzdata/zoneinfo/America/Panama +0 -0
  347. package/bin/_internal/tzdata/zoneinfo/America/Pangnirtung +0 -0
  348. package/bin/_internal/tzdata/zoneinfo/America/Paramaribo +0 -0
  349. package/bin/_internal/tzdata/zoneinfo/America/Phoenix +0 -0
  350. package/bin/_internal/tzdata/zoneinfo/America/Port-au-Prince +0 -0
  351. package/bin/_internal/tzdata/zoneinfo/America/Port_of_Spain +0 -0
  352. package/bin/_internal/tzdata/zoneinfo/America/Porto_Acre +0 -0
  353. package/bin/_internal/tzdata/zoneinfo/America/Porto_Velho +0 -0
  354. package/bin/_internal/tzdata/zoneinfo/America/Puerto_Rico +0 -0
  355. package/bin/_internal/tzdata/zoneinfo/America/Punta_Arenas +0 -0
  356. package/bin/_internal/tzdata/zoneinfo/America/Rainy_River +0 -0
  357. package/bin/_internal/tzdata/zoneinfo/America/Rankin_Inlet +0 -0
  358. package/bin/_internal/tzdata/zoneinfo/America/Recife +0 -0
  359. package/bin/_internal/tzdata/zoneinfo/America/Regina +0 -0
  360. package/bin/_internal/tzdata/zoneinfo/America/Resolute +0 -0
  361. package/bin/_internal/tzdata/zoneinfo/America/Rio_Branco +0 -0
  362. package/bin/_internal/tzdata/zoneinfo/America/Rosario +0 -0
  363. package/bin/_internal/tzdata/zoneinfo/America/Santa_Isabel +0 -0
  364. package/bin/_internal/tzdata/zoneinfo/America/Santarem +0 -0
  365. package/bin/_internal/tzdata/zoneinfo/America/Santiago +0 -0
  366. package/bin/_internal/tzdata/zoneinfo/America/Santo_Domingo +0 -0
  367. package/bin/_internal/tzdata/zoneinfo/America/Sao_Paulo +0 -0
  368. package/bin/_internal/tzdata/zoneinfo/America/Scoresbysund +0 -0
  369. package/bin/_internal/tzdata/zoneinfo/America/Shiprock +0 -0
  370. package/bin/_internal/tzdata/zoneinfo/America/Sitka +0 -0
  371. package/bin/_internal/tzdata/zoneinfo/America/St_Barthelemy +0 -0
  372. package/bin/_internal/tzdata/zoneinfo/America/St_Johns +0 -0
  373. package/bin/_internal/tzdata/zoneinfo/America/St_Kitts +0 -0
  374. package/bin/_internal/tzdata/zoneinfo/America/St_Lucia +0 -0
  375. package/bin/_internal/tzdata/zoneinfo/America/St_Thomas +0 -0
  376. package/bin/_internal/tzdata/zoneinfo/America/St_Vincent +0 -0
  377. package/bin/_internal/tzdata/zoneinfo/America/Swift_Current +0 -0
  378. package/bin/_internal/tzdata/zoneinfo/America/Tegucigalpa +0 -0
  379. package/bin/_internal/tzdata/zoneinfo/America/Thule +0 -0
  380. package/bin/_internal/tzdata/zoneinfo/America/Thunder_Bay +0 -0
  381. package/bin/_internal/tzdata/zoneinfo/America/Tijuana +0 -0
  382. package/bin/_internal/tzdata/zoneinfo/America/Toronto +0 -0
  383. package/bin/_internal/tzdata/zoneinfo/America/Tortola +0 -0
  384. package/bin/_internal/tzdata/zoneinfo/America/Vancouver +0 -0
  385. package/bin/_internal/tzdata/zoneinfo/America/Virgin +0 -0
  386. package/bin/_internal/tzdata/zoneinfo/America/Whitehorse +0 -0
  387. package/bin/_internal/tzdata/zoneinfo/America/Winnipeg +0 -0
  388. package/bin/_internal/tzdata/zoneinfo/America/Yakutat +0 -0
  389. package/bin/_internal/tzdata/zoneinfo/America/Yellowknife +0 -0
  390. package/bin/_internal/tzdata/zoneinfo/Antarctica/Casey +0 -0
  391. package/bin/_internal/tzdata/zoneinfo/Antarctica/Davis +0 -0
  392. package/bin/_internal/tzdata/zoneinfo/Antarctica/DumontDUrville +0 -0
  393. package/bin/_internal/tzdata/zoneinfo/Antarctica/Macquarie +0 -0
  394. package/bin/_internal/tzdata/zoneinfo/Antarctica/Mawson +0 -0
  395. package/bin/_internal/tzdata/zoneinfo/Antarctica/McMurdo +0 -0
  396. package/bin/_internal/tzdata/zoneinfo/Antarctica/Palmer +0 -0
  397. package/bin/_internal/tzdata/zoneinfo/Antarctica/Rothera +0 -0
  398. package/bin/_internal/tzdata/zoneinfo/Antarctica/South_Pole +0 -0
  399. package/bin/_internal/tzdata/zoneinfo/Antarctica/Syowa +0 -0
  400. package/bin/_internal/tzdata/zoneinfo/Antarctica/Troll +0 -0
  401. package/bin/_internal/tzdata/zoneinfo/Antarctica/Vostok +0 -0
  402. package/bin/_internal/tzdata/zoneinfo/Arctic/Longyearbyen +0 -0
  403. package/bin/_internal/tzdata/zoneinfo/Asia/Aden +0 -0
  404. package/bin/_internal/tzdata/zoneinfo/Asia/Almaty +0 -0
  405. package/bin/_internal/tzdata/zoneinfo/Asia/Amman +0 -0
  406. package/bin/_internal/tzdata/zoneinfo/Asia/Anadyr +0 -0
  407. package/bin/_internal/tzdata/zoneinfo/Asia/Aqtau +0 -0
  408. package/bin/_internal/tzdata/zoneinfo/Asia/Aqtobe +0 -0
  409. package/bin/_internal/tzdata/zoneinfo/Asia/Ashgabat +0 -0
  410. package/bin/_internal/tzdata/zoneinfo/Asia/Ashkhabad +0 -0
  411. package/bin/_internal/tzdata/zoneinfo/Asia/Atyrau +0 -0
  412. package/bin/_internal/tzdata/zoneinfo/Asia/Baghdad +0 -0
  413. package/bin/_internal/tzdata/zoneinfo/Asia/Bahrain +0 -0
  414. package/bin/_internal/tzdata/zoneinfo/Asia/Baku +0 -0
  415. package/bin/_internal/tzdata/zoneinfo/Asia/Bangkok +0 -0
  416. package/bin/_internal/tzdata/zoneinfo/Asia/Barnaul +0 -0
  417. package/bin/_internal/tzdata/zoneinfo/Asia/Beirut +0 -0
  418. package/bin/_internal/tzdata/zoneinfo/Asia/Bishkek +0 -0
  419. package/bin/_internal/tzdata/zoneinfo/Asia/Brunei +0 -0
  420. package/bin/_internal/tzdata/zoneinfo/Asia/Calcutta +0 -0
  421. package/bin/_internal/tzdata/zoneinfo/Asia/Chita +0 -0
  422. package/bin/_internal/tzdata/zoneinfo/Asia/Choibalsan +0 -0
  423. package/bin/_internal/tzdata/zoneinfo/Asia/Chongqing +0 -0
  424. package/bin/_internal/tzdata/zoneinfo/Asia/Chungking +0 -0
  425. package/bin/_internal/tzdata/zoneinfo/Asia/Colombo +0 -0
  426. package/bin/_internal/tzdata/zoneinfo/Asia/Dacca +0 -0
  427. package/bin/_internal/tzdata/zoneinfo/Asia/Damascus +0 -0
  428. package/bin/_internal/tzdata/zoneinfo/Asia/Dhaka +0 -0
  429. package/bin/_internal/tzdata/zoneinfo/Asia/Dili +0 -0
  430. package/bin/_internal/tzdata/zoneinfo/Asia/Dubai +0 -0
  431. package/bin/_internal/tzdata/zoneinfo/Asia/Dushanbe +0 -0
  432. package/bin/_internal/tzdata/zoneinfo/Asia/Famagusta +0 -0
  433. package/bin/_internal/tzdata/zoneinfo/Asia/Gaza +0 -0
  434. package/bin/_internal/tzdata/zoneinfo/Asia/Harbin +0 -0
  435. package/bin/_internal/tzdata/zoneinfo/Asia/Hebron +0 -0
  436. package/bin/_internal/tzdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  437. package/bin/_internal/tzdata/zoneinfo/Asia/Hong_Kong +0 -0
  438. package/bin/_internal/tzdata/zoneinfo/Asia/Hovd +0 -0
  439. package/bin/_internal/tzdata/zoneinfo/Asia/Irkutsk +0 -0
  440. package/bin/_internal/tzdata/zoneinfo/Asia/Istanbul +0 -0
  441. package/bin/_internal/tzdata/zoneinfo/Asia/Jakarta +0 -0
  442. package/bin/_internal/tzdata/zoneinfo/Asia/Jayapura +0 -0
  443. package/bin/_internal/tzdata/zoneinfo/Asia/Jerusalem +0 -0
  444. package/bin/_internal/tzdata/zoneinfo/Asia/Kabul +0 -0
  445. package/bin/_internal/tzdata/zoneinfo/Asia/Kamchatka +0 -0
  446. package/bin/_internal/tzdata/zoneinfo/Asia/Karachi +0 -0
  447. package/bin/_internal/tzdata/zoneinfo/Asia/Kashgar +0 -0
  448. package/bin/_internal/tzdata/zoneinfo/Asia/Kathmandu +0 -0
  449. package/bin/_internal/tzdata/zoneinfo/Asia/Katmandu +0 -0
  450. package/bin/_internal/tzdata/zoneinfo/Asia/Khandyga +0 -0
  451. package/bin/_internal/tzdata/zoneinfo/Asia/Kolkata +0 -0
  452. package/bin/_internal/tzdata/zoneinfo/Asia/Krasnoyarsk +0 -0
  453. package/bin/_internal/tzdata/zoneinfo/Asia/Kuala_Lumpur +0 -0
  454. package/bin/_internal/tzdata/zoneinfo/Asia/Kuching +0 -0
  455. package/bin/_internal/tzdata/zoneinfo/Asia/Kuwait +0 -0
  456. package/bin/_internal/tzdata/zoneinfo/Asia/Macao +0 -0
  457. package/bin/_internal/tzdata/zoneinfo/Asia/Macau +0 -0
  458. package/bin/_internal/tzdata/zoneinfo/Asia/Magadan +0 -0
  459. package/bin/_internal/tzdata/zoneinfo/Asia/Makassar +0 -0
  460. package/bin/_internal/tzdata/zoneinfo/Asia/Manila +0 -0
  461. package/bin/_internal/tzdata/zoneinfo/Asia/Muscat +0 -0
  462. package/bin/_internal/tzdata/zoneinfo/Asia/Nicosia +0 -0
  463. package/bin/_internal/tzdata/zoneinfo/Asia/Novokuznetsk +0 -0
  464. package/bin/_internal/tzdata/zoneinfo/Asia/Novosibirsk +0 -0
  465. package/bin/_internal/tzdata/zoneinfo/Asia/Omsk +0 -0
  466. package/bin/_internal/tzdata/zoneinfo/Asia/Oral +0 -0
  467. package/bin/_internal/tzdata/zoneinfo/Asia/Phnom_Penh +0 -0
  468. package/bin/_internal/tzdata/zoneinfo/Asia/Pontianak +0 -0
  469. package/bin/_internal/tzdata/zoneinfo/Asia/Pyongyang +0 -0
  470. package/bin/_internal/tzdata/zoneinfo/Asia/Qatar +0 -0
  471. package/bin/_internal/tzdata/zoneinfo/Asia/Qostanay +0 -0
  472. package/bin/_internal/tzdata/zoneinfo/Asia/Qyzylorda +0 -0
  473. package/bin/_internal/tzdata/zoneinfo/Asia/Rangoon +0 -0
  474. package/bin/_internal/tzdata/zoneinfo/Asia/Riyadh +0 -0
  475. package/bin/_internal/tzdata/zoneinfo/Asia/Saigon +0 -0
  476. package/bin/_internal/tzdata/zoneinfo/Asia/Sakhalin +0 -0
  477. package/bin/_internal/tzdata/zoneinfo/Asia/Samarkand +0 -0
  478. package/bin/_internal/tzdata/zoneinfo/Asia/Seoul +0 -0
  479. package/bin/_internal/tzdata/zoneinfo/Asia/Shanghai +0 -0
  480. package/bin/_internal/tzdata/zoneinfo/Asia/Singapore +0 -0
  481. package/bin/_internal/tzdata/zoneinfo/Asia/Srednekolymsk +0 -0
  482. package/bin/_internal/tzdata/zoneinfo/Asia/Taipei +0 -0
  483. package/bin/_internal/tzdata/zoneinfo/Asia/Tashkent +0 -0
  484. package/bin/_internal/tzdata/zoneinfo/Asia/Tbilisi +0 -0
  485. package/bin/_internal/tzdata/zoneinfo/Asia/Tehran +0 -0
  486. package/bin/_internal/tzdata/zoneinfo/Asia/Tel_Aviv +0 -0
  487. package/bin/_internal/tzdata/zoneinfo/Asia/Thimbu +0 -0
  488. package/bin/_internal/tzdata/zoneinfo/Asia/Thimphu +0 -0
  489. package/bin/_internal/tzdata/zoneinfo/Asia/Tokyo +0 -0
  490. package/bin/_internal/tzdata/zoneinfo/Asia/Tomsk +0 -0
  491. package/bin/_internal/tzdata/zoneinfo/Asia/Ujung_Pandang +0 -0
  492. package/bin/_internal/tzdata/zoneinfo/Asia/Ulaanbaatar +0 -0
  493. package/bin/_internal/tzdata/zoneinfo/Asia/Ulan_Bator +0 -0
  494. package/bin/_internal/tzdata/zoneinfo/Asia/Urumqi +0 -0
  495. package/bin/_internal/tzdata/zoneinfo/Asia/Ust-Nera +0 -0
  496. package/bin/_internal/tzdata/zoneinfo/Asia/Vientiane +0 -0
  497. package/bin/_internal/tzdata/zoneinfo/Asia/Vladivostok +0 -0
  498. package/bin/_internal/tzdata/zoneinfo/Asia/Yakutsk +0 -0
  499. package/bin/_internal/tzdata/zoneinfo/Asia/Yangon +0 -0
  500. package/bin/_internal/tzdata/zoneinfo/Asia/Yekaterinburg +0 -0
  501. package/bin/_internal/tzdata/zoneinfo/Asia/Yerevan +0 -0
  502. package/bin/_internal/tzdata/zoneinfo/Atlantic/Azores +0 -0
  503. package/bin/_internal/tzdata/zoneinfo/Atlantic/Bermuda +0 -0
  504. package/bin/_internal/tzdata/zoneinfo/Atlantic/Canary +0 -0
  505. package/bin/_internal/tzdata/zoneinfo/Atlantic/Cape_Verde +0 -0
  506. package/bin/_internal/tzdata/zoneinfo/Atlantic/Faeroe +0 -0
  507. package/bin/_internal/tzdata/zoneinfo/Atlantic/Faroe +0 -0
  508. package/bin/_internal/tzdata/zoneinfo/Atlantic/Jan_Mayen +0 -0
  509. package/bin/_internal/tzdata/zoneinfo/Atlantic/Madeira +0 -0
  510. package/bin/_internal/tzdata/zoneinfo/Atlantic/Reykjavik +0 -0
  511. package/bin/_internal/tzdata/zoneinfo/Atlantic/South_Georgia +0 -0
  512. package/bin/_internal/tzdata/zoneinfo/Atlantic/St_Helena +0 -0
  513. package/bin/_internal/tzdata/zoneinfo/Atlantic/Stanley +0 -0
  514. package/bin/_internal/tzdata/zoneinfo/Australia/ACT +0 -0
  515. package/bin/_internal/tzdata/zoneinfo/Australia/Adelaide +0 -0
  516. package/bin/_internal/tzdata/zoneinfo/Australia/Brisbane +0 -0
  517. package/bin/_internal/tzdata/zoneinfo/Australia/Broken_Hill +0 -0
  518. package/bin/_internal/tzdata/zoneinfo/Australia/Canberra +0 -0
  519. package/bin/_internal/tzdata/zoneinfo/Australia/Currie +0 -0
  520. package/bin/_internal/tzdata/zoneinfo/Australia/Darwin +0 -0
  521. package/bin/_internal/tzdata/zoneinfo/Australia/Eucla +0 -0
  522. package/bin/_internal/tzdata/zoneinfo/Australia/Hobart +0 -0
  523. package/bin/_internal/tzdata/zoneinfo/Australia/LHI +0 -0
  524. package/bin/_internal/tzdata/zoneinfo/Australia/Lindeman +0 -0
  525. package/bin/_internal/tzdata/zoneinfo/Australia/Lord_Howe +0 -0
  526. package/bin/_internal/tzdata/zoneinfo/Australia/Melbourne +0 -0
  527. package/bin/_internal/tzdata/zoneinfo/Australia/NSW +0 -0
  528. package/bin/_internal/tzdata/zoneinfo/Australia/North +0 -0
  529. package/bin/_internal/tzdata/zoneinfo/Australia/Perth +0 -0
  530. package/bin/_internal/tzdata/zoneinfo/Australia/Queensland +0 -0
  531. package/bin/_internal/tzdata/zoneinfo/Australia/South +0 -0
  532. package/bin/_internal/tzdata/zoneinfo/Australia/Sydney +0 -0
  533. package/bin/_internal/tzdata/zoneinfo/Australia/Tasmania +0 -0
  534. package/bin/_internal/tzdata/zoneinfo/Australia/Victoria +0 -0
  535. package/bin/_internal/tzdata/zoneinfo/Australia/West +0 -0
  536. package/bin/_internal/tzdata/zoneinfo/Australia/Yancowinna +0 -0
  537. package/bin/_internal/tzdata/zoneinfo/Brazil/Acre +0 -0
  538. package/bin/_internal/tzdata/zoneinfo/Brazil/DeNoronha +0 -0
  539. package/bin/_internal/tzdata/zoneinfo/Brazil/East +0 -0
  540. package/bin/_internal/tzdata/zoneinfo/Brazil/West +0 -0
  541. package/bin/_internal/tzdata/zoneinfo/CET +0 -0
  542. package/bin/_internal/tzdata/zoneinfo/CST6CDT +0 -0
  543. package/bin/_internal/tzdata/zoneinfo/Canada/Atlantic +0 -0
  544. package/bin/_internal/tzdata/zoneinfo/Canada/Central +0 -0
  545. package/bin/_internal/tzdata/zoneinfo/Canada/Eastern +0 -0
  546. package/bin/_internal/tzdata/zoneinfo/Canada/Mountain +0 -0
  547. package/bin/_internal/tzdata/zoneinfo/Canada/Newfoundland +0 -0
  548. package/bin/_internal/tzdata/zoneinfo/Canada/Pacific +0 -0
  549. package/bin/_internal/tzdata/zoneinfo/Canada/Saskatchewan +0 -0
  550. package/bin/_internal/tzdata/zoneinfo/Canada/Yukon +0 -0
  551. package/bin/_internal/tzdata/zoneinfo/Chile/Continental +0 -0
  552. package/bin/_internal/tzdata/zoneinfo/Chile/EasterIsland +0 -0
  553. package/bin/_internal/tzdata/zoneinfo/Cuba +0 -0
  554. package/bin/_internal/tzdata/zoneinfo/EET +0 -0
  555. package/bin/_internal/tzdata/zoneinfo/EST +0 -0
  556. package/bin/_internal/tzdata/zoneinfo/EST5EDT +0 -0
  557. package/bin/_internal/tzdata/zoneinfo/Egypt +0 -0
  558. package/bin/_internal/tzdata/zoneinfo/Eire +0 -0
  559. package/bin/_internal/tzdata/zoneinfo/Etc/GMT +0 -0
  560. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+0 +0 -0
  561. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+1 +0 -0
  562. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+10 +0 -0
  563. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+11 +0 -0
  564. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+12 +0 -0
  565. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+2 +0 -0
  566. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+3 +0 -0
  567. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+4 +0 -0
  568. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+5 +0 -0
  569. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+6 +0 -0
  570. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+7 +0 -0
  571. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+8 +0 -0
  572. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+9 +0 -0
  573. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-0 +0 -0
  574. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-1 +0 -0
  575. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-10 +0 -0
  576. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-11 +0 -0
  577. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-12 +0 -0
  578. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-13 +0 -0
  579. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-14 +0 -0
  580. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-2 +0 -0
  581. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-3 +0 -0
  582. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-4 +0 -0
  583. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-5 +0 -0
  584. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-6 +0 -0
  585. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-7 +0 -0
  586. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-8 +0 -0
  587. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-9 +0 -0
  588. package/bin/_internal/tzdata/zoneinfo/Etc/GMT0 +0 -0
  589. package/bin/_internal/tzdata/zoneinfo/Etc/Greenwich +0 -0
  590. package/bin/_internal/tzdata/zoneinfo/Etc/UCT +0 -0
  591. package/bin/_internal/tzdata/zoneinfo/Etc/UTC +0 -0
  592. package/bin/_internal/tzdata/zoneinfo/Etc/Universal +0 -0
  593. package/bin/_internal/tzdata/zoneinfo/Etc/Zulu +0 -0
  594. package/bin/_internal/tzdata/zoneinfo/Europe/Amsterdam +0 -0
  595. package/bin/_internal/tzdata/zoneinfo/Europe/Andorra +0 -0
  596. package/bin/_internal/tzdata/zoneinfo/Europe/Astrakhan +0 -0
  597. package/bin/_internal/tzdata/zoneinfo/Europe/Athens +0 -0
  598. package/bin/_internal/tzdata/zoneinfo/Europe/Belfast +0 -0
  599. package/bin/_internal/tzdata/zoneinfo/Europe/Belgrade +0 -0
  600. package/bin/_internal/tzdata/zoneinfo/Europe/Berlin +0 -0
  601. package/bin/_internal/tzdata/zoneinfo/Europe/Bratislava +0 -0
  602. package/bin/_internal/tzdata/zoneinfo/Europe/Brussels +0 -0
  603. package/bin/_internal/tzdata/zoneinfo/Europe/Bucharest +0 -0
  604. package/bin/_internal/tzdata/zoneinfo/Europe/Budapest +0 -0
  605. package/bin/_internal/tzdata/zoneinfo/Europe/Busingen +0 -0
  606. package/bin/_internal/tzdata/zoneinfo/Europe/Chisinau +0 -0
  607. package/bin/_internal/tzdata/zoneinfo/Europe/Copenhagen +0 -0
  608. package/bin/_internal/tzdata/zoneinfo/Europe/Dublin +0 -0
  609. package/bin/_internal/tzdata/zoneinfo/Europe/Gibraltar +0 -0
  610. package/bin/_internal/tzdata/zoneinfo/Europe/Guernsey +0 -0
  611. package/bin/_internal/tzdata/zoneinfo/Europe/Helsinki +0 -0
  612. package/bin/_internal/tzdata/zoneinfo/Europe/Isle_of_Man +0 -0
  613. package/bin/_internal/tzdata/zoneinfo/Europe/Istanbul +0 -0
  614. package/bin/_internal/tzdata/zoneinfo/Europe/Jersey +0 -0
  615. package/bin/_internal/tzdata/zoneinfo/Europe/Kaliningrad +0 -0
  616. package/bin/_internal/tzdata/zoneinfo/Europe/Kiev +0 -0
  617. package/bin/_internal/tzdata/zoneinfo/Europe/Kirov +0 -0
  618. package/bin/_internal/tzdata/zoneinfo/Europe/Kyiv +0 -0
  619. package/bin/_internal/tzdata/zoneinfo/Europe/Lisbon +0 -0
  620. package/bin/_internal/tzdata/zoneinfo/Europe/Ljubljana +0 -0
  621. package/bin/_internal/tzdata/zoneinfo/Europe/London +0 -0
  622. package/bin/_internal/tzdata/zoneinfo/Europe/Luxembourg +0 -0
  623. package/bin/_internal/tzdata/zoneinfo/Europe/Madrid +0 -0
  624. package/bin/_internal/tzdata/zoneinfo/Europe/Malta +0 -0
  625. package/bin/_internal/tzdata/zoneinfo/Europe/Mariehamn +0 -0
  626. package/bin/_internal/tzdata/zoneinfo/Europe/Minsk +0 -0
  627. package/bin/_internal/tzdata/zoneinfo/Europe/Monaco +0 -0
  628. package/bin/_internal/tzdata/zoneinfo/Europe/Moscow +0 -0
  629. package/bin/_internal/tzdata/zoneinfo/Europe/Nicosia +0 -0
  630. package/bin/_internal/tzdata/zoneinfo/Europe/Oslo +0 -0
  631. package/bin/_internal/tzdata/zoneinfo/Europe/Paris +0 -0
  632. package/bin/_internal/tzdata/zoneinfo/Europe/Podgorica +0 -0
  633. package/bin/_internal/tzdata/zoneinfo/Europe/Prague +0 -0
  634. package/bin/_internal/tzdata/zoneinfo/Europe/Riga +0 -0
  635. package/bin/_internal/tzdata/zoneinfo/Europe/Rome +0 -0
  636. package/bin/_internal/tzdata/zoneinfo/Europe/Samara +0 -0
  637. package/bin/_internal/tzdata/zoneinfo/Europe/San_Marino +0 -0
  638. package/bin/_internal/tzdata/zoneinfo/Europe/Sarajevo +0 -0
  639. package/bin/_internal/tzdata/zoneinfo/Europe/Saratov +0 -0
  640. package/bin/_internal/tzdata/zoneinfo/Europe/Simferopol +0 -0
  641. package/bin/_internal/tzdata/zoneinfo/Europe/Skopje +0 -0
  642. package/bin/_internal/tzdata/zoneinfo/Europe/Sofia +0 -0
  643. package/bin/_internal/tzdata/zoneinfo/Europe/Stockholm +0 -0
  644. package/bin/_internal/tzdata/zoneinfo/Europe/Tallinn +0 -0
  645. package/bin/_internal/tzdata/zoneinfo/Europe/Tirane +0 -0
  646. package/bin/_internal/tzdata/zoneinfo/Europe/Tiraspol +0 -0
  647. package/bin/_internal/tzdata/zoneinfo/Europe/Ulyanovsk +0 -0
  648. package/bin/_internal/tzdata/zoneinfo/Europe/Uzhgorod +0 -0
  649. package/bin/_internal/tzdata/zoneinfo/Europe/Vaduz +0 -0
  650. package/bin/_internal/tzdata/zoneinfo/Europe/Vatican +0 -0
  651. package/bin/_internal/tzdata/zoneinfo/Europe/Vienna +0 -0
  652. package/bin/_internal/tzdata/zoneinfo/Europe/Vilnius +0 -0
  653. package/bin/_internal/tzdata/zoneinfo/Europe/Volgograd +0 -0
  654. package/bin/_internal/tzdata/zoneinfo/Europe/Warsaw +0 -0
  655. package/bin/_internal/tzdata/zoneinfo/Europe/Zagreb +0 -0
  656. package/bin/_internal/tzdata/zoneinfo/Europe/Zaporozhye +0 -0
  657. package/bin/_internal/tzdata/zoneinfo/Europe/Zurich +0 -0
  658. package/bin/_internal/tzdata/zoneinfo/Factory +0 -0
  659. package/bin/_internal/tzdata/zoneinfo/GB +0 -0
  660. package/bin/_internal/tzdata/zoneinfo/GB-Eire +0 -0
  661. package/bin/_internal/tzdata/zoneinfo/GMT +0 -0
  662. package/bin/_internal/tzdata/zoneinfo/GMT+0 +0 -0
  663. package/bin/_internal/tzdata/zoneinfo/GMT-0 +0 -0
  664. package/bin/_internal/tzdata/zoneinfo/GMT0 +0 -0
  665. package/bin/_internal/tzdata/zoneinfo/Greenwich +0 -0
  666. package/bin/_internal/tzdata/zoneinfo/HST +0 -0
  667. package/bin/_internal/tzdata/zoneinfo/Hongkong +0 -0
  668. package/bin/_internal/tzdata/zoneinfo/Iceland +0 -0
  669. package/bin/_internal/tzdata/zoneinfo/Indian/Antananarivo +0 -0
  670. package/bin/_internal/tzdata/zoneinfo/Indian/Chagos +0 -0
  671. package/bin/_internal/tzdata/zoneinfo/Indian/Christmas +0 -0
  672. package/bin/_internal/tzdata/zoneinfo/Indian/Cocos +0 -0
  673. package/bin/_internal/tzdata/zoneinfo/Indian/Comoro +0 -0
  674. package/bin/_internal/tzdata/zoneinfo/Indian/Kerguelen +0 -0
  675. package/bin/_internal/tzdata/zoneinfo/Indian/Mahe +0 -0
  676. package/bin/_internal/tzdata/zoneinfo/Indian/Maldives +0 -0
  677. package/bin/_internal/tzdata/zoneinfo/Indian/Mauritius +0 -0
  678. package/bin/_internal/tzdata/zoneinfo/Indian/Mayotte +0 -0
  679. package/bin/_internal/tzdata/zoneinfo/Indian/Reunion +0 -0
  680. package/bin/_internal/tzdata/zoneinfo/Iran +0 -0
  681. package/bin/_internal/tzdata/zoneinfo/Israel +0 -0
  682. package/bin/_internal/tzdata/zoneinfo/Jamaica +0 -0
  683. package/bin/_internal/tzdata/zoneinfo/Japan +0 -0
  684. package/bin/_internal/tzdata/zoneinfo/Kwajalein +0 -0
  685. package/bin/_internal/tzdata/zoneinfo/Libya +0 -0
  686. package/bin/_internal/tzdata/zoneinfo/MET +0 -0
  687. package/bin/_internal/tzdata/zoneinfo/MST +0 -0
  688. package/bin/_internal/tzdata/zoneinfo/MST7MDT +0 -0
  689. package/bin/_internal/tzdata/zoneinfo/Mexico/BajaNorte +0 -0
  690. package/bin/_internal/tzdata/zoneinfo/Mexico/BajaSur +0 -0
  691. package/bin/_internal/tzdata/zoneinfo/Mexico/General +0 -0
  692. package/bin/_internal/tzdata/zoneinfo/NZ +0 -0
  693. package/bin/_internal/tzdata/zoneinfo/NZ-CHAT +0 -0
  694. package/bin/_internal/tzdata/zoneinfo/Navajo +0 -0
  695. package/bin/_internal/tzdata/zoneinfo/PRC +0 -0
  696. package/bin/_internal/tzdata/zoneinfo/PST8PDT +0 -0
  697. package/bin/_internal/tzdata/zoneinfo/Pacific/Apia +0 -0
  698. package/bin/_internal/tzdata/zoneinfo/Pacific/Auckland +0 -0
  699. package/bin/_internal/tzdata/zoneinfo/Pacific/Bougainville +0 -0
  700. package/bin/_internal/tzdata/zoneinfo/Pacific/Chatham +0 -0
  701. package/bin/_internal/tzdata/zoneinfo/Pacific/Chuuk +0 -0
  702. package/bin/_internal/tzdata/zoneinfo/Pacific/Easter +0 -0
  703. package/bin/_internal/tzdata/zoneinfo/Pacific/Efate +0 -0
  704. package/bin/_internal/tzdata/zoneinfo/Pacific/Enderbury +0 -0
  705. package/bin/_internal/tzdata/zoneinfo/Pacific/Fakaofo +0 -0
  706. package/bin/_internal/tzdata/zoneinfo/Pacific/Fiji +0 -0
  707. package/bin/_internal/tzdata/zoneinfo/Pacific/Funafuti +0 -0
  708. package/bin/_internal/tzdata/zoneinfo/Pacific/Galapagos +0 -0
  709. package/bin/_internal/tzdata/zoneinfo/Pacific/Gambier +0 -0
  710. package/bin/_internal/tzdata/zoneinfo/Pacific/Guadalcanal +0 -0
  711. package/bin/_internal/tzdata/zoneinfo/Pacific/Guam +0 -0
  712. package/bin/_internal/tzdata/zoneinfo/Pacific/Honolulu +0 -0
  713. package/bin/_internal/tzdata/zoneinfo/Pacific/Johnston +0 -0
  714. package/bin/_internal/tzdata/zoneinfo/Pacific/Kanton +0 -0
  715. package/bin/_internal/tzdata/zoneinfo/Pacific/Kiritimati +0 -0
  716. package/bin/_internal/tzdata/zoneinfo/Pacific/Kosrae +0 -0
  717. package/bin/_internal/tzdata/zoneinfo/Pacific/Kwajalein +0 -0
  718. package/bin/_internal/tzdata/zoneinfo/Pacific/Majuro +0 -0
  719. package/bin/_internal/tzdata/zoneinfo/Pacific/Marquesas +0 -0
  720. package/bin/_internal/tzdata/zoneinfo/Pacific/Midway +0 -0
  721. package/bin/_internal/tzdata/zoneinfo/Pacific/Nauru +0 -0
  722. package/bin/_internal/tzdata/zoneinfo/Pacific/Niue +0 -0
  723. package/bin/_internal/tzdata/zoneinfo/Pacific/Norfolk +0 -0
  724. package/bin/_internal/tzdata/zoneinfo/Pacific/Noumea +0 -0
  725. package/bin/_internal/tzdata/zoneinfo/Pacific/Pago_Pago +0 -0
  726. package/bin/_internal/tzdata/zoneinfo/Pacific/Palau +0 -0
  727. package/bin/_internal/tzdata/zoneinfo/Pacific/Pitcairn +0 -0
  728. package/bin/_internal/tzdata/zoneinfo/Pacific/Pohnpei +0 -0
  729. package/bin/_internal/tzdata/zoneinfo/Pacific/Ponape +0 -0
  730. package/bin/_internal/tzdata/zoneinfo/Pacific/Port_Moresby +0 -0
  731. package/bin/_internal/tzdata/zoneinfo/Pacific/Rarotonga +0 -0
  732. package/bin/_internal/tzdata/zoneinfo/Pacific/Saipan +0 -0
  733. package/bin/_internal/tzdata/zoneinfo/Pacific/Samoa +0 -0
  734. package/bin/_internal/tzdata/zoneinfo/Pacific/Tahiti +0 -0
  735. package/bin/_internal/tzdata/zoneinfo/Pacific/Tarawa +0 -0
  736. package/bin/_internal/tzdata/zoneinfo/Pacific/Tongatapu +0 -0
  737. package/bin/_internal/tzdata/zoneinfo/Pacific/Truk +0 -0
  738. package/bin/_internal/tzdata/zoneinfo/Pacific/Wake +0 -0
  739. package/bin/_internal/tzdata/zoneinfo/Pacific/Wallis +0 -0
  740. package/bin/_internal/tzdata/zoneinfo/Pacific/Yap +0 -0
  741. package/bin/_internal/tzdata/zoneinfo/Poland +0 -0
  742. package/bin/_internal/tzdata/zoneinfo/Portugal +0 -0
  743. package/bin/_internal/tzdata/zoneinfo/ROC +0 -0
  744. package/bin/_internal/tzdata/zoneinfo/ROK +0 -0
  745. package/bin/_internal/tzdata/zoneinfo/Singapore +0 -0
  746. package/bin/_internal/tzdata/zoneinfo/Turkey +0 -0
  747. package/bin/_internal/tzdata/zoneinfo/UCT +0 -0
  748. package/bin/_internal/tzdata/zoneinfo/US/Alaska +0 -0
  749. package/bin/_internal/tzdata/zoneinfo/US/Aleutian +0 -0
  750. package/bin/_internal/tzdata/zoneinfo/US/Arizona +0 -0
  751. package/bin/_internal/tzdata/zoneinfo/US/Central +0 -0
  752. package/bin/_internal/tzdata/zoneinfo/US/East-Indiana +0 -0
  753. package/bin/_internal/tzdata/zoneinfo/US/Eastern +0 -0
  754. package/bin/_internal/tzdata/zoneinfo/US/Hawaii +0 -0
  755. package/bin/_internal/tzdata/zoneinfo/US/Indiana-Starke +0 -0
  756. package/bin/_internal/tzdata/zoneinfo/US/Michigan +0 -0
  757. package/bin/_internal/tzdata/zoneinfo/US/Mountain +0 -0
  758. package/bin/_internal/tzdata/zoneinfo/US/Pacific +0 -0
  759. package/bin/_internal/tzdata/zoneinfo/US/Samoa +0 -0
  760. package/bin/_internal/tzdata/zoneinfo/UTC +0 -0
  761. package/bin/_internal/tzdata/zoneinfo/Universal +0 -0
  762. package/bin/_internal/tzdata/zoneinfo/W-SU +0 -0
  763. package/bin/_internal/tzdata/zoneinfo/WET +0 -0
  764. package/bin/_internal/tzdata/zoneinfo/Zulu +0 -0
  765. package/bin/_internal/tzdata/zoneinfo/iso3166.tab +279 -0
  766. package/bin/_internal/tzdata/zoneinfo/leapseconds +86 -0
  767. package/bin/_internal/tzdata/zoneinfo/tzdata.zi +4180 -0
  768. package/bin/_internal/tzdata/zoneinfo/zone.tab +448 -0
  769. package/bin/_internal/tzdata/zoneinfo/zone1970.tab +375 -0
  770. package/bin/_internal/tzdata/zoneinfo/zonenow.tab +299 -0
  771. package/bin/_internal/tzdata/zones +598 -0
  772. package/bin/_internal/unicodedata.pyd +0 -0
  773. package/bin/exchange-cli.exe +0 -0
  774. package/package.json +20 -0
@@ -0,0 +1,43 @@
1
+ from ..errors import InvalidEnumValue
2
+ from ..properties import Notification
3
+ from ..util import MNS, create_element
4
+ from .common import EWSService, add_xml_child
5
+
6
+
7
+ class SendNotification(EWSService):
8
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/sendnotification
9
+
10
+ This service is implemented backwards compared to other services. We use it to parse the XML body of push
11
+ notifications we receive on the callback URL defined in a push subscription, and to create responses to these
12
+ push notifications.
13
+ """
14
+
15
+ SERVICE_NAME = "SendNotification"
16
+ OK = "OK"
17
+ UNSUBSCRIBE = "Unsubscribe"
18
+ STATUS_CHOICES = (OK, UNSUBSCRIBE)
19
+
20
+ def ok_payload(self):
21
+ return self.wrap(content=self.get_payload(status=self.OK))
22
+
23
+ def unsubscribe_payload(self):
24
+ return self.wrap(content=self.get_payload(status=self.UNSUBSCRIBE))
25
+
26
+ def _elem_to_obj(self, elem):
27
+ return Notification.from_xml(elem=elem, account=None)
28
+
29
+ @classmethod
30
+ def _response_tag(cls):
31
+ """Return the name of the element containing the service response."""
32
+ return f"{{{MNS}}}{cls.SERVICE_NAME}"
33
+
34
+ @classmethod
35
+ def _get_elements_in_container(cls, container):
36
+ return container.findall(Notification.response_tag())
37
+
38
+ def get_payload(self, status):
39
+ if status not in self.STATUS_CHOICES:
40
+ raise InvalidEnumValue("status", status, self.STATUS_CHOICES)
41
+ payload = create_element(f"m:{self.SERVICE_NAME}Result")
42
+ add_xml_child(payload, "m:SubscriptionStatus", status)
43
+ return payload
@@ -0,0 +1,34 @@
1
+ from ..errors import InvalidTypeError
2
+ from ..properties import AvailabilityMailbox, Mailbox
3
+ from ..settings import OofSettings
4
+ from ..util import MNS, create_element, set_xml_value
5
+ from .common import EWSAccountService
6
+
7
+
8
+ class SetUserOofSettings(EWSAccountService):
9
+ """Set automatic replies for the specified mailbox.
10
+ MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/setuseroofsettings-operation
11
+ """
12
+
13
+ SERVICE_NAME = "SetUserOofSettings"
14
+ returns_elements = False
15
+
16
+ def call(self, oof_settings, mailbox):
17
+ if not isinstance(oof_settings, OofSettings):
18
+ raise InvalidTypeError("oof_settings", oof_settings, OofSettings)
19
+ if not isinstance(mailbox, Mailbox):
20
+ raise InvalidTypeError("mailbox", mailbox, Mailbox)
21
+ return self._get_elements(payload=self.get_payload(oof_settings=oof_settings, mailbox=mailbox))
22
+
23
+ def get_payload(self, oof_settings, mailbox):
24
+ payload = create_element(f"m:{self.SERVICE_NAME}Request")
25
+ set_xml_value(payload, AvailabilityMailbox.from_mailbox(mailbox), version=self.account.version)
26
+ return set_xml_value(payload, oof_settings, version=self.account.version)
27
+
28
+ def _get_element_container(self, message, name=None):
29
+ message = message.find(self._response_message_tag())
30
+ return super()._get_element_container(message=message, name=name)
31
+
32
+ @classmethod
33
+ def _response_message_tag(cls):
34
+ return f"{{{MNS}}}ResponseMessage"
@@ -0,0 +1,125 @@
1
+ """The 'Subscribe' service has three different modes - pull, push and streaming - with different signatures. Implement
2
+ as three distinct classes.
3
+ """
4
+
5
+ import abc
6
+
7
+ from ..util import MNS, create_element
8
+ from .common import EWSAccountService, add_xml_child, folder_ids_element
9
+
10
+
11
+ class Subscribe(EWSAccountService, metaclass=abc.ABCMeta):
12
+ """Base class for subscription classes.
13
+
14
+ MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/subscribe-operation"""
15
+
16
+ SERVICE_NAME = "Subscribe"
17
+ EVENT_TYPES = (
18
+ "CopiedEvent",
19
+ "CreatedEvent",
20
+ "DeletedEvent",
21
+ "ModifiedEvent",
22
+ "MovedEvent",
23
+ "NewMailEvent",
24
+ "FreeBusyChangedEvent",
25
+ )
26
+ subscription_request_elem_tag = None
27
+
28
+ def _partial_call(self, payload_func, folders, event_types, **kwargs):
29
+ if set(event_types) - set(self.EVENT_TYPES):
30
+ raise ValueError(f"'event_types' values must consist of values in {self.EVENT_TYPES}")
31
+ return self._elems_to_objs(
32
+ self._get_elements(payload=payload_func(folders=folders, event_types=event_types, **kwargs))
33
+ )
34
+
35
+ def _elem_to_obj(self, elem):
36
+ subscription_elem, watermark_elem = elem
37
+ return subscription_elem.text, watermark_elem.text
38
+
39
+ @classmethod
40
+ def _get_elements_in_container(cls, container):
41
+ return [(container.find(f"{{{MNS}}}SubscriptionId"), container.find(f"{{{MNS}}}Watermark"))]
42
+
43
+ def _partial_payload(self, folders, event_types):
44
+ if folders is None:
45
+ # Interpret this as "all folders"
46
+ request_elem = create_element(self.subscription_request_elem_tag, attrs=dict(SubscribeToAllFolders=True))
47
+ else:
48
+ request_elem = create_element(self.subscription_request_elem_tag)
49
+ folder_ids = folder_ids_element(folders=folders, version=self.account.version, tag="t:FolderIds")
50
+ request_elem.append(folder_ids)
51
+ event_types_elem = create_element("t:EventTypes")
52
+ for event_type in event_types:
53
+ add_xml_child(event_types_elem, "t:EventType", event_type)
54
+ request_elem.append(event_types_elem)
55
+ return request_elem
56
+
57
+
58
+ class SubscribeToPull(Subscribe):
59
+ # https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/pullsubscriptionrequest
60
+ subscription_request_elem_tag = "m:PullSubscriptionRequest"
61
+ prefer_affinity = True
62
+
63
+ def call(self, folders, event_types, watermark, timeout):
64
+ yield from self._partial_call(
65
+ payload_func=self.get_payload,
66
+ folders=folders,
67
+ event_types=event_types,
68
+ timeout=timeout,
69
+ watermark=watermark,
70
+ )
71
+
72
+ def get_payload(self, folders, event_types, watermark, timeout):
73
+ payload = create_element(f"m:{self.SERVICE_NAME}")
74
+ request_elem = self._partial_payload(folders=folders, event_types=event_types)
75
+ if watermark:
76
+ add_xml_child(request_elem, "m:Watermark", watermark)
77
+ add_xml_child(request_elem, "t:Timeout", timeout) # In minutes
78
+ payload.append(request_elem)
79
+ return payload
80
+
81
+
82
+ class SubscribeToPush(Subscribe):
83
+ # https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/pushsubscriptionrequest
84
+ subscription_request_elem_tag = "m:PushSubscriptionRequest"
85
+
86
+ def call(self, folders, event_types, watermark, status_frequency, url):
87
+ yield from self._partial_call(
88
+ payload_func=self.get_payload,
89
+ folders=folders,
90
+ event_types=event_types,
91
+ status_frequency=status_frequency,
92
+ url=url,
93
+ watermark=watermark,
94
+ )
95
+
96
+ def get_payload(self, folders, event_types, watermark, status_frequency, url):
97
+ payload = create_element(f"m:{self.SERVICE_NAME}")
98
+ request_elem = self._partial_payload(folders=folders, event_types=event_types)
99
+ if watermark:
100
+ add_xml_child(request_elem, "m:Watermark", watermark)
101
+ add_xml_child(request_elem, "t:StatusFrequency", status_frequency) # In minutes
102
+ add_xml_child(request_elem, "t:URL", url)
103
+ payload.append(request_elem)
104
+ return payload
105
+
106
+
107
+ class SubscribeToStreaming(Subscribe):
108
+ # https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/streamingsubscriptionrequest
109
+ subscription_request_elem_tag = "m:StreamingSubscriptionRequest"
110
+ prefer_affinity = True
111
+
112
+ def call(self, folders, event_types):
113
+ yield from self._partial_call(payload_func=self.get_payload, folders=folders, event_types=event_types)
114
+
115
+ def _elem_to_obj(self, elem):
116
+ return elem.text
117
+
118
+ @classmethod
119
+ def _get_elements_in_container(cls, container):
120
+ return [container.find(f"{{{MNS}}}SubscriptionId")]
121
+
122
+ def get_payload(self, folders, event_types):
123
+ payload = create_element(f"m:{self.SERVICE_NAME}")
124
+ payload.append(self._partial_payload(folders=folders, event_types=event_types))
125
+ return payload
@@ -0,0 +1,95 @@
1
+ import abc
2
+ import logging
3
+
4
+ from ..properties import FolderId
5
+ from ..util import MNS, TNS, create_element, xml_text_to_value
6
+ from .common import EWSAccountService, add_xml_child, folder_ids_element, parse_folder_elem, shape_element
7
+
8
+ log = logging.getLogger(__name__)
9
+
10
+
11
+ class SyncFolder(EWSAccountService, metaclass=abc.ABCMeta):
12
+ """Base class for SyncFolderHierarchy and SyncFolderItems."""
13
+
14
+ element_container_name = f"{{{MNS}}}Changes"
15
+ # Change types
16
+ CREATE = "create"
17
+ UPDATE = "update"
18
+ DELETE = "delete"
19
+ CHANGE_TYPES = (CREATE, UPDATE, DELETE)
20
+ shape_tag = None
21
+ last_in_range_name = None
22
+ change_types_map = {
23
+ f"{{{TNS}}}Create": CREATE,
24
+ f"{{{TNS}}}Update": UPDATE,
25
+ f"{{{TNS}}}Delete": DELETE,
26
+ }
27
+
28
+ def __init__(self, *args, **kwargs):
29
+ # These values are reset and set each time call() is consumed
30
+ self.sync_state = None
31
+ self.includes_last_item_in_range = None
32
+ super().__init__(*args, **kwargs)
33
+
34
+ def _get_element_container(self, message, name=None):
35
+ self.sync_state = message.find(f"{{{MNS}}}SyncState").text
36
+ log.debug("Sync state is: %s", self.sync_state)
37
+ self.includes_last_item_in_range = xml_text_to_value(message.find(self.last_in_range_name).text, bool)
38
+ log.debug("Includes last item in range: %s", self.includes_last_item_in_range)
39
+ return super()._get_element_container(message=message, name=name)
40
+
41
+ def _partial_get_payload(self, folder, shape, additional_fields, sync_state):
42
+ payload = create_element(f"m:{self.SERVICE_NAME}")
43
+ payload.append(
44
+ shape_element(
45
+ tag=self.shape_tag, shape=shape, additional_fields=additional_fields, version=self.account.version
46
+ )
47
+ )
48
+ payload.append(folder_ids_element(folders=[folder], version=self.account.version, tag="m:SyncFolderId"))
49
+ if sync_state:
50
+ add_xml_child(payload, "m:SyncState", sync_state)
51
+ return payload
52
+
53
+
54
+ class SyncFolderHierarchy(SyncFolder):
55
+ """MSDN:
56
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/syncfolderhierarchy-operation
57
+ """
58
+
59
+ SERVICE_NAME = "SyncFolderHierarchy"
60
+ shape_tag = "m:FolderShape"
61
+ last_in_range_name = f"{{{MNS}}}IncludesLastFolderInRange"
62
+
63
+ def __init__(self, *args, **kwargs):
64
+ super().__init__(*args, **kwargs)
65
+ self.folder = None # A hack to communicate parsing args to _elems_to_objs()
66
+
67
+ def call(self, folder, shape, additional_fields, sync_state):
68
+ self.sync_state = sync_state
69
+ self.folder = folder
70
+ return self._elems_to_objs(
71
+ self._get_elements(
72
+ payload=self.get_payload(
73
+ folder=folder,
74
+ shape=shape,
75
+ additional_fields=additional_fields,
76
+ sync_state=sync_state,
77
+ )
78
+ )
79
+ )
80
+
81
+ def _elem_to_obj(self, elem):
82
+ change_type = self.change_types_map[elem.tag]
83
+ if change_type == self.DELETE:
84
+ folder = FolderId.from_xml(elem=elem.find(FolderId.response_tag()), account=self.account)
85
+ else:
86
+ # We can't find() the element because we don't know which tag to look for. The change element can
87
+ # contain multiple folder types, each with their own tag.
88
+ folder_elem = elem[0]
89
+ folder = parse_folder_elem(elem=folder_elem, folder=self.folder)
90
+ return change_type, folder
91
+
92
+ def get_payload(self, folder, shape, additional_fields, sync_state):
93
+ return self._partial_get_payload(
94
+ folder=folder, shape=shape, additional_fields=additional_fields, sync_state=sync_state
95
+ )
@@ -0,0 +1,77 @@
1
+ from ..errors import InvalidEnumValue, InvalidTypeError
2
+ from ..folders import BaseFolder
3
+ from ..properties import ItemId
4
+ from ..util import MNS, TNS, peek, xml_text_to_value
5
+ from .common import add_xml_child, item_ids_element
6
+ from .sync_folder_hierarchy import SyncFolder
7
+
8
+
9
+ class SyncFolderItems(SyncFolder):
10
+ """MSDN:
11
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/syncfolderitems-operation
12
+ """
13
+
14
+ SERVICE_NAME = "SyncFolderItems"
15
+ SYNC_SCOPES = (
16
+ "NormalItems",
17
+ "NormalAndAssociatedItems",
18
+ )
19
+ # Extra change type
20
+ READ_FLAG_CHANGE = "read_flag_change"
21
+ CHANGE_TYPES = SyncFolder.CHANGE_TYPES + (READ_FLAG_CHANGE,)
22
+ shape_tag = "m:ItemShape"
23
+ last_in_range_name = f"{{{MNS}}}IncludesLastItemInRange"
24
+ change_types_map = SyncFolder.change_types_map
25
+ change_types_map[f"{{{TNS}}}ReadFlagChange"] = READ_FLAG_CHANGE
26
+
27
+ def call(self, folder, shape, additional_fields, sync_state, ignore, max_changes_returned, sync_scope):
28
+ self.sync_state = sync_state
29
+ if max_changes_returned is None:
30
+ max_changes_returned = 100
31
+ if not isinstance(max_changes_returned, int):
32
+ raise InvalidTypeError("max_changes_returned", max_changes_returned, int)
33
+ if max_changes_returned <= 0:
34
+ raise ValueError(f"'max_changes_returned' {max_changes_returned} must be a positive integer")
35
+ if sync_scope is not None and sync_scope not in self.SYNC_SCOPES:
36
+ raise InvalidEnumValue("sync_scope", sync_scope, self.SYNC_SCOPES)
37
+ return self._elems_to_objs(
38
+ self._get_elements(
39
+ payload=self.get_payload(
40
+ folder=folder,
41
+ shape=shape,
42
+ additional_fields=additional_fields,
43
+ sync_state=sync_state,
44
+ ignore=ignore,
45
+ max_changes_returned=max_changes_returned,
46
+ sync_scope=sync_scope,
47
+ )
48
+ )
49
+ )
50
+
51
+ def _elem_to_obj(self, elem):
52
+ change_type = self.change_types_map[elem.tag]
53
+ if change_type == self.READ_FLAG_CHANGE:
54
+ item = (
55
+ ItemId.from_xml(elem=elem.find(ItemId.response_tag()), account=self.account),
56
+ xml_text_to_value(elem.find(f"{{{TNS}}}IsRead").text, bool),
57
+ )
58
+ elif change_type == self.DELETE:
59
+ item = ItemId.from_xml(elem=elem.find(ItemId.response_tag()), account=self.account)
60
+ else:
61
+ # We can't find() the element because we don't know which tag to look for. The change element can
62
+ # contain multiple item types, each with their own tag.
63
+ item_elem = elem[0]
64
+ item = BaseFolder.item_model_from_tag(item_elem.tag).from_xml(elem=item_elem, account=self.account)
65
+ return change_type, item
66
+
67
+ def get_payload(self, folder, shape, additional_fields, sync_state, ignore, max_changes_returned, sync_scope):
68
+ sync_folder_items = self._partial_get_payload(
69
+ folder=folder, shape=shape, additional_fields=additional_fields, sync_state=sync_state
70
+ )
71
+ is_empty, ignore = (True, None) if ignore is None else peek(ignore)
72
+ if not is_empty:
73
+ sync_folder_items.append(item_ids_element(items=ignore, version=self.account.version, tag="m:Ignore"))
74
+ add_xml_child(sync_folder_items, "m:MaxChangesReturned", max_changes_returned)
75
+ if sync_scope:
76
+ add_xml_child(sync_folder_items, "m:SyncScope", sync_scope)
77
+ return sync_folder_items
@@ -0,0 +1,21 @@
1
+ from ..util import create_element
2
+ from .common import EWSAccountService, add_xml_child
3
+
4
+
5
+ class Unsubscribe(EWSAccountService):
6
+ """Unsubscribing is only valid for pull and streaming notifications.
7
+
8
+ MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/unsubscribe-operation
9
+ """
10
+
11
+ SERVICE_NAME = "Unsubscribe"
12
+ returns_elements = False
13
+ prefer_affinity = True
14
+
15
+ def call(self, subscription_id):
16
+ return self._get_elements(payload=self.get_payload(subscription_id=subscription_id))
17
+
18
+ def get_payload(self, subscription_id):
19
+ payload = create_element(f"m:{self.SERVICE_NAME}")
20
+ add_xml_child(payload, "m:SubscriptionId", subscription_id)
21
+ return payload
@@ -0,0 +1,158 @@
1
+ import abc
2
+
3
+ from ..fields import FieldPath, IndexedField
4
+ from ..properties import FolderId
5
+ from ..util import MNS, create_element, set_xml_value
6
+ from .common import EWSAccountService, parse_folder_elem, to_item_id
7
+
8
+
9
+ class BaseUpdateService(EWSAccountService, metaclass=abc.ABCMeta):
10
+ """Base class for UpdateFolder and UpdateItem"""
11
+
12
+ SET_FIELD_ELEMENT_NAME = None
13
+ DELETE_FIELD_ELEMENT_NAME = None
14
+ CHANGE_ELEMENT_NAME = None
15
+ CHANGES_ELEMENT_NAME = None
16
+
17
+ @staticmethod
18
+ def _sorted_fields(target_model, fieldnames):
19
+ # Take a list of fieldnames and return the fields in the order they are mentioned in target_model.FIELDS.
20
+ # Checks that all fieldnames are valid.
21
+ fieldnames_copy = list(fieldnames)
22
+ # Loop over FIELDS and not supported_fields(). Upstream should make sure not to update a non-supported field.
23
+ for f in target_model.FIELDS:
24
+ if f.name in fieldnames_copy:
25
+ fieldnames_copy.remove(f.name)
26
+ yield f
27
+ if fieldnames_copy:
28
+ raise ValueError(f"Field name(s) {fieldnames_copy} are not valid {target_model.__name__!r} fields")
29
+
30
+ def _get_value(self, target, field):
31
+ return field.clean(getattr(target, field.name), version=self.account.version) # Make sure the value is OK
32
+
33
+ def _set_field_elems(self, target_model, field, value):
34
+ if isinstance(field, IndexedField):
35
+ # Generate either set or delete elements for all combinations of labels and subfields
36
+ supported_labels = field.value_cls.get_field_by_fieldname("label").supported_choices(
37
+ version=self.account.version
38
+ )
39
+ seen_labels = set()
40
+ subfields = field.value_cls.supported_fields(version=self.account.version)
41
+ for v in value:
42
+ seen_labels.add(v.label)
43
+ for subfield in subfields:
44
+ field_path = FieldPath(field=field, label=v.label, subfield=subfield)
45
+ subfield_value = getattr(v, subfield.name)
46
+ if not subfield_value:
47
+ # Generate delete elements for blank subfield values
48
+ yield self._delete_field_elem(field_path=field_path)
49
+ else:
50
+ # Generate set elements for non-null subfield values
51
+ yield self._set_field_elem(
52
+ target_model=target_model,
53
+ field_path=field_path,
54
+ value=field.value_cls(**{"label": v.label, subfield.name: subfield_value}),
55
+ )
56
+ # Generate delete elements for all subfields of all labels not mentioned in the list of values
57
+ for label in (label for label in supported_labels if label not in seen_labels):
58
+ for subfield in subfields:
59
+ yield self._delete_field_elem(field_path=FieldPath(field=field, label=label, subfield=subfield))
60
+ else:
61
+ yield self._set_field_elem(target_model=target_model, field_path=FieldPath(field=field), value=value)
62
+
63
+ def _set_field_elem(self, target_model, field_path, value):
64
+ set_field = create_element(self.SET_FIELD_ELEMENT_NAME)
65
+ set_xml_value(set_field, field_path, version=self.account.version)
66
+ folder = create_element(target_model.request_tag())
67
+ field_elem = field_path.field.to_xml(value, version=self.account.version)
68
+ set_xml_value(folder, field_elem, version=self.account.version)
69
+ set_field.append(folder)
70
+ return set_field
71
+
72
+ def _delete_field_elems(self, field):
73
+ for field_path in FieldPath(field=field).expand(version=self.account.version):
74
+ yield self._delete_field_elem(field_path=field_path)
75
+
76
+ def _delete_field_elem(self, field_path):
77
+ delete_folder_field = create_element(self.DELETE_FIELD_ELEMENT_NAME)
78
+ return set_xml_value(delete_folder_field, field_path, version=self.account.version)
79
+
80
+ def _update_elems(self, target, fieldnames):
81
+ target_model = target.__class__
82
+
83
+ for field in self._sorted_fields(target_model=target_model, fieldnames=fieldnames):
84
+ if field.is_read_only:
85
+ raise ValueError(f"{field.name!r} is a read-only field")
86
+ value = self._get_value(target, field)
87
+
88
+ if value is None or (field.is_list and not value):
89
+ # A value of None or [] means we want to remove this field from the item
90
+ if field.is_required or field.is_required_after_save:
91
+ raise ValueError(f"{field.name!r} is a required field and may not be deleted")
92
+ yield from self._delete_field_elems(field)
93
+ continue
94
+
95
+ yield from self._set_field_elems(target_model=target_model, field=field, value=value)
96
+
97
+ def _change_elem(self, target, fieldnames):
98
+ if not fieldnames:
99
+ raise ValueError("'fieldnames' must not be empty")
100
+ change = create_element(self.CHANGE_ELEMENT_NAME)
101
+ set_xml_value(change, self._target_elem(target), version=self.account.version)
102
+ updates = create_element("t:Updates")
103
+ for elem in self._update_elems(target=target, fieldnames=fieldnames):
104
+ updates.append(elem)
105
+ change.append(updates)
106
+ return change
107
+
108
+ @staticmethod
109
+ @abc.abstractmethod
110
+ def _target_elem(target):
111
+ """Convert the object to update to an XML element"""
112
+
113
+ def _changes_elem(self, target_changes):
114
+ changes = create_element(self.CHANGES_ELEMENT_NAME)
115
+ for target, fieldnames in target_changes:
116
+ if not target.account:
117
+ target.account = self.account
118
+ changes.append(self._change_elem(target=target, fieldnames=fieldnames))
119
+ return changes
120
+
121
+
122
+ class UpdateFolder(BaseUpdateService):
123
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/updatefolder-operation"""
124
+
125
+ SERVICE_NAME = "UpdateFolder"
126
+ SET_FIELD_ELEMENT_NAME = "t:SetFolderField"
127
+ DELETE_FIELD_ELEMENT_NAME = "t:DeleteFolderField"
128
+ CHANGE_ELEMENT_NAME = "t:FolderChange"
129
+ CHANGES_ELEMENT_NAME = "m:FolderChanges"
130
+ element_container_name = f"{{{MNS}}}Folders"
131
+
132
+ def __init__(self, *args, **kwargs):
133
+ super().__init__(*args, **kwargs)
134
+ self.folders = [] # A hack to communicate parsing args to _elems_to_objs()
135
+
136
+ def call(self, folders):
137
+ # We can't easily find the correct folder class from the returned XML. Instead, return objects with the same
138
+ # class as the folder instance it was requested with.
139
+ self.folders = list(folders) # Convert to a list, in case 'folders' is a generator. We're iterating twice.
140
+ return self._elems_to_objs(self._chunked_get_elements(self.get_payload, items=self.folders))
141
+
142
+ def _elems_to_objs(self, elems):
143
+ for (folder, _), elem in zip(self.folders, elems):
144
+ if isinstance(elem, Exception):
145
+ yield elem
146
+ continue
147
+ yield parse_folder_elem(elem=elem, folder=folder)
148
+
149
+ @staticmethod
150
+ def _target_elem(target):
151
+ return to_item_id(target, FolderId)
152
+
153
+ def get_payload(self, folders):
154
+ # Takes a list of (Folder, fieldnames) tuples where 'Folder' is an instance of a subclass of Folder and
155
+ # 'fieldnames' are the attribute names that were updated.
156
+ payload = create_element(f"m:{self.SERVICE_NAME}")
157
+ payload.append(self._changes_elem(target_changes=folders))
158
+ return payload
@@ -0,0 +1,113 @@
1
+ from ..errors import InvalidEnumValue
2
+ from ..ewsdatetime import EWSDate
3
+ from ..items import (
4
+ CONFLICT_RESOLUTION_CHOICES,
5
+ MESSAGE_DISPOSITION_CHOICES,
6
+ SEND_MEETING_INVITATIONS_AND_CANCELLATIONS_CHOICES,
7
+ SEND_ONLY,
8
+ CalendarItem,
9
+ Item,
10
+ )
11
+ from ..properties import ItemId
12
+ from ..util import MNS, create_element
13
+ from ..version import EXCHANGE_2013_SP1
14
+ from .common import to_item_id
15
+ from .update_folder import BaseUpdateService
16
+
17
+
18
+ class UpdateItem(BaseUpdateService):
19
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateitem-operation"""
20
+
21
+ SERVICE_NAME = "UpdateItem"
22
+ SET_FIELD_ELEMENT_NAME = "t:SetItemField"
23
+ DELETE_FIELD_ELEMENT_NAME = "t:DeleteItemField"
24
+ CHANGE_ELEMENT_NAME = "t:ItemChange"
25
+ CHANGES_ELEMENT_NAME = "m:ItemChanges"
26
+ element_container_name = f"{{{MNS}}}Items"
27
+
28
+ def call(
29
+ self,
30
+ items,
31
+ conflict_resolution,
32
+ message_disposition,
33
+ send_meeting_invitations_or_cancellations,
34
+ suppress_read_receipts,
35
+ ):
36
+ if conflict_resolution not in CONFLICT_RESOLUTION_CHOICES:
37
+ raise InvalidEnumValue("conflict_resolution", conflict_resolution, CONFLICT_RESOLUTION_CHOICES)
38
+ if message_disposition not in MESSAGE_DISPOSITION_CHOICES:
39
+ raise InvalidEnumValue("message_disposition", message_disposition, MESSAGE_DISPOSITION_CHOICES)
40
+ if send_meeting_invitations_or_cancellations not in SEND_MEETING_INVITATIONS_AND_CANCELLATIONS_CHOICES:
41
+ raise InvalidEnumValue(
42
+ "send_meeting_invitations_or_cancellations",
43
+ send_meeting_invitations_or_cancellations,
44
+ SEND_MEETING_INVITATIONS_AND_CANCELLATIONS_CHOICES,
45
+ )
46
+ if message_disposition == SEND_ONLY:
47
+ raise ValueError("Cannot send-only existing objects. Use SendItem service instead")
48
+ return self._elems_to_objs(
49
+ self._chunked_get_elements(
50
+ self.get_payload,
51
+ items=items,
52
+ conflict_resolution=conflict_resolution,
53
+ message_disposition=message_disposition,
54
+ send_meeting_invitations_or_cancellations=send_meeting_invitations_or_cancellations,
55
+ suppress_read_receipts=suppress_read_receipts,
56
+ )
57
+ )
58
+
59
+ def _elem_to_obj(self, elem):
60
+ return Item.id_from_xml(elem)
61
+
62
+ def _update_elems(self, target, fieldnames):
63
+ fieldnames_copy = list(fieldnames)
64
+
65
+ if target.__class__ == CalendarItem:
66
+ # For CalendarItem items where we update 'start' or 'end', we want to update internal timezone fields
67
+ target.clean_timezone_fields(version=self.account.version) # Possibly also sets timezone values
68
+ for field_name in ("start", "end"):
69
+ if field_name in fieldnames_copy:
70
+ tz_field_name = target.tz_field_for_field_name(field_name).name
71
+ if tz_field_name not in fieldnames_copy:
72
+ fieldnames_copy.append(tz_field_name)
73
+
74
+ yield from super()._update_elems(target=target, fieldnames=fieldnames_copy)
75
+
76
+ def _get_value(self, target, field):
77
+ value = super()._get_value(target, field)
78
+
79
+ if target.__class__ == CalendarItem:
80
+ # For CalendarItem items where we update 'start' or 'end', we want to send values in the local timezone
81
+ if field.name in ("start", "end"):
82
+ if type(value) is EWSDate:
83
+ # EWS always expects a datetime
84
+ return target.date_to_datetime(field_name=field.name)
85
+ tz_field_name = target.tz_field_for_field_name(field.name).name
86
+ return value.astimezone(getattr(target, tz_field_name))
87
+
88
+ return value
89
+
90
+ @staticmethod
91
+ def _target_elem(target):
92
+ return to_item_id(target, ItemId)
93
+
94
+ def get_payload(
95
+ self,
96
+ items,
97
+ conflict_resolution,
98
+ message_disposition,
99
+ send_meeting_invitations_or_cancellations,
100
+ suppress_read_receipts,
101
+ ):
102
+ # Takes a list of (Item, fieldnames) tuples where 'Item' is an instance of a subclass of Item and 'fieldnames'
103
+ # are the attribute names that were updated.
104
+ attrs = dict(
105
+ ConflictResolution=conflict_resolution,
106
+ MessageDisposition=message_disposition,
107
+ SendMeetingInvitationsOrCancellations=send_meeting_invitations_or_cancellations,
108
+ )
109
+ if self.account.version.build >= EXCHANGE_2013_SP1:
110
+ attrs["SuppressReadReceipts"] = suppress_read_receipts
111
+ payload = create_element(f"m:{self.SERVICE_NAME}", attrs=attrs)
112
+ payload.append(self._changes_elem(target_changes=items))
113
+ return payload