IMAPClient 1.1.0__tar.gz → 3.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. imapclient-3.1.0/AUTHORS.rst +49 -0
  2. imapclient-3.1.0/IMAPClient.egg-info/PKG-INFO +56 -0
  3. imapclient-3.1.0/IMAPClient.egg-info/SOURCES.txt +89 -0
  4. imapclient-3.1.0/IMAPClient.egg-info/requires.txt +3 -0
  5. {IMAPClient-1.1.0 → imapclient-3.1.0}/MANIFEST.in +1 -0
  6. {IMAPClient-1.1.0 → imapclient-3.1.0}/NEWS.rst +2 -2
  7. imapclient-3.1.0/PKG-INFO +56 -0
  8. {IMAPClient-1.1.0 → imapclient-3.1.0}/README.rst +66 -75
  9. imapclient-3.1.0/doc/html/_modules/imapclient/exceptions.html +116 -0
  10. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/html/_modules/imapclient/imapclient.html +966 -474
  11. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/html/_modules/imapclient/response_types.html +63 -65
  12. imapclient-3.1.0/doc/html/_modules/imapclient/testable_imapclient.html +123 -0
  13. imapclient-3.1.0/doc/html/_modules/imapclient/tls.html +139 -0
  14. imapclient-3.1.0/doc/html/_modules/index.html +77 -0
  15. IMAPClient-1.1.0/doc/html/_sources/advanced.txt → imapclient-3.1.0/doc/html/_sources/advanced.rst.txt +43 -6
  16. imapclient-3.1.0/doc/html/_sources/api.rst.txt +68 -0
  17. IMAPClient-1.1.0/doc/html/_sources/concepts.txt → imapclient-3.1.0/doc/html/_sources/concepts.rst.txt +54 -54
  18. imapclient-3.1.0/doc/html/_sources/contributing.rst.txt +97 -0
  19. imapclient-3.1.0/doc/html/_sources/index.rst.txt +129 -0
  20. imapclient-3.1.0/doc/html/_sources/installation.rst.txt +30 -0
  21. IMAPClient-1.1.0/doc/html/_sources/releases.txt → imapclient-3.1.0/doc/html/_sources/releases.rst.txt +187 -33
  22. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/html/_static/basic.css +401 -70
  23. imapclient-3.1.0/doc/html/_static/contents.png +0 -0
  24. imapclient-3.1.0/doc/html/_static/file.png +0 -0
  25. imapclient-3.1.0/doc/html/_static/minus.png +0 -0
  26. imapclient-3.1.0/doc/html/_static/navigation.png +0 -0
  27. imapclient-3.1.0/doc/html/_static/plus.png +0 -0
  28. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/html/_static/pygments.css +10 -1
  29. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/html/_static/sphinxdoc.css +11 -6
  30. imapclient-3.1.0/doc/html/advanced.html +331 -0
  31. imapclient-3.1.0/doc/html/api.html +1196 -0
  32. imapclient-3.1.0/doc/html/concepts.html +318 -0
  33. imapclient-3.1.0/doc/html/contributing.html +210 -0
  34. imapclient-3.1.0/doc/html/index.html +340 -0
  35. imapclient-3.1.0/doc/html/installation.html +144 -0
  36. imapclient-3.1.0/doc/html/py-modindex.html +112 -0
  37. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/html/releases.html +717 -546
  38. imapclient-3.1.0/doc/html/search.html +96 -0
  39. imapclient-3.1.0/doc/src/advanced.rst +148 -0
  40. imapclient-3.1.0/doc/src/api.rst +68 -0
  41. imapclient-3.1.0/doc/src/concepts.rst +152 -0
  42. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/src/conf.py +52 -62
  43. imapclient-3.1.0/doc/src/contributing.rst +97 -0
  44. imapclient-3.1.0/doc/src/index.rst +130 -0
  45. imapclient-3.1.0/doc/src/installation.rst +30 -0
  46. {IMAPClient-1.1.0 → imapclient-3.1.0}/doc/src/releases.rst +192 -34
  47. imapclient-3.1.0/imapclient/__init__.py +13 -0
  48. imapclient-3.1.0/imapclient/config.py +219 -0
  49. {IMAPClient-1.1.0 → imapclient-3.1.0}/imapclient/datetime_util.py +12 -15
  50. imapclient-3.1.0/imapclient/exceptions.py +43 -0
  51. {IMAPClient-1.1.0 → imapclient-3.1.0}/imapclient/fixed_offset.py +14 -15
  52. imapclient-3.1.0/imapclient/imap4.py +27 -0
  53. {IMAPClient-1.1.0 → imapclient-3.1.0}/imapclient/imap_utf7.py +32 -30
  54. {IMAPClient-1.1.0 → imapclient-3.1.0}/imapclient/imapclient.py +900 -390
  55. imapclient-3.1.0/imapclient/interact.py +155 -0
  56. {IMAPClient-1.1.0 → imapclient-3.1.0}/imapclient/response_lexer.py +38 -36
  57. imapclient-3.1.0/imapclient/response_parser.py +287 -0
  58. {IMAPClient-1.1.0 → imapclient-3.1.0}/imapclient/response_types.py +44 -22
  59. imapclient-3.1.0/imapclient/testable_imapclient.py +41 -0
  60. imapclient-3.1.0/imapclient/tls.py +45 -0
  61. imapclient-3.1.0/imapclient/typing_imapclient.py +4 -0
  62. imapclient-3.1.0/imapclient/util.py +50 -0
  63. imapclient-3.1.0/imapclient/version.py +24 -0
  64. {IMAPClient-1.1.0 → imapclient-3.1.0}/interact.py +1 -2
  65. {IMAPClient-1.1.0/imapclient → imapclient-3.1.0}/livetest.py +470 -300
  66. imapclient-3.1.0/pyproject.toml +89 -0
  67. imapclient-3.1.0/setup.cfg +7 -0
  68. imapclient-3.1.0/setup.py +67 -0
  69. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/imapclient_test.py +3 -3
  70. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/test_auth.py +7 -9
  71. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/test_datetime_util.py +25 -33
  72. imapclient-3.1.0/tests/test_enable.py +69 -0
  73. imapclient-3.1.0/tests/test_fixed_offset.py +70 -0
  74. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/test_folder_status.py +24 -25
  75. imapclient-3.1.0/tests/test_imap_utf7.py +50 -0
  76. imapclient-3.1.0/tests/test_imapclient.py +1114 -0
  77. imapclient-3.1.0/tests/test_init.py +105 -0
  78. imapclient-3.1.0/tests/test_response_lexer.py +96 -0
  79. imapclient-3.1.0/tests/test_response_parser.py +716 -0
  80. imapclient-3.1.0/tests/test_search.py +164 -0
  81. imapclient-3.1.0/tests/test_sort.py +42 -0
  82. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/test_starttls.py +11 -9
  83. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/test_store.py +57 -51
  84. imapclient-3.1.0/tests/test_thread.py +43 -0
  85. imapclient-3.1.0/tests/test_util_functions.py +177 -0
  86. imapclient-3.1.0/tests/test_version.py +24 -0
  87. IMAPClient-1.1.0/AUTHORS +0 -2
  88. IMAPClient-1.1.0/HACKING.rst +0 -88
  89. IMAPClient-1.1.0/IMAPClient.egg-info/PKG-INFO +0 -38
  90. IMAPClient-1.1.0/IMAPClient.egg-info/SOURCES.txt +0 -95
  91. IMAPClient-1.1.0/IMAPClient.egg-info/requires.txt +0 -3
  92. IMAPClient-1.1.0/PKG-INFO +0 -38
  93. IMAPClient-1.1.0/THANKS +0 -96
  94. IMAPClient-1.1.0/doc/html/_modules/imapclient/tls.html +0 -291
  95. IMAPClient-1.1.0/doc/html/_modules/index.html +0 -80
  96. IMAPClient-1.1.0/doc/html/_sources/api.txt +0 -47
  97. IMAPClient-1.1.0/doc/html/_sources/contributing.txt +0 -87
  98. IMAPClient-1.1.0/doc/html/_sources/index.txt +0 -371
  99. IMAPClient-1.1.0/doc/html/_sources/quickstart.txt +0 -29
  100. IMAPClient-1.1.0/doc/html/_static/comment-bright.png +0 -0
  101. IMAPClient-1.1.0/doc/html/_static/comment-close.png +0 -0
  102. IMAPClient-1.1.0/doc/html/_static/comment.png +0 -0
  103. IMAPClient-1.1.0/doc/html/_static/contents.png +0 -0
  104. IMAPClient-1.1.0/doc/html/_static/down-pressed.png +0 -0
  105. IMAPClient-1.1.0/doc/html/_static/down.png +0 -0
  106. IMAPClient-1.1.0/doc/html/_static/file.png +0 -0
  107. IMAPClient-1.1.0/doc/html/_static/minus.png +0 -0
  108. IMAPClient-1.1.0/doc/html/_static/navigation.png +0 -0
  109. IMAPClient-1.1.0/doc/html/_static/plus.png +0 -0
  110. IMAPClient-1.1.0/doc/html/_static/up-pressed.png +0 -0
  111. IMAPClient-1.1.0/doc/html/_static/up.png +0 -0
  112. IMAPClient-1.1.0/doc/html/advanced.html +0 -269
  113. IMAPClient-1.1.0/doc/html/api.html +0 -899
  114. IMAPClient-1.1.0/doc/html/concepts.html +0 -293
  115. IMAPClient-1.1.0/doc/html/contributing.html +0 -195
  116. IMAPClient-1.1.0/doc/html/index.html +0 -1393
  117. IMAPClient-1.1.0/doc/html/quickstart.html +0 -136
  118. IMAPClient-1.1.0/doc/html/search.html +0 -93
  119. IMAPClient-1.1.0/doc/src/index.rst +0 -371
  120. IMAPClient-1.1.0/ez_setup.py +0 -391
  121. IMAPClient-1.1.0/imapclient/__init__.py +0 -16
  122. IMAPClient-1.1.0/imapclient/config.py +0 -225
  123. IMAPClient-1.1.0/imapclient/examples/example.py +0 -29
  124. IMAPClient-1.1.0/imapclient/examples/idle_example.py +0 -29
  125. IMAPClient-1.1.0/imapclient/examples/tls_cacert.py +0 -16
  126. IMAPClient-1.1.0/imapclient/examples/tls_no_checks.py +0 -23
  127. IMAPClient-1.1.0/imapclient/imap4.py +0 -16
  128. IMAPClient-1.1.0/imapclient/imaplib_ssl_fix.py +0 -54
  129. IMAPClient-1.1.0/imapclient/interact.py +0 -96
  130. IMAPClient-1.1.0/imapclient/response_parser.py +0 -239
  131. IMAPClient-1.1.0/imapclient/test/test_enable.py +0 -70
  132. IMAPClient-1.1.0/imapclient/test/test_fixed_offset.py +0 -67
  133. IMAPClient-1.1.0/imapclient/test/test_imap_utf7.py +0 -51
  134. IMAPClient-1.1.0/imapclient/test/test_imapclient.py +0 -601
  135. IMAPClient-1.1.0/imapclient/test/test_init.py +0 -77
  136. IMAPClient-1.1.0/imapclient/test/test_response_lexer.py +0 -118
  137. IMAPClient-1.1.0/imapclient/test/test_response_parser.py +0 -503
  138. IMAPClient-1.1.0/imapclient/test/test_search.py +0 -118
  139. IMAPClient-1.1.0/imapclient/test/test_sort.py +0 -42
  140. IMAPClient-1.1.0/imapclient/test/test_thread.py +0 -43
  141. IMAPClient-1.1.0/imapclient/test/test_util_functions.py +0 -167
  142. IMAPClient-1.1.0/imapclient/test/test_version.py +0 -26
  143. IMAPClient-1.1.0/imapclient/test/testable_imapclient.py +0 -34
  144. IMAPClient-1.1.0/imapclient/test/util.py +0 -32
  145. IMAPClient-1.1.0/imapclient/tls.py +0 -211
  146. IMAPClient-1.1.0/imapclient/util.py +0 -19
  147. IMAPClient-1.1.0/imapclient/version.py +0 -25
  148. IMAPClient-1.1.0/livetest.py +0 -10
  149. IMAPClient-1.1.0/setup.cfg +0 -16
  150. IMAPClient-1.1.0/setup.py +0 -116
  151. {IMAPClient-1.1.0 → imapclient-3.1.0}/COPYING +0 -0
  152. {IMAPClient-1.1.0 → imapclient-3.1.0}/IMAPClient.egg-info/dependency_links.txt +0 -0
  153. {IMAPClient-1.1.0 → imapclient-3.1.0}/IMAPClient.egg-info/top_level.txt +0 -0
  154. {IMAPClient-1.1.0/imapclient/test → imapclient-3.1.0/tests}/__init__.py +0 -0
@@ -0,0 +1,49 @@
1
+ IMAPClient was created by Menno Finlay-Smits <inbox@menno.io>. The
2
+ project is now maintained by Nicolas Le Manchet and Menno
3
+ Finlay-Smits.
4
+
5
+ Many thanks go to the following people for their help with this
6
+ project:
7
+
8
+ - Maxime Lorant
9
+ - Mathieu Agopian
10
+ - Chris Arndt
11
+ - Jp Calderone
12
+ - John Louis del Rosario
13
+ - Dave Eckhardt
14
+ - Eben Freeman
15
+ - Helder Guerreiro
16
+ - Mark Hammond
17
+ - Johannes Heckel
18
+ - Thomas Jost
19
+ - Lukasz Mierzwa
20
+ - Naveen Nathan
21
+ - Brian Neal
22
+ - Phil Peterson
23
+ - Aviv Salem
24
+ - Andrew Scheller
25
+ - Thomas Steinacher
26
+ - Zac Witte
27
+ - Hans-Peter Jansen
28
+ - Carson Ip
29
+ - Jonny Hatch
30
+ - Jasper Spaans
31
+ - Fabio Manganiello
32
+ - Samir M
33
+ - Devin Bayer
34
+ - Mantas Mikulėnas
35
+ - @zrose584
36
+ - Michał Górny
37
+ - François Deppierraz
38
+ - Jasper Spaans
39
+ - Boni Lindsley
40
+ - Tobias Kölling
41
+ - @pinoatrome
42
+ - Shoaib Ahmed
43
+ - John Villalovos
44
+ - Claude Paroz
45
+ - Stefan Wójcik
46
+ - Andrzej Bartosiński
47
+ - @axoroll7
48
+ - Sean Whalen
49
+ - Peter Wienemann
@@ -0,0 +1,56 @@
1
+ Metadata-Version: 2.4
2
+ Name: IMAPClient
3
+ Version: 3.1.0
4
+ Summary: Easy-to-use, Pythonic and complete IMAP client library
5
+ Home-page: https://github.com/mjs/imapclient/
6
+ Author: Menno Finlay-Smits
7
+ Author-email: hello@menno.io
8
+ Maintainer: IMAPClient Maintainers
9
+ Maintainer-email: imapclient@groups.io
10
+ License: 3-Clause BSD License
11
+ Keywords: imap client email mail
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: BSD License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Natural Language :: English
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Topic :: Communications :: Email :: Post-Office :: IMAP
20
+ Classifier: Topic :: Internet
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: System :: Networking
23
+ Requires-Python: >=3.8.0
24
+ License-File: COPYING
25
+ License-File: AUTHORS.rst
26
+ Provides-Extra: doc
27
+ Requires-Dist: sphinx; extra == "doc"
28
+ Dynamic: author
29
+ Dynamic: author-email
30
+ Dynamic: classifier
31
+ Dynamic: description
32
+ Dynamic: home-page
33
+ Dynamic: keywords
34
+ Dynamic: license
35
+ Dynamic: license-file
36
+ Dynamic: maintainer
37
+ Dynamic: maintainer-email
38
+ Dynamic: provides-extra
39
+ Dynamic: requires-python
40
+ Dynamic: summary
41
+
42
+ IMAPClient is an easy-to-use, Pythonic and complete IMAP client library.
43
+
44
+ Features:
45
+ * Arguments and return values are natural Python types.
46
+ * IMAP server responses are fully parsed and readily usable.
47
+ * IMAP unique message IDs (UIDs) are handled transparently.
48
+ * Internationalised mailbox names are transparently handled.
49
+ * Time zones are correctly handled.
50
+ * Convenience methods are provided for commonly used functionality.
51
+ * Exceptions are raised when errors occur.
52
+
53
+ Python versions 3.8 through 3.13 are officially supported.
54
+
55
+ IMAPClient includes comprehensive units tests and automated
56
+ functional tests that can be run against a live IMAP server.
@@ -0,0 +1,89 @@
1
+ AUTHORS.rst
2
+ COPYING
3
+ MANIFEST.in
4
+ NEWS.rst
5
+ README.rst
6
+ interact.py
7
+ livetest.py
8
+ pyproject.toml
9
+ setup.cfg
10
+ setup.py
11
+ IMAPClient.egg-info/PKG-INFO
12
+ IMAPClient.egg-info/SOURCES.txt
13
+ IMAPClient.egg-info/dependency_links.txt
14
+ IMAPClient.egg-info/requires.txt
15
+ IMAPClient.egg-info/top_level.txt
16
+ doc/html/advanced.html
17
+ doc/html/api.html
18
+ doc/html/concepts.html
19
+ doc/html/contributing.html
20
+ doc/html/index.html
21
+ doc/html/installation.html
22
+ doc/html/py-modindex.html
23
+ doc/html/releases.html
24
+ doc/html/search.html
25
+ doc/html/_modules/index.html
26
+ doc/html/_modules/imapclient/exceptions.html
27
+ doc/html/_modules/imapclient/imapclient.html
28
+ doc/html/_modules/imapclient/response_types.html
29
+ doc/html/_modules/imapclient/testable_imapclient.html
30
+ doc/html/_modules/imapclient/tls.html
31
+ doc/html/_sources/advanced.rst.txt
32
+ doc/html/_sources/api.rst.txt
33
+ doc/html/_sources/concepts.rst.txt
34
+ doc/html/_sources/contributing.rst.txt
35
+ doc/html/_sources/index.rst.txt
36
+ doc/html/_sources/installation.rst.txt
37
+ doc/html/_sources/releases.rst.txt
38
+ doc/html/_static/basic.css
39
+ doc/html/_static/contents.png
40
+ doc/html/_static/file.png
41
+ doc/html/_static/minus.png
42
+ doc/html/_static/navigation.png
43
+ doc/html/_static/plus.png
44
+ doc/html/_static/pygments.css
45
+ doc/html/_static/sphinxdoc.css
46
+ doc/src/advanced.rst
47
+ doc/src/api.rst
48
+ doc/src/concepts.rst
49
+ doc/src/conf.py
50
+ doc/src/contributing.rst
51
+ doc/src/index.rst
52
+ doc/src/installation.rst
53
+ doc/src/releases.rst
54
+ imapclient/__init__.py
55
+ imapclient/config.py
56
+ imapclient/datetime_util.py
57
+ imapclient/exceptions.py
58
+ imapclient/fixed_offset.py
59
+ imapclient/imap4.py
60
+ imapclient/imap_utf7.py
61
+ imapclient/imapclient.py
62
+ imapclient/interact.py
63
+ imapclient/response_lexer.py
64
+ imapclient/response_parser.py
65
+ imapclient/response_types.py
66
+ imapclient/testable_imapclient.py
67
+ imapclient/tls.py
68
+ imapclient/typing_imapclient.py
69
+ imapclient/util.py
70
+ imapclient/version.py
71
+ tests/__init__.py
72
+ tests/imapclient_test.py
73
+ tests/test_auth.py
74
+ tests/test_datetime_util.py
75
+ tests/test_enable.py
76
+ tests/test_fixed_offset.py
77
+ tests/test_folder_status.py
78
+ tests/test_imap_utf7.py
79
+ tests/test_imapclient.py
80
+ tests/test_init.py
81
+ tests/test_response_lexer.py
82
+ tests/test_response_parser.py
83
+ tests/test_search.py
84
+ tests/test_sort.py
85
+ tests/test_starttls.py
86
+ tests/test_store.py
87
+ tests/test_thread.py
88
+ tests/test_util_functions.py
89
+ tests/test_version.py
@@ -0,0 +1,3 @@
1
+
2
+ [doc]
3
+ sphinx
@@ -2,6 +2,7 @@ include README.rst NEWS.rst HACKING.rst COPYING AUTHORS THANKS
2
2
  include livetest.py
3
3
  include ez_setup.py
4
4
  include interact.py
5
+ include tests/*.py
5
6
  recursive-include imapclient/examples *
6
7
  recursive-include doc *.txt *.rst *.py *.png *.css *.html
7
8
 
@@ -2,6 +2,6 @@ IMAPClient's release history is now part of the main
2
2
  documentation_. See the `release documentation`_ on `Read the Docs`_ for
3
3
  the most up-to-date details of IMAPClient's releases.
4
4
 
5
- .. _documentation: http://imapclient.readthedocs.io/en/latest/
6
- .. _release documentation: http://imapclient.readthedocs.io/en/latest/releases.html
5
+ .. _documentation: https://imapclient.readthedocs.io/en/master/
6
+ .. _release documentation: https://imapclient.readthedocs.io/en/master/#release-history
7
7
  .. _Read the Docs: http://readthedocs.org
@@ -0,0 +1,56 @@
1
+ Metadata-Version: 2.4
2
+ Name: IMAPClient
3
+ Version: 3.1.0
4
+ Summary: Easy-to-use, Pythonic and complete IMAP client library
5
+ Home-page: https://github.com/mjs/imapclient/
6
+ Author: Menno Finlay-Smits
7
+ Author-email: hello@menno.io
8
+ Maintainer: IMAPClient Maintainers
9
+ Maintainer-email: imapclient@groups.io
10
+ License: 3-Clause BSD License
11
+ Keywords: imap client email mail
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: BSD License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Natural Language :: English
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Topic :: Communications :: Email :: Post-Office :: IMAP
20
+ Classifier: Topic :: Internet
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: System :: Networking
23
+ Requires-Python: >=3.8.0
24
+ License-File: COPYING
25
+ License-File: AUTHORS.rst
26
+ Provides-Extra: doc
27
+ Requires-Dist: sphinx; extra == "doc"
28
+ Dynamic: author
29
+ Dynamic: author-email
30
+ Dynamic: classifier
31
+ Dynamic: description
32
+ Dynamic: home-page
33
+ Dynamic: keywords
34
+ Dynamic: license
35
+ Dynamic: license-file
36
+ Dynamic: maintainer
37
+ Dynamic: maintainer-email
38
+ Dynamic: provides-extra
39
+ Dynamic: requires-python
40
+ Dynamic: summary
41
+
42
+ IMAPClient is an easy-to-use, Pythonic and complete IMAP client library.
43
+
44
+ Features:
45
+ * Arguments and return values are natural Python types.
46
+ * IMAP server responses are fully parsed and readily usable.
47
+ * IMAP unique message IDs (UIDs) are handled transparently.
48
+ * Internationalised mailbox names are transparently handled.
49
+ * Time zones are correctly handled.
50
+ * Convenience methods are provided for commonly used functionality.
51
+ * Exceptions are raised when errors occur.
52
+
53
+ Python versions 3.8 through 3.13 are officially supported.
54
+
55
+ IMAPClient includes comprehensive units tests and automated
56
+ functional tests that can be run against a live IMAP server.
@@ -4,15 +4,20 @@ IMAPClient is an easy-to-use, Pythonic and complete IMAP client
4
4
  library.
5
5
 
6
6
  ========================= ========================================
7
- Current version 1.0.2
8
- Supported Python versions 2.6, 2.7, 3.3, 3.4, 3.5 and 3.6
7
+ Current version 3.0.1
8
+ Supported Python versions 3.8 - 3.14
9
9
  License New BSD
10
- Project home http://imapclient.freshfoo.com/
10
+ Project home https://github.com/mjs/imapclient/
11
11
  PyPI https://pypi.python.org/pypi/IMAPClient
12
- Documentation http://imapclient.readthedocs.io/
13
- Mailing list https://groups.io/g/imapclient
12
+ Documentation https://imapclient.readthedocs.io/
13
+ Discussions https://github.com/mjs/imapclient/discussions
14
+ Test Status |build master|
14
15
  ========================= ========================================
15
16
 
17
+ .. |build master| image:: https://github.com/mjs/imapclient/actions/workflows/main.yml/badge.svg
18
+ :target: https://github.com/mjs/imapclient/actions
19
+ :alt: master branch
20
+
16
21
  Features
17
22
  --------
18
23
  - Arguments and return values are natural Python types.
@@ -27,6 +32,33 @@ Features
27
32
  - Convenience methods are provided for commonly used functionality.
28
33
  - Exceptions are raised when errors occur.
29
34
 
35
+ Example
36
+ -------
37
+
38
+ .. code-block:: python
39
+
40
+ from imapclient import IMAPClient
41
+
42
+ # context manager ensures the session is cleaned up
43
+ with IMAPClient(host="imap.host.org") as client:
44
+ client.login('someone', 'secret')
45
+ client.select_folder('INBOX')
46
+
47
+ # search criteria are passed in a straightforward way
48
+ # (nesting is supported)
49
+ messages = client.search(['NOT', 'DELETED'])
50
+
51
+ # fetch selectors are passed as a simple list of strings.
52
+ response = client.fetch(messages, ['FLAGS', 'RFC822.SIZE'])
53
+
54
+ # `response` is keyed by message id and contains parsed,
55
+ # converted response items.
56
+ for message_id, data in response.items():
57
+ print('{id}: {size} bytes, flags={flags}'.format(
58
+ id=message_id,
59
+ size=data[b'RFC822.SIZE'],
60
+ flags=data[b'FLAGS']))
61
+
30
62
  Why IMAPClient?
31
63
  ---------------
32
64
  You may ask: "why create another IMAP client library for Python?
@@ -36,7 +68,7 @@ The problem with imaplib is that it's very low-level. It expects
36
68
  string values where lists or tuples would be more appropriate and
37
69
  returns server responses almost unparsed. As IMAP server responses can
38
70
  be quite complex this means everyone using imaplib ends up writing
39
- their own flimsy parsing routines which break easily.
71
+ their own fragile parsing routines.
40
72
 
41
73
  Also, imaplib doesn't make good use of exceptions. This means you need
42
74
  to check the return value of each call to imaplib to see if what you
@@ -47,87 +79,48 @@ point in the future.
47
79
 
48
80
  Installing IMAPClient
49
81
  ---------------------
50
- IMAPClient is listed on the PyPI (Python Package Index). To install
51
- via PyPI use the pip or easy_install tools::
82
+ IMAPClient is listed on PyPI and can be installed with pip::
52
83
 
53
84
  pip install imapclient
54
85
 
55
- easy_install IMAPClient
56
-
57
- The source distributions of all IMAPClient versions are available at
58
- http://freshfoo.com/projects/IMAPClient/. Alternatively you can also
59
- use the PyPI page at https://pypi.python.org/pypi/IMAPClient/.
60
-
61
- To install from source run::
62
-
63
- python setup.py install
64
-
65
- The project is packaged using Distribute (mostly compatible with
66
- setuptools) and all the usual setup.py installation options are
67
- available. See http://packages.python.org/distribute/ for more info.
86
+ More installation methods are described in the documentation.
68
87
 
69
88
  Documentation
70
89
  -------------
71
- IMAPClient's manual is available at http://imapclient.readthedocs.io/. Release notes can be found at http://imapclient.readthedocs.io/#release-history.
72
-
73
- The Sphinx source for the documentation can be found under doc/src. If
74
- Sphinx is installed, the documentation can be rebuilt using::
90
+ IMAPClient's manual is available at http://imapclient.readthedocs.io/.
91
+ Release notes can be found at
92
+ http://imapclient.readthedocs.io/#release-history.
75
93
 
76
- python setup.py build_sphinx
77
-
78
- See the imapclient/examples directory for examples of how to use
79
- IMAPClient. If the IMAPClient was installed from PyPI, the examples
80
- subdirectory can be found under the imapclient package in the
81
- installation directory.
94
+ See the `examples` directory in the root of project source for
95
+ examples of how to use IMAPClient.
82
96
 
83
97
  Current Status
84
98
  --------------
85
- IMAPClient is currently under development but it is unlikely that
86
- the existing API will change in backwards-incompatible ways. Changes
87
- planned for the near future will only add extra functionality to the
88
- API.
89
-
90
- You should feel confident using IMAPClient for production
91
- purposes. Any problems found will be fixed quickly once reported.
99
+ You should feel confident using IMAPClient for production purposes.
92
100
 
93
- The project's home page is http://imapclient.freshfoo.com/ (this
94
- currently redirects to the IMAPClient Github site). Details about
95
- upcoming versions and planned features/fixes can be found in the issue
96
- tracker on Github. The maintainer also blogs about IMAPClient
97
- news. Those articles can be found `here
98
- <http://freshfoo.com/tags/imapclient>`_.
99
-
100
- Versions
101
- --------
102
101
  In order to clearly communicate version compatibility, IMAPClient
103
102
  will strictly adhere to the `Semantic Versioning <http://semver.org>`_
104
103
  scheme from version 1.0 onwards.
105
104
 
106
- Mailing List
107
- ------------
108
- The IMAPClient mailing list can be used to ask IMAPClient related
109
- questions and report bugs. Details of new releases and project changes
110
- will also be announced there.
111
-
112
- The mailing list is hosted at `Groups.io
113
- <http://groups.io>`_. Interaction via both email and the web is
114
- supported. To join the list, see the list archives or just find out
115
- more, visit https://groups.io/g/imapclient. The key details of the
116
- list are:
105
+ The project's home page is https://github.com/mjs/imapclient/ (this
106
+ currently redirects to the IMAPClient Github site). Details about
107
+ upcoming versions and planned features/fixes can be found in the issue
108
+ tracker on Github. The maintainers also blog about IMAPClient
109
+ news. Those articles can be found `here
110
+ <http://menno.io/tags/imapclient>`_.
117
111
 
118
- * Post: imapclient@groups.io
119
- * Subscribe: imapclient+subscribe@groups.io
120
- * Unsubscribe: imapclient+unsubscribe@groups.io
121
- * Web: https://groups.io/g/imapclient
122
- * Web archives: https://groups.io/g/imapclient/messages
112
+ Discussions
113
+ -----------
114
+ `Github Discussions`_ can be used to ask questions, propose changes or praise
115
+ the project maintainers :)
123
116
 
124
- If you're having trouble using the mailing list, please email
125
- menno@freshfoo.com.
117
+ .. _`Github Discussions`: https://github.com/mjs/imapclient/discussions
126
118
 
127
119
  Working on IMAPClient
128
120
  ---------------------
129
- The HACKING.rst document contains information for those interested in
130
- improving IMAPClient and contributing back to the project.
121
+ The `contributing documentation
122
+ <http://imapclient.rtfd.io/en/master/contributing.html>`_ contains
123
+ information for those interested in improving IMAPClient.
131
124
 
132
125
  IMAP Servers
133
126
  ------------
@@ -154,16 +147,14 @@ interact module like this::
154
147
 
155
148
  "Live" Tests
156
149
  ------------
157
- IMAPClient includes a series of functional tests which exercise
158
- it against a live IMAP account. It is useful for ensuring
150
+ IMAPClient includes a series of live, functional tests which exercise
151
+ it against a live IMAP account. These are useful for ensuring
159
152
  compatibility with a given IMAP server implementation.
160
153
 
161
- The livetest functionality can also be accessed like this::
162
-
163
- python -m imapclient.livetest <livetest.ini> [ optional unittest arguments ]
154
+ The livetest functionality are run from the root of the project source
155
+ like this::
164
156
 
165
- Alternatively you can run the ``livetest.py`` script included with the
166
- source distribution. Use ``livetest.py --help`` to see usage.
157
+ python livetest.py <livetest.ini> [ optional unittest arguments ]
167
158
 
168
159
  The configuration file format is
169
160
  `described in the main documentation <http://imapclient.rtfd.io/#configuration-file-format>`_.
@@ -174,7 +165,7 @@ limits its activity to a folder it creates and subfolders of that
174
165
  folder. It *should* be safe to use with any IMAP account but please
175
166
  don't run livetest against a truly important IMAP account.
176
167
 
177
- Please send the output of livetest.py to the mailing list if it fails
168
+ Please include the output of livetest.py with an issue if it fails
178
169
  to run successfully against a particular IMAP server. Reports of
179
170
  successful runs are also welcome. Please include the type and version
180
171
  of the IMAP server, if known.
@@ -0,0 +1,116 @@
1
+
2
+ <!DOCTYPE html>
3
+
4
+ <html lang="en">
5
+ <head>
6
+ <meta charset="utf-8" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
+ <title>imapclient.exceptions &#8212; IMAPClient 2.3.1 documentation</title>
9
+ <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
10
+ <link rel="stylesheet" type="text/css" href="../../_static/sphinxdoc.css" />
11
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
12
+ <script src="../../_static/jquery.js"></script>
13
+ <script src="../../_static/underscore.js"></script>
14
+ <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
15
+ <script src="../../_static/doctools.js"></script>
16
+ <link rel="search" title="Search" href="../../search.html" />
17
+ </head><body>
18
+ <div class="related" role="navigation" aria-label="related navigation">
19
+ <h3>Navigation</h3>
20
+ <ul>
21
+ <li class="right" style="margin-right: 10px">
22
+ <a href="../../py-modindex.html" title="Python Module Index"
23
+ >modules</a></li>
24
+ <li class="nav-item nav-item-0"><a href="../../index.html">IMAPClient 2.3.1 documentation</a> &#187;</li>
25
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
26
+ <li class="nav-item nav-item-this"><a href="">imapclient.exceptions</a></li>
27
+ </ul>
28
+ </div>
29
+
30
+ <div class="document">
31
+ <div class="documentwrapper">
32
+ <div class="bodywrapper">
33
+ <div class="body" role="main">
34
+
35
+ <h1>Source code for imapclient.exceptions</h1><div class="highlight"><pre>
36
+ <span></span><span class="kn">import</span> <span class="nn">imaplib</span>
37
+
38
+ <span class="c1"># Base class allowing to catch any IMAPClient related exceptions</span>
39
+ <span class="c1"># To ensure backward compatibility, we &quot;rename&quot; the imaplib general</span>
40
+ <span class="c1"># exception class, so we can catch its exceptions without having to</span>
41
+ <span class="c1"># deal with it in IMAPClient codebase</span>
42
+ <span class="n">IMAPClientError</span> <span class="o">=</span> <span class="n">imaplib</span><span class="o">.</span><span class="n">IMAP4</span><span class="o">.</span><span class="n">error</span>
43
+ <span class="n">IMAPClientAbortError</span> <span class="o">=</span> <span class="n">imaplib</span><span class="o">.</span><span class="n">IMAP4</span><span class="o">.</span><span class="n">abort</span>
44
+ <span class="n">IMAPClientReadOnlyError</span> <span class="o">=</span> <span class="n">imaplib</span><span class="o">.</span><span class="n">IMAP4</span><span class="o">.</span><span class="n">readonly</span>
45
+
46
+
47
+ <div class="viewcode-block" id="CapabilityError"><a class="viewcode-back" href="../../api.html#imapclient.exceptions.CapabilityError">[docs]</a><span class="k">class</span> <span class="nc">CapabilityError</span><span class="p">(</span><span class="n">IMAPClientError</span><span class="p">):</span>
48
+ <span class="sd">&quot;&quot;&quot;</span>
49
+ <span class="sd"> The command tried by the user needs a capability not installed</span>
50
+ <span class="sd"> on the IMAP server</span>
51
+ <span class="sd"> &quot;&quot;&quot;</span></div>
52
+
53
+
54
+ <div class="viewcode-block" id="LoginError"><a class="viewcode-back" href="../../api.html#imapclient.exceptions.LoginError">[docs]</a><span class="k">class</span> <span class="nc">LoginError</span><span class="p">(</span><span class="n">IMAPClientError</span><span class="p">):</span>
55
+ <span class="sd">&quot;&quot;&quot;</span>
56
+ <span class="sd"> A connection has been established with the server but an error</span>
57
+ <span class="sd"> occurred during the authentication.</span>
58
+ <span class="sd"> &quot;&quot;&quot;</span></div>
59
+
60
+
61
+ <div class="viewcode-block" id="IllegalStateError"><a class="viewcode-back" href="../../api.html#imapclient.exceptions.IllegalStateError">[docs]</a><span class="k">class</span> <span class="nc">IllegalStateError</span><span class="p">(</span><span class="n">IMAPClientError</span><span class="p">):</span>
62
+ <span class="sd">&quot;&quot;&quot;</span>
63
+ <span class="sd"> The command tried needs a different state to be executed. This</span>
64
+ <span class="sd"> means the user is not logged in or the command needs a folder to</span>
65
+ <span class="sd"> be selected.</span>
66
+ <span class="sd"> &quot;&quot;&quot;</span></div>
67
+
68
+
69
+ <div class="viewcode-block" id="InvalidCriteriaError"><a class="viewcode-back" href="../../api.html#imapclient.exceptions.InvalidCriteriaError">[docs]</a><span class="k">class</span> <span class="nc">InvalidCriteriaError</span><span class="p">(</span><span class="n">IMAPClientError</span><span class="p">):</span>
70
+ <span class="sd">&quot;&quot;&quot;</span>
71
+ <span class="sd"> A command using a search criteria failed, probably due to a syntax</span>
72
+ <span class="sd"> error in the criteria string.</span>
73
+ <span class="sd"> &quot;&quot;&quot;</span></div>
74
+
75
+
76
+ <div class="viewcode-block" id="ProtocolError"><a class="viewcode-back" href="../../api.html#imapclient.exceptions.ProtocolError">[docs]</a><span class="k">class</span> <span class="nc">ProtocolError</span><span class="p">(</span><span class="n">IMAPClientError</span><span class="p">):</span>
77
+ <span class="sd">&quot;&quot;&quot;The server replied with a response that violates the IMAP protocol.&quot;&quot;&quot;</span></div>
78
+ </pre></div>
79
+
80
+ <div class="clearer"></div>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
85
+ <div class="sphinxsidebarwrapper">
86
+ <div id="searchbox" style="display: none" role="search">
87
+ <h3 id="searchlabel">Quick search</h3>
88
+ <div class="searchformwrapper">
89
+ <form class="search" action="../../search.html" method="get">
90
+ <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
91
+ <input type="submit" value="Go" />
92
+ </form>
93
+ </div>
94
+ </div>
95
+ <script>document.getElementById('searchbox').style.display = "block"</script>
96
+ </div>
97
+ </div>
98
+ <div class="clearer"></div>
99
+ </div>
100
+ <div class="related" role="navigation" aria-label="related navigation">
101
+ <h3>Navigation</h3>
102
+ <ul>
103
+ <li class="right" style="margin-right: 10px">
104
+ <a href="../../py-modindex.html" title="Python Module Index"
105
+ >modules</a></li>
106
+ <li class="nav-item nav-item-0"><a href="../../index.html">IMAPClient 2.3.1 documentation</a> &#187;</li>
107
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
108
+ <li class="nav-item nav-item-this"><a href="">imapclient.exceptions</a></li>
109
+ </ul>
110
+ </div>
111
+ <div class="footer" role="contentinfo">
112
+ &#169; Copyright 2014, Menno Smits.
113
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
114
+ </div>
115
+ </body>
116
+ </html>