pax_global_header00006660000000000000000000000064147421604360014521gustar00rootroot0000000000000052 comment=97f9792609a306f70a7d34f4f7e5bda882331028 aioimaplib-2.0.1/000077500000000000000000000000001474216043600136275ustar00rootroot00000000000000aioimaplib-2.0.1/.github/000077500000000000000000000000001474216043600151675ustar00rootroot00000000000000aioimaplib-2.0.1/.github/workflows/000077500000000000000000000000001474216043600172245ustar00rootroot00000000000000aioimaplib-2.0.1/.github/workflows/tests.yaml000066400000000000000000000026261474216043600212600ustar00rootroot00000000000000--- name: tests on: push: branches: - main - '*.*.*' paths-ignore: - '**.rst' pull_request: branches: - main - '*.*.*' paths-ignore: - '**.rst' jobs: test: strategy: fail-fast: true matrix: os: [ "ubuntu-latest" ] python-version: [ "3.9", "3.10", "3.11" ] runs-on: ${{ matrix.os }} steps: - name: Check out repository uses: actions/checkout@v4 - name: Set up python ${{ matrix.python-version }} id: setup-python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install Poetry uses: snok/install-poetry@v1 with: virtualenvs-create: true virtualenvs-in-project: true - name: Load cached venv id: cached-poetry-dependencies uses: actions/cache@v4 with: path: .venv key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} - name: Install dependencies if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' run: poetry install --no-interaction --no-root - name: Install library run: poetry install --no-interaction - name: Run tests run: | source .venv/bin/activate pytest --cov=aioimaplib coverage report aioimaplib-2.0.1/.gitignore000066400000000000000000000002571474216043600156230ustar00rootroot00000000000000venv *.pyo *.pyc __pycache__ .idea/* *.iml *.log *.db *.eggs __pycache__ *.egg-info .gitconfig .tmux.conf .viminfo .vimrc dist .coverage build .tox example/.oauth_token.json aioimaplib-2.0.1/CHANGES.rst000066400000000000000000000172411474216043600154360ustar00rootroot00000000000000Changes ======= V2.0.1 ------ - chore: keep connection task reference for future use see - chore: fix invalid escape sequences using r-strings #116 - chore: drop Python2 crumbs #117 V2.0.0 ------ - refactor: rename imapserver into imap_testing_server - refactor: move imapserver into main package - refactor: move test module outside from main package - feat: add a script to be able to run imap testing server from command line V1.2.0 ------ Cleanup and build upgrades release. Library has not been changed since previous version. - build: passing from master to main default branch - build: test with python secure releases 3.9, 3.10, 3.11 - refactor: tests passing from asynctest to pytest-asyncio - build: from setuptools to poetry V1.1.0 ------ - feat: Add a scrub option to send(), use that with LOGIN and AUTHENTICATE #94 - doc : Imap fetch example #89 - feat: Imap Oauth for Outlook #84 - tests: Use assert instead of unittest assertions #88 - build: Pytest, tox and GHA closes #81 V1.0.1 ------ - Correct ssl_context purpose to SERVER_AUTH. closes #78 V1.0.0 ------ After 5 years and 420 usages let's switch to 1.0.0. - [aiolib] adds python 3.10 (but python 3.10 is failing on downloading interpretor) - [aiolib] adds getquotaroot command V0.9.0 ------ Please note that this release changes the API : response lines are now all of bytes type (and not in string). - [aiolib] compatible with python 3.9 - [aiolib] avoid having distinct types (str/bytes) in response lines V0.8.0 ------- - [aiolib] adds type hints - [aiolib] use async/await syntax (remove support for python 3.4) - [aiolib] fixes issue #30 on idle race condition - [aiolib] fixes the allowed version V0.7.18 ------- - [aiolib] fix the fix python 3.7 don't use the 7.17 V0.7.17 ------- - [aiolib] fix loading issue when importing aioimaplib with python 3.7 V0.7.16 ------- merge from darkrain42 - [aiolib] fix interaction between idle loop and server keepalive - [aiolib] fix cert verification on debian buster - [test] fix imapserver literal handling on Python 3.6.5+ - [test] tests: Replace calls to asyncio.async with asyncio.ensure_future V0.7.15 ------- - [aiolib] replace 'async' by is_async for python 3.7 cf #42 - [aiolib] Add ID command - [aiolib] Add NAMESPACE command V0.7.14 ------- - [fix] when there is ::1 as localhost in /etc/hosts in a docker container - [test] tests with SSL - [aiolib] quote password properly in IMAP dialog V0.7.13 ------- - [aiolib] adds a connection lost callback - [test] imapserver : added APPENDUID response for APPEND cmd - [test][fix] imapserver append should add to the connected user mb - [test] imapserver : more accurate building of message headers (using python email module) V0.7.12 ------- - [aiolib] fix issue #24 - [aiolib] fix issue #27 V0.7.11 ------- - [aiolib] adds rfc6851 move V0.7.10 ------- - [aiolib] adds IMAP4.has_capability function V0.7.9 ------ - [aiolib] adds uncomplete fetch command with uncomplete line - [aiolib] adds uncomplete fetch command BODY without literal - [aiolib] adds rfc4315 uidplus : expunge with uids - [test] handles uidset better in imap server - [test] refactor testing IMAP4ClientProtocol.data_received instead of _handle_responses V0.7.8 ------ - [aiolib] idle : added an idle_waiter for an event based idle loop V0.7.7 ------ - [aiolib] do not filter exists line for examine command - [aiolib] idle : wait for the end of data frame before pushing into the queue - [test] imapserver enhancements : accepts sequence sets/returns UID when fetch by uid V0.7.6 ------ - [aiolib] idle : added loop methods V0.7.5 ------ - [aiolib][fix] it's up to the user to send idle DONE V0.7.4 ------ - [aiolib] timeout for idle of 29 minutes + timeout of wait_server_push doesn't raise TimeoutException V0.7.3 ------ - [aiolib] added timeout for wait_server_push of 29 minutes - [aiolib] Remove imap's Continuation from server when connection is idled. Provide imapserver.wait_state to wait for idle in tests - [test][refactor] Replace WithIMapServer inheritance by mixin combinations between ClockTestCase/TestCase and WithIMapServer - [test] Allow to send a html email - [fix] handling untagged responses with noop async command V0.7.2 ------ - [fix] bug when incomplete literal occured before a tagged status line - [tests] imapserver search with uid range - [tests] better fetch request handling - [log] Limit partials' log to 100 characters - [build] Add tests' requires in setup.py V0.7.1 ------ - [refactor] adding incomplete line before calling _handle_responses V0.7.0 ------ - [fix] generalization of literal treatment - do not filter exists line for 'select' command (breaks the API). To retrieve unread mails with select, use aioimaplib.extract_exists((yield from imap_client.select()) instead of 'yield from imap_client.select()[0]' V0.6.2 ------ - [fix] added '$' and ';' for fetch message with litteral regexp V0.6.1 ------ - [fix] issue #17 "Error fetch uid param" V0.6.0 ------ - moved timeout handling at the Command level and not IMAP4 client for fetch as proposed by @cyberlis in https://github.com/bamthomas/aioimaplib/pull/16 V0.5.20 ------- - fix : issue #15 https://github.com/bamthomas/aioimaplib/issues/15 This will break the API for FETCH with emails BODY : now the first line is the server FETCH server response line. The messages are between 1 and end of Response.lines list. V0.5.19 ------- - tests : [revert] add_charset to much intrusive when running a test suite V0.5.18 ------- - tests : body text was not base64 encoded even if the header said so V0.5.17 ------- - tests : mail_from parameter from Mail.create should handle mail@host, , Name V0.5.16 ------- - tests : added better encoding handling and message building in Mail.create V0.5.15 ------- - tests : added message_id as Mail.create parameter for testing V0.5.14 ------- - tests : extract Mail.create_binary for convenience V0.5.13 ------- - fix : trailing whitespace bug causing "BAD Could not parse command" using gmail/IDLE - fix : stop adding a space for the prefix 'UID ' -> 'UID' V0.5.12 ------- - fix : issue #12 Not properly buffering newlines for incomplete lines - fix : imapserver with status of an inexistant mailbox - fix : remove offset problem with strip() modifying length of read data - fix : remove 'unknown data received' logs if line is empty V0.5.11 ------- - remove hard coded logging config - doc : added logging settings V0.5.10 ------- - added rfc5032 'within' function to server and tests for aiolib (it is only YOUNGER/OLDER arguments) V0.5.9 ------ - pushing continuation in the queue when idled V0.5.8 ------ - added a stop waiting server push function to interupt yield from queue.get V0.5.7 ------ - server send still here every IDLE_STILL_HERE_PERIOD_SECONDS to client when idle - fix when server was lauched with main, loop is already running V0.5.6 ------ - fix doc - fix imapserver main (needs a asyncio.loop.run_forever()) V0.5.5 ------ - fix issues with coroutines in uid command - documentation - remove PARTIAL, PROXYAUTH, SETANNOTATION and GETANNOTATION commands V0.5.4 ------ - refactor: treating response as we read the imap server responses for a better reading - doc - removing tests from package - publish on pypi - added coverall V0.5.3 ------ - fix aioimaplib bug when receiving chunked fetch data - do not abort when receiving unsollicited data from server V0.5.2 ------ - build CI environment - license GPL v3.0 V0.5.1 ------ - added APPEND command - fix usernames can have '@' for mockimapserver - server can handle SEARCH with CHARSET opt parameter (but ignores it) V0.5 ---- - added 11 new imap commands - added imap command synchronizing - refactor - documentation V0.1 ---- - init project with mockimapserver - project files - 11 imap commands aioimaplib-2.0.1/CONTRIBUTING.md000066400000000000000000000016461474216043600160670ustar00rootroot00000000000000If you want to contribute to the aioimaplib library don't hesitate to make pull requests. Here is a checklist to answer before pushing a new PR: - Are the [automated tests](README.rst) passing ? (*to avoid to break the code*) - Is the new feature/bugfix you're adding unit tested ? (*to avoid new code to be broken*) - Are the commits fine grain splitted with one intent for each commit ? - Are my refactorings (rename, dead code, extract method, extract class...) kept separated ? (*to favor distinct discussions on opiniated changes*) - Is my PR containing a single feature or refactoring ? (*to allow cherry-pick or revert*) - Is each of my tests in the same commit of the code it is related to ? (*to make a revert easier and make relationship between a test and its specific code easier to spot*) - Do the functions in production code (aioimaplib.py) have typehints ? (*to spot type mistakes and add more autocompletion*) aioimaplib-2.0.1/LICENSE.txt000066400000000000000000000773301474216043600154640ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS aioimaplib-2.0.1/README.rst000066400000000000000000000204651474216043600153250ustar00rootroot00000000000000About ===== .. _imaplib2: https://sourceforge.net/projects/imaplib2/ .. _imaplib: https://docs.python.org/3/library/imaplib.html .. _asyncio: https://docs.python.org/3/library/asyncio.html .. image:: https://github.com/bamthomas/aioimaplib/workflows/tests/badge.svg :alt: Build status :target: https://github.com/bamthomas/aioimaplib/actions/ .. image:: https://coveralls.io/repos/github/bamthomas/aioimaplib/badge.svg :target: https://coveralls.io/github/bamthomas/aioimaplib This library is inspired by imaplib_ and imaplib2_ from Piers Lauder, Nicolas Sebrecht, Sebastian Spaeth. Some utilities functions are taken from imaplib/imaplib2 thanks to them. Thank you to all contributors for your time and interest :pray: :point_right: The aim is to port the imaplib with asyncio_, to benefit from the sleep or treat model. It has no dependencies for runtime (the core library). It is tested against python 3.9, 3.10, 3.11 matrix. But the library itself *could* run with other python versions. Example ------- .. code-block:: python import asyncio from aioimaplib import aioimaplib async def check_mailbox(host, user, password): imap_client = aioimaplib.IMAP4_SSL(host=host) await imap_client.wait_hello_from_server() await imap_client.login(user, password) res, data = await imap_client.select() print('there is %s messages INBOX' % data[0]) await imap_client.logout() if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(check_mailbox('my.imap.server', 'user', 'pass')) **Beware** that the IMAP4.close() function is an IMAP function that is closing the selected mailbox, thus passing from SELECTED state to AUTH state. It **does not close** the TCP connection. The way to close TCP connection properly is to logout. IDLE command ------------ .. _RFC2177: https://tools.ietf.org/html/rfc2177 The RFC2177_ is implemented, to be able to wait for new mail messages without using CPU. The responses are pushed in an async queue, and it is possible to read them in real time. To leave the IDLE mode, it is necessary to send a "DONE" command to the server. .. code-block:: python async def wait_for_new_message(host, user, password): imap_client = aioimaplib.IMAP4_SSL(host=host) await imap_client.wait_hello_from_server() await imap_client.login(user, password) await imap_client.select() idle = await imap_client.idle_start(timeout=10) while imap_client.has_pending_idle(): msg = await imap_client.wait_server_push() print(msg) if msg == STOP_WAIT_SERVER_PUSH: imap_client.idle_done() await asyncio.wait_for(idle, 1) await imap_client.logout() if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(wait_for_new_message('my.imap.server', 'user', 'pass')) Or in a more event based style (the IDLE command is closed at each message from server): .. code-block:: python async def idle_loop(host, user, password): imap_client = aioimaplib.IMAP4_SSL(host=host, timeout=30) await imap_client.wait_hello_from_server() await imap_client.login(user, password) await imap_client.select() while True: print((await imap_client.uid('fetch', '1:*', 'FLAGS'))) idle = await imap_client.idle_start(timeout=60) print((await imap_client.wait_server_push())) imap_client.idle_done() await asyncio.wait_for(idle, 30) Threading --------- .. _asyncio.Event: https://docs.python.org/3.4/library/asyncio-sync.html#event .. _asyncio.Condition: https://docs.python.org/3.4/library/asyncio-sync.html#condition .. _supervisor: http://supervisord.org/ The IMAP4ClientProtocol class is not thread safe, it uses asyncio.Event_ and asyncio.Condition_ that are not thread safe, and state change for pending commands is not locked. It is possible to use threads but each IMAP4ClientProtocol instance should run in the same thread: .. image:: images/thread_imap_protocol.png Each color rectangle is an IMAP4ClientProtocol instance piece of code executed by the thread asyncio loop until it reaches a yield, waiting on I/O. For example, it is possible to launch 4 mono-threaded mail-fetcher processes on a 4 cores server with supervisor_, and use a distribution function like len(email) % (process_num) or whatever to share equally a mail account list between the 4 processes. IMAP command concurrency ------------------------ IMAP protocol allows to run some commands in parallel. Four rules are implemented to ensure responses consistency: 1. if a sync command is running, the following requests (sync or async) must wait 2. if an async command is running, same async commands (or with the same untagged response type) must wait 3. async commands can be executed in parallel 4. sync command must wait pending async commands to finish Logging ------- .. _howto: https://docs.python.org/3.4/howto/logging.html#configuring-logging-for-a-library As said in the logging howto_ the logger is defined with .. code-block:: python logger = logging.getLogger(__name__) Where name is 'aioimaplib.aioimaplib'. You can set the logger parameters, either by python API .. code-block:: python aioimaplib_logger = logging.getLogger('aioimaplib.aioimaplib') sh = logging.StreamHandler() sh.setLevel(logging.DEBUG) sh.setFormatter(logging.Formatter("%(asctime)s %(levelname)s [%(module)s:%(lineno)d] %(message)s")) aioimaplib_logger.addHandler(sh) Or loading config file (for example with logging.config.dictConfig(yaml.load(file))) with this piece of yaml file .. code-block:: yaml loggers: ... aioimaplib.aioimaplib: level: DEBUG handlers: [syslog] propagate: no ... Authentication with OAuth2 -------------------------- Starting with the 01/01/23 Microsoft Outlook can only be accessed with OAuth2. You need to register you client to be used with oauth. Find more :https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth:`here`. This might be also used with Google Mail, but it is not tested for it. Tested with ----------- - dovecot 2.2.13 on debian Jessie - gmail with imap and SSL - outlook with SSL - yahoo with SSL - free.fr with SSL - orange.fr with SSL - mailden.net with SSL Develop ======= .. _poetry: https://python-poetry.org/ Developers are welcome! If you want to improve it, fix bugs, test it with other IMAP servers, give feedback, thank you for it. We use poetry_ for building the library. Just run .. code-block:: bash poetry install poetry run pytest # or you can create a poetry shell poetry install poetry shell pytest To add an imaplib or imaplib2 command you can : - add the function to the testing imapserver with a new imaplib or imaplib2 server test, i.e. test_imapserver_imaplib.py or test_imapserver_imaplib2.py respectively; - then add the function to the aioimaplib doing almost the same test than above but the async way in test_aioimaplib.py. Not unit tested --------------- - PREAUTH TODO ---- .. _rfc3501: https://tools.ietf.org/html/rfc3501 .. _rfc4978: https://tools.ietf.org/html/rfc4978 .. _rfc4314: https://tools.ietf.org/html/rfc4314 .. _rfc2087: https://tools.ietf.org/html/rfc2087 .. _rfc5256: https://tools.ietf.org/html/rfc5256 .. _rfc2971: https://tools.ietf.org/html/rfc2971 .. _rfc2342: https://tools.ietf.org/html/rfc2342 .. _rfc4469: https://tools.ietf.org/html/rfc4469 - 23/25 IMAP4rev1 commands are implemented from the main rfc3501_. 'STARTTLS' and 'AUTHENTICATE'(except with XOAUTH2) are still missing. - 'COMPRESS' from rfc4978_ - 'SETACL' 'DELETEACL' 'GETACL' 'MYRIGHTS' 'LISTRIGHTS' from ACL rfc4314_ - 'GETQUOTA': 'GETQUOTAROOT': 'SETQUOTA' from quota rfc2087_ - 'SORT' and 'THREAD' from the rfc5256_ - 'ID' from the rfc2971_ - 'NAMESPACE' from rfc2342_ - 'CATENATE' from rfc4469_ - tests with other servers If it goes wrong ---------------- Sometimes you break things and you don't understand what's going on (I always do). For this library I have two related tools: .. role:: bash(code) :language: bash - ngrep on the imap test port: :bash:`sudo ngrep -d lo port 12345` - activate debug logs changing INFO to DEBUG at the top of the mock server and the aioimaplib aioimaplib-2.0.1/aioimaplib/000077500000000000000000000000001474216043600157355ustar00rootroot00000000000000aioimaplib-2.0.1/aioimaplib/__init__.py000066400000000000000000000014521474216043600200500ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from .aioimaplib import * aioimaplib-2.0.1/aioimaplib/aioimaplib.py000066400000000000000000001172321474216043600204230ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import asyncio from base64 import b64encode import functools import logging import random import re import ssl import sys import time from asyncio import BaseTransport, Future, Task from collections import namedtuple from copy import copy from datetime import datetime, timezone, timedelta from enum import Enum from typing import Union, Any, Coroutine, Callable, Optional, Pattern, List # to avoid imap servers to kill the connection after 30mn idling # cf https://www.imapwiki.org/ClientImplementation/Synchronization TWENTY_NINE_MINUTES = 1740.0 STOP_WAIT_SERVER_PUSH = [b'stop_wait_server_push'] PY37_OR_LATER = sys.version_info[:2] >= (3, 7) log = logging.getLogger(__name__) IMAP4_PORT = 143 IMAP4_SSL_PORT = 993 STARTED, CONNECTED, NONAUTH, AUTH, SELECTED, LOGOUT = 'STARTED', 'CONNECTED', 'NONAUTH', 'AUTH', 'SELECTED', 'LOGOUT' CRLF = b'\r\n' ID_MAX_PAIRS_COUNT = 30 ID_MAX_FIELD_LEN = 30 ID_MAX_VALUE_LEN = 1024 AllowedVersions = ('IMAP4REV1', 'IMAP4') Exec = Enum('Exec', 'is_sync is_async') Cmd = namedtuple('Cmd', 'name valid_states exec') Commands = { 'APPEND': Cmd('APPEND', (AUTH, SELECTED), Exec.is_sync), 'AUTHENTICATE': Cmd('AUTHENTICATE', (NONAUTH,), Exec.is_sync), 'CAPABILITY': Cmd('CAPABILITY', (NONAUTH, AUTH, SELECTED), Exec.is_async), 'CHECK': Cmd('CHECK', (SELECTED,), Exec.is_async), 'CLOSE': Cmd('CLOSE', (SELECTED,), Exec.is_sync), 'COMPRESS': Cmd('COMPRESS', (AUTH,), Exec.is_sync), 'COPY': Cmd('COPY', (SELECTED,), Exec.is_async), 'CREATE': Cmd('CREATE', (AUTH, SELECTED), Exec.is_async), 'DELETE': Cmd('DELETE', (AUTH, SELECTED), Exec.is_async), 'DELETEACL': Cmd('DELETEACL', (AUTH, SELECTED), Exec.is_async), 'ENABLE': Cmd('ENABLE', (AUTH,), Exec.is_sync), 'EXAMINE': Cmd('EXAMINE', (AUTH, SELECTED), Exec.is_sync), 'EXPUNGE': Cmd('EXPUNGE', (SELECTED,), Exec.is_async), 'FETCH': Cmd('FETCH', (SELECTED,), Exec.is_async), 'GETACL': Cmd('GETACL', (AUTH, SELECTED), Exec.is_async), 'GETQUOTA': Cmd('GETQUOTA', (AUTH, SELECTED), Exec.is_async), 'GETQUOTAROOT': Cmd('GETQUOTAROOT', (AUTH, SELECTED), Exec.is_async), 'ID': Cmd('ID', (NONAUTH, AUTH, LOGOUT, SELECTED), Exec.is_async), 'IDLE': Cmd('IDLE', (SELECTED,), Exec.is_sync), 'LIST': Cmd('LIST', (AUTH, SELECTED), Exec.is_async), 'LOGIN': Cmd('LOGIN', (NONAUTH,), Exec.is_sync), 'LOGOUT': Cmd('LOGOUT', (NONAUTH, AUTH, LOGOUT, SELECTED), Exec.is_sync), 'LSUB': Cmd('LSUB', (AUTH, SELECTED), Exec.is_async), 'MYRIGHTS': Cmd('MYRIGHTS', (AUTH, SELECTED), Exec.is_async), 'MOVE': Cmd('MOVE', (SELECTED,), Exec.is_sync), 'NAMESPACE': Cmd('NAMESPACE', (AUTH, SELECTED), Exec.is_async), 'NOOP': Cmd('NOOP', (NONAUTH, AUTH, SELECTED), Exec.is_async), 'RENAME': Cmd('RENAME', (AUTH, SELECTED), Exec.is_async), 'SEARCH': Cmd('SEARCH', (SELECTED,), Exec.is_async), 'SELECT': Cmd('SELECT', (AUTH, SELECTED), Exec.is_sync), 'SETACL': Cmd('SETACL', (AUTH, SELECTED), Exec.is_sync), 'SETQUOTA': Cmd('SETQUOTA', (AUTH, SELECTED), Exec.is_sync), 'SORT': Cmd('SORT', (SELECTED,), Exec.is_async), 'STARTTLS': Cmd('STARTTLS', (NONAUTH,), Exec.is_sync), 'STATUS': Cmd('STATUS', (AUTH, SELECTED), Exec.is_async), 'STORE': Cmd('STORE', (SELECTED,), Exec.is_async), 'SUBSCRIBE': Cmd('SUBSCRIBE', (AUTH, SELECTED), Exec.is_sync), 'THREAD': Cmd('THREAD', (SELECTED,), Exec.is_async), 'UID': Cmd('UID', (SELECTED,), Exec.is_async), 'UNSUBSCRIBE': Cmd('UNSUBSCRIBE', (AUTH, SELECTED), Exec.is_sync), # for testing 'DELAY': Cmd('DELAY', (AUTH, SELECTED), Exec.is_sync), } Response = namedtuple('Response', 'result lines') def get_running_loop() -> asyncio.AbstractEventLoop: if PY37_OR_LATER: return asyncio.get_running_loop() loop = asyncio.get_event_loop() if not loop.is_running(): raise RuntimeError("no running event loop") return loop def quoted(arg: str) -> str: """ Given a string, return a quoted string as per RFC 3501, section 9. Implementation copied from https://github.com/mjs/imapclient (imapclient/imapclient.py), 3-clause BSD license """ arg = arg.replace('\\', '\\\\') arg = arg.replace('"', '\\"') return '"' + arg + '"' def arguments_rfs2971(**kwargs: Union[dict, list, str]) -> Union[dict, list]: if kwargs: if len(kwargs) > ID_MAX_PAIRS_COUNT: raise ValueError('Must not send more than 30 field-value pairs') args = ['('] for field, value in kwargs.items(): field = quoted(str(field)) value = quoted(str(value)) if value is not None else 'NIL' if len(field) > ID_MAX_FIELD_LEN: raise ValueError('Field: {} must not be longer than 30'.format(field)) if len(value) > ID_MAX_VALUE_LEN: raise ValueError('Field: {} value: {} must not be longer than 1024'.format(field, value)) args.extend((field, value)) args.append(')') else: args = ['NIL'] return args class Command: def __init__(self, name: str, tag: str, *args, prefix: str = None, untagged_resp_name: str = None, loop: asyncio.AbstractEventLoop = None, timeout: float = None) -> None: self.name = name self.tag = tag self.args = args self.prefix = prefix + ' ' if prefix else None self.untagged_resp_name = untagged_resp_name or name self._exception = None self._loop = loop if loop is not None else get_running_loop() self._event = asyncio.Event() self._timeout = timeout self._timer = asyncio.Handle(lambda: None, None, self._loop) # fake timer self._set_timer() self._expected_size = 0 self._resp_literal_data = bytearray() self._resp_result = 'Init' self._resp_lines: List[bytes] = list() def __repr__(self) -> str: return '{tag} {prefix}{name}{space}{args}'.format( tag=self.tag, prefix=self.prefix or '', name=self.name, space=' ' if self.args else '', args=' '.join(str(arg) if arg is not None else '' \ for arg in self.args)) # for tests def __eq__(self, other): return other is not None and other.tag == self.tag and other.name == self.name and other.args == self.args @property def response(self): return Response(self._resp_result, self._resp_lines) def close(self, line: bytes, result: str) -> None: self.append_to_resp(line, result=result) self._timer.cancel() self._event.set() def begin_literal_data(self, expected_size: int, literal_data: bytes = b'') -> bytes: self._expected_size = expected_size return self.append_literal_data(literal_data) def wait_literal_data(self) -> bool: return self._expected_size != 0 and len(self._resp_literal_data) != self._expected_size def wait_data(self) -> bool: return self.wait_literal_data() def append_literal_data(self, data: bytes) -> bytes: nb_bytes_to_add = self._expected_size - len(self._resp_literal_data) self._resp_literal_data.extend(data[0:nb_bytes_to_add]) if not self.wait_literal_data(): self.append_to_resp(self._resp_literal_data) self._end_literal_data() self._reset_timer() return data[nb_bytes_to_add:] def append_to_resp(self, line: bytes, result: str = 'Pending') -> None: self._resp_result = result self._resp_lines.append(line) self._reset_timer() async def wait(self) -> None: await self._event.wait() if self._exception is not None: raise self._exception def flush(self) -> None: pass def _end_literal_data(self) -> None: self._expected_size = 0 self._resp_literal_data = bytearray() def _set_timer(self) -> None: if self._timeout is not None: self._timer = self._loop.call_later(self._timeout, self._timeout_callback) def _timeout_callback(self) -> None: self._exception = CommandTimeout(self) self.close(str(self._exception).encode(), 'KO') def _reset_timer(self) -> None: self._timer.cancel() self._set_timer() class FetchCommand(Command): FETCH_MESSAGE_DATA_RE = re.compile(rb'[0-9]+ FETCH \(') def __init__(self, tag: str, *args, prefix: str = None, untagged_resp_name: str = None, loop: asyncio.AbstractEventLoop = None, timeout: float = None) -> None: super().__init__('FETCH', tag, *args, prefix=prefix, untagged_resp_name=untagged_resp_name, loop=loop, timeout=timeout) def wait_data(self) -> bool: last_fetch_index = 0 for index, line in enumerate(self._resp_lines): if isinstance(line, bytes) and self.FETCH_MESSAGE_DATA_RE.match(line): last_fetch_index = index return not matched_parenthesis(b''.join(filter(lambda l: isinstance(l, bytes), self.response.lines[last_fetch_index:]))) def matched_parenthesis(fetch_response: bytes) -> bool: return fetch_response.count(b'(') == fetch_response.count(b')') class IdleCommand(Command): def __init__(self, tag: str, queue: asyncio.Queue, *args, prefix: str = None, untagged_resp_name: str = None, loop: asyncio.AbstractEventLoop = None, timeout: float = None) -> None: super().__init__('IDLE', tag, *args, prefix=prefix, untagged_resp_name=untagged_resp_name, loop=loop, timeout=timeout) self.queue = queue self.buffer: List[bytes] = list() def append_to_resp(self, line: bytes, result: str = 'Pending') -> None: if result != 'Pending': super().append_to_resp(line, result) else: self.buffer.append(line) def flush(self) -> None: if self.buffer: self.queue.put_nowait(copy(self.buffer)) self.buffer.clear() class AioImapException(Exception): def __init__(self, reason: str): super().__init__(reason) class Error(AioImapException): def __init__(self, reason: str): super().__init__(reason) class Abort(Error): def __init__(self, reason: str): super().__init__(reason) class CommandTimeout(AioImapException): def __init__(self, command: Command): self.command = command class IncompleteRead(AioImapException): def __init__(self, cmd: Command, data: bytes = b''): self.cmd = cmd self.data = data def change_state(coro: Callable[..., Coroutine[Any, Any, Optional[Response]]]): @functools.wraps(coro) async def wrapper(self, *args, **kargs) -> Optional[Response]: async with self.state_condition: res = await coro(self, *args, **kargs) log.debug('state -> %s' % self.state) self.state_condition.notify_all() return res return wrapper # cf https://tools.ietf.org/html/rfc3501#section-9 # untagged responses types literal_data_re = re.compile(rb'.*\{(?P\d+)\}$') message_data_re = re.compile(rb'[0-9]+ ((FETCH)|(EXPUNGE))') tagged_status_response_re = re.compile(rb'[A-Z0-9]+ ((OK)|(NO)|(BAD))') class IMAP4ClientProtocol(asyncio.Protocol): def __init__(self, loop: Optional[asyncio.AbstractEventLoop], conn_lost_cb: Callable[[Optional[Exception]], None] = None): self.loop = loop self.transport = None self.state = STARTED self.state_condition = asyncio.Condition() self.capabilities = set() self.pending_async_commands = dict() self.pending_sync_command = None self.idle_queue = asyncio.Queue() self._idle_event = asyncio.Event() self.imap_version = None self.literal_data = None self.incomplete_line = b'' self.current_command = None self.conn_lost_cb = conn_lost_cb self.tasks: set[Future] = set() self.tagnum = 0 self.tagpre = int2ap(random.randint(4096, 65535)) def connection_made(self, transport: BaseTransport) -> None: self.transport = transport self.state = CONNECTED def data_received(self, d: bytes) -> None: log.debug('Received : %s' % d) try: self._handle_responses(self.incomplete_line + d, self._handle_line, self.current_command) self.incomplete_line = b'' self.current_command = None except IncompleteRead as incomplete_read: self.current_command = incomplete_read.cmd self.incomplete_line = incomplete_read.data def connection_lost(self, exc: Optional[Exception]) -> None: log.debug('connection lost: %s', exc) if self.conn_lost_cb is not None: self.conn_lost_cb(exc) def _handle_responses(self, data: bytes, line_handler: Callable[[bytes, Command], Optional[Command]], current_cmd: Command = None) -> None: if not data: if self.pending_sync_command is not None: self.pending_sync_command.flush() if current_cmd is not None and current_cmd.wait_data(): raise IncompleteRead(current_cmd) return if current_cmd is not None and current_cmd.wait_literal_data(): data = current_cmd.append_literal_data(data) if current_cmd.wait_literal_data(): raise IncompleteRead(current_cmd) line, separator, tail = data.partition(CRLF) if not separator: raise IncompleteRead(current_cmd, data) cmd = line_handler(line, current_cmd) begin_literal = literal_data_re.match(line) if begin_literal: size = int(begin_literal.group('size')) if cmd is None: cmd = Command('NIL', 'unused') cmd.begin_literal_data(size) self._handle_responses(tail, line_handler, current_cmd=cmd) elif cmd is not None and cmd.wait_data(): self._handle_responses(tail, line_handler, current_cmd=cmd) else: self._handle_responses(tail, line_handler) def _handle_line(self, line: bytes, current_cmd: Command) -> Optional[Command]: if not line: return if self.state == CONNECTED: task = asyncio.ensure_future(self.welcome(line)) self.tasks.add(task) task.add_done_callback(self.tasks.discard) elif tagged_status_response_re.match(line): self._response_done(line) elif current_cmd is not None: current_cmd.append_to_resp(line) return current_cmd elif line.startswith(b'*'): return self._untagged_response(line) elif line.startswith(b'+'): self._continuation(line) else: log.info('unknown data received %s' % line) def send(self, line: str, scrub: str =None) -> None: data = ('%s\r\n' % line).encode() if scrub: log.debug('Sending : %s' % data.replace(scrub.encode(), len(scrub) * b'*')) else: log.debug('Sending : %s' % data) self.transport.write(data) async def execute(self, command: Command, scrub: str =None) -> Response: if self.state not in Commands.get(command.name).valid_states: raise Abort('command %s illegal in state %s' % (command.name, self.state)) if self.pending_sync_command is not None: await self.pending_sync_command.wait() if Commands.get(command.name).exec == Exec.is_sync: if self.pending_async_commands: await self.wait_async_pending_commands() self.pending_sync_command = command else: if self.pending_async_commands.get(command.untagged_resp_name) is not None: await self.pending_async_commands[command.untagged_resp_name].wait() self.pending_async_commands[command.untagged_resp_name] = command self.send(str(command), scrub=scrub) try: await command.wait() except CommandTimeout: if Commands.get(command.name).exec == Exec.is_sync: self.pending_sync_command = None else: self.pending_async_commands.pop(command.untagged_resp_name, None) raise finally: if command.name == 'IDLE': self._idle_event.clear() return command.response @change_state async def welcome(self, command: bytes) -> None: if b'PREAUTH' in command: self.state = AUTH elif b'OK' in command: self.state = NONAUTH else: raise Error(command.decode()) await self.capability() @change_state async def login(self, user: str, password: str) -> Response: response = await self.execute( Command('LOGIN', self.new_tag(), user, '%s' % quoted(password), loop=self.loop), scrub=password, ) if 'OK' == response.result: self.state = AUTH for line in response.lines: if b'CAPABILITY' in line: self.capabilities = self.capabilities.union(set(line.decode().replace('CAPABILITY', '').strip().split())) return response @change_state async def xoauth2(self, user: str, token: str) -> Response: """Authentication with XOAUTH2. Tested with outlook. Specification: https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth https://developers.google.com/gmail/imap/xoauth2-protocol """ sasl_string = b64encode(f"user={user}\1auth=Bearer {token}\1\1".encode("ascii")) response = await self.execute( Command('AUTHENTICATE', self.new_tag(), 'XOAUTH2', sasl_string.decode("ascii"), loop=self.loop), scrub=token, ) if 'OK' == response.result: self.state = AUTH return response @change_state async def logout(self) -> Response: response = (await self.execute(Command('LOGOUT', self.new_tag(), loop=self.loop))) if 'OK' == response.result: self.state = LOGOUT return response @change_state async def select(self, mailbox='INBOX') -> Response: response = await self.execute( Command('SELECT', self.new_tag(), mailbox, loop=self.loop)) if 'OK' == response.result: self.state = SELECTED return response @change_state async def close(self) -> Response: response = await self.execute(Command('CLOSE', self.new_tag(), loop=self.loop)) if response.result == 'OK': self.state = AUTH return response async def idle(self) -> Response: if 'IDLE' not in self.capabilities: raise Abort('server has not IDLE capability') self._idle_event.clear() return await self.execute(IdleCommand(self.new_tag(), self.idle_queue, loop=self.loop)) def has_pending_idle_command(self) -> bool: return self.pending_sync_command is not None and self.pending_sync_command.name == 'IDLE' def idle_done(self) -> None: self.send('DONE') async def search(self, *criteria, charset: Optional[str] = 'utf-8', by_uid: bool = False) -> Response: args = ('CHARSET', charset) + criteria if charset is not None else criteria prefix = 'UID' if by_uid else '' return await self.execute( Command('SEARCH', self.new_tag(), *args, prefix=prefix, loop=self.loop)) async def fetch(self, message_set: str, message_parts: str, by_uid: bool = False, timeout: float = None) -> Response: return await self.execute( FetchCommand(self.new_tag(), message_set, message_parts, prefix='UID' if by_uid else '', loop=self.loop, timeout=timeout)) async def store(self, *args: str, by_uid: bool = False) -> Response: return await self.execute( Command('STORE', self.new_tag(), *args, prefix='UID' if by_uid else '', untagged_resp_name='FETCH', loop=self.loop)) async def expunge(self, *args: str, by_uid=False) -> Response: return await self.execute( Command('EXPUNGE', self.new_tag(), *args, prefix='UID' if by_uid else '', loop=self.loop)) async def uid(self, command: str, *criteria: str, timeout: float = None) -> Response: if self.state not in Commands.get('UID').valid_states: raise Abort('command UID illegal in state %s' % self.state) if command.upper() == 'FETCH': return await self.fetch(criteria[0], criteria[1], by_uid=True, timeout=timeout) if command.upper() == 'STORE': return await self.store(*criteria, by_uid=True) if command.upper() == 'COPY': return await self.copy(*criteria, by_uid=True) if command.upper() == 'MOVE': return await self.move(*criteria, by_uid=True) if command.upper() == 'EXPUNGE': if 'UIDPLUS' not in self.capabilities: raise Abort('EXPUNGE with uids is only valid with UIDPLUS capability. UIDPLUS not in (%s)' % self.capabilities) return await self.expunge(*criteria, by_uid=True) raise Abort('command UID only possible with COPY, FETCH, EXPUNGE (w/UIDPLUS) or STORE (was %s)' % command.upper()) async def copy(self, *args: str, by_uid: bool = False) -> Response: return (await self.execute( Command('COPY', self.new_tag(), *args, prefix='UID' if by_uid else '', loop=self.loop))) async def move(self, uid_set: str, mailbox: str, by_uid: bool = False) -> Response: if 'MOVE' not in self.capabilities: raise Abort('server has not MOVE capability') return (await self.execute( Command('MOVE', self.new_tag(), uid_set, mailbox, prefix='UID' if by_uid else '', loop=self.loop))) async def capability(self) -> None: # that should be a Response (would avoid the Optional) response = await self.execute(Command('CAPABILITY', self.new_tag(), loop=self.loop)) capability_list = response.lines[0].decode().split() self.capabilities = set(capability_list) try: self.imap_version = list( filter(lambda x: x.upper() in AllowedVersions, capability_list)).pop().upper() except IndexError: raise Error('server not IMAP4 compliant') async def append(self, message_bytes: bytes, mailbox: str = 'INBOX', flags: str = None, date: Any = None, timeout: float = None) -> Response: args = [mailbox] if flags is not None: if (flags[0], flags[-1]) != ('(', ')'): args.append('(%s)' % flags) else: args.append(flags) if date is not None: args.append(time2internaldate(date)) args.append('{%s}' % len(message_bytes)) self.literal_data = message_bytes return await self.execute(Command('APPEND', self.new_tag(), *args, loop=self.loop, timeout=timeout)) async def id(self, **kwargs: Union[dict, list, str]) -> Response: args = arguments_rfs2971(**kwargs) return await self.execute(Command('ID', self.new_tag(), *args, loop=self.loop)) simple_commands = {'NOOP', 'CHECK', 'STATUS', 'CREATE', 'DELETE', 'RENAME', 'SUBSCRIBE', 'UNSUBSCRIBE', 'LSUB', 'LIST', 'EXAMINE', 'ENABLE'} async def namespace(self) -> Response: if 'NAMESPACE' not in self.capabilities: raise Abort('server has not NAMESPACE capability') return await self.execute(Command('NAMESPACE', self.new_tag(), loop=self.loop)) async def simple_command(self, name, *args: str) -> Response: if name not in self.simple_commands: raise NotImplementedError('simple command only available for %s' % self.simple_commands) return await self.execute(Command(name, self.new_tag(), *args, loop=self.loop)) async def wait_async_pending_commands(self) -> None: await asyncio.wait([asyncio.ensure_future(cmd.wait()) for cmd in self.pending_async_commands.values()]) async def wait(self, state_regexp: Pattern) -> None: state_re = re.compile(state_regexp) async with self.state_condition: await self.state_condition.wait_for(lambda: state_re.match(self.state)) async def wait_for_idle_response(self): await self._idle_event.wait() def _untagged_response(self, line: bytes) -> Command: line = line.replace(b'* ', b'') if self.pending_sync_command is not None: self.pending_sync_command.append_to_resp(line) command = self.pending_sync_command else: match = message_data_re.match(line) if match: cmd_name, text = match.group(1), match.string else: cmd_name, _, text = line.partition(b' ') command = self.pending_async_commands.get(cmd_name.decode().upper()) if command is not None: command.append_to_resp(text) else: # noop is async and servers can send untagged responses command = self.pending_async_commands.get('NOOP') if command is not None: command.append_to_resp(line) else: log.info('ignored untagged response : %s' % line) return command def _response_done(self, line: bytes) -> None: log.debug('tagged status %s' % line) tag, _, response = line.partition(b' ') if self.pending_sync_command is not None: if self.pending_sync_command.tag != tag.decode(): raise Abort('unexpected tagged response with pending sync command (%s) response: %s' % (self.pending_sync_command, response)) command = self.pending_sync_command self.pending_sync_command = None else: cmds = self._find_pending_async_cmd_by_tag(tag.decode()) if len(cmds) == 0: raise Abort('unexpected tagged (%s) response: %s' % (tag, response)) elif len(cmds) > 1: raise Error('inconsistent state : two commands have the same tag (%s)' % cmds) command = cmds.pop() self.pending_async_commands.pop(command.untagged_resp_name) response_result, _, response_text = response.partition(b' ') command.close(response_text, result=response_result.decode()) def _continuation(self, line: bytes) -> None: if self.pending_sync_command is None: log.info('server says %s (ignored)' % line) elif self.pending_sync_command.name == 'APPEND': if self.literal_data is None: Abort('asked for literal data but have no literal data to send') self.transport.write(self.literal_data) self.transport.write(CRLF) self.literal_data = None elif self.pending_sync_command.name == 'IDLE': log.debug('continuation line -- assuming IDLE is active : %s', line) self._idle_event.set() else: log.debug('continuation line appended to pending sync command %s : %s' % (self.pending_sync_command, line)) self.pending_sync_command.append_to_resp(line) self.pending_sync_command.flush() def new_tag(self) -> str: tag = self.tagpre + str(self.tagnum) self.tagnum += 1 return tag def _find_pending_async_cmd_by_tag(self, tag: str) -> list: return [c for c in self.pending_async_commands.values() if c is not None and c.tag == tag] class IMAP4: TIMEOUT_SECONDS = 10.0 _client_task: Task def __init__(self, host: str = '127.0.0.1', port: int = IMAP4_PORT, loop: asyncio.AbstractEventLoop = None, timeout: float = TIMEOUT_SECONDS, conn_lost_cb: Callable[[Optional[Exception]], None] = None, ssl_context: ssl.SSLContext = None): self.timeout = timeout self.port = port self.host = host self.protocol = None self._idle_waiter = None self.tasks: set[Future] = set() self.create_client(host, port, loop, conn_lost_cb, ssl_context) def create_client(self, host: str, port: int, loop: asyncio.AbstractEventLoop, conn_lost_cb: Callable[[Optional[Exception]], None] = None, ssl_context: ssl.SSLContext = None) -> None: local_loop = loop if loop is not None else get_running_loop() self.protocol = IMAP4ClientProtocol(local_loop, conn_lost_cb) self._client_task = local_loop.create_task(local_loop.create_connection(lambda: self.protocol, host, port, ssl=ssl_context)) def get_state(self) -> str: return self.protocol.state async def wait_hello_from_server(self) -> None: await asyncio.wait_for(self.protocol.wait('AUTH|NONAUTH'), self.timeout) async def login(self, user: str, password: str) -> Response: return await asyncio.wait_for(self.protocol.login(user, password), self.timeout) async def xoauth2(self, user: str, token: bytes) -> Response: return await asyncio.wait_for(self.protocol.xoauth2(user, token), self.timeout) async def logout(self) -> Response: return await asyncio.wait_for(self.protocol.logout(), self.timeout) async def select(self, mailbox: str = 'INBOX') -> Response: return await asyncio.wait_for(self.protocol.select(mailbox), self.timeout) async def search(self, *criteria: str, charset: Optional[str] = 'utf-8') -> Response: return await asyncio.wait_for(self.protocol.search(*criteria, charset=charset), self.timeout) async def uid_search(self, *criteria: str, charset: Optional[str] = 'utf-8') -> Response: return await asyncio.wait_for(self.protocol.search(*criteria, by_uid=True, charset=charset), self.timeout) async def uid(self, command: str, *criteria: str) -> Response: return await self.protocol.uid(command, *criteria, timeout=self.timeout) async def store(self, *criteria: str) -> Response: return await asyncio.wait_for(self.protocol.store(*criteria), self.timeout) async def copy(self, *criteria: str) -> Response: return await asyncio.wait_for(self.protocol.copy(*criteria), self.timeout) async def expunge(self) -> Response: return await asyncio.wait_for(self.protocol.expunge(), self.timeout) async def fetch(self, message_set: str, message_parts: str) -> Response: return await self.protocol.fetch(message_set, message_parts, timeout=self.timeout) async def idle(self) -> Response: return await self.protocol.idle() def idle_done(self) -> None: if self._idle_waiter is not None: self._idle_waiter.cancel() self.protocol.idle_done() async def stop_wait_server_push(self) -> bool: if self.protocol.has_pending_idle_command(): await self.protocol.idle_queue.put(STOP_WAIT_SERVER_PUSH) return True return False async def wait_server_push(self, timeout: float = TWENTY_NINE_MINUTES) -> Response: return await asyncio.wait_for(self.protocol.idle_queue.get(), timeout=timeout) async def idle_start(self, timeout: float = TWENTY_NINE_MINUTES) -> Future: if self._idle_waiter is not None: self._idle_waiter.cancel() idle = asyncio.ensure_future(self.idle()) self.tasks.add(idle) idle.add_done_callback(self.tasks.discard) wait_for_ack = asyncio.ensure_future(self.protocol.wait_for_idle_response()) self.tasks.add(wait_for_ack) wait_for_ack.add_done_callback(self.tasks.discard) await asyncio.wait({idle, wait_for_ack}, return_when=asyncio.FIRST_COMPLETED) if not self.has_pending_idle(): wait_for_ack.cancel() raise Abort('server returned error to IDLE command') def start_stop_wait_server_push(): task = asyncio.ensure_future(self.stop_wait_server_push()) self.tasks.add(task) task.add_done_callback(self.tasks.discard) self._idle_waiter = self.protocol.loop.call_later(timeout, start_stop_wait_server_push) return idle def has_pending_idle(self) -> bool: return self.protocol.has_pending_idle_command() async def id(self, **kwargs) -> Response: return await asyncio.wait_for(self.protocol.id(**kwargs), self.timeout) async def namespace(self) -> Response: return await asyncio.wait_for(self.protocol.namespace(), self.timeout) async def noop(self) -> Response: return await asyncio.wait_for(self.protocol.simple_command('NOOP'), self.timeout) async def check(self) -> Response: return await asyncio.wait_for(self.protocol.simple_command('CHECK'), self.timeout) async def examine(self, mailbox: str = 'INBOX') -> Response: return await asyncio.wait_for(self.protocol.simple_command('EXAMINE', mailbox), self.timeout) async def status(self, mailbox: str, names: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('STATUS', mailbox, names), self.timeout) async def subscribe(self, mailbox: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('SUBSCRIBE', mailbox), self.timeout) async def unsubscribe(self, mailbox: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('UNSUBSCRIBE', mailbox), self.timeout) async def lsub(self, reference_name: str, mailbox_name: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('LSUB', reference_name, mailbox_name), self.timeout) async def create(self, mailbox_name: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('CREATE', mailbox_name), self.timeout) async def delete(self, mailbox_name: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('DELETE', mailbox_name), self.timeout) async def rename(self, old_mailbox_name: str, new_mailbox_name: str) -> Response: return await asyncio.wait_for(self.protocol.simple_command('RENAME', old_mailbox_name, new_mailbox_name), self.timeout) async def getquotaroot(self, mailbox_name: str) -> Response: return await asyncio.wait_for(self.protocol.execute(Command('GETQUOTAROOT', self.protocol.new_tag(), 'INBOX', untagged_resp_name='QUOTA')), self.timeout) async def list(self, reference_name: str, mailbox_pattern: Pattern) -> Response: return await asyncio.wait_for(self.protocol.simple_command('LIST', reference_name, mailbox_pattern), self.timeout) async def append(self, message_bytes, mailbox: str = 'INBOX', flags: str = None, date: Any = None) -> Response: return await self.protocol.append(message_bytes, mailbox, flags, date, timeout=self.timeout) async def close(self) -> Response: return await asyncio.wait_for(self.protocol.close(), self.timeout) async def move(self, uid_set: str, mailbox: str) -> Response: return await asyncio.wait_for(self.protocol.move(uid_set, mailbox), self.timeout) async def enable(self, capability: str) -> Response: if 'ENABLE' not in self.protocol.capabilities: raise Abort('server has not ENABLE capability') return await asyncio.wait_for(self.protocol.simple_command('ENABLE', capability), self.timeout) def has_capability(self, capability: str) -> bool: return capability in self.protocol.capabilities def extract_exists(response: Response) -> Optional[int]: for line in response.lines: if b'EXISTS' in line: return int(line.replace(b' EXISTS', b'').decode()) class IMAP4_SSL(IMAP4): def __init__(self, host: str = '127.0.0.1', port: int = IMAP4_SSL_PORT, loop: asyncio.AbstractEventLoop = None, timeout: float = IMAP4.TIMEOUT_SECONDS, ssl_context: ssl.SSLContext = None): super().__init__(host, port, loop, timeout, None, ssl_context) def create_client(self, host: str, port: int, loop: asyncio.AbstractEventLoop, conn_lost_cb: Callable[[Optional[Exception]], None] = None, ssl_context: ssl.SSLContext = None) -> None: if ssl_context is None: ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) super().create_client(host, port, loop, conn_lost_cb, ssl_context) # functions from imaplib def int2ap(num) -> str: """Convert integer to A-P string representation.""" val = '' ap = 'ABCDEFGHIJKLMNOP' num = int(abs(num)) while num: num, mod = divmod(num, 16) val += ap[mod:mod + 1] return val Months = ' Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ') Mon2num = {s.encode():n+1 for n, s in enumerate(Months[1:])} def time2internaldate(date_time: Any) -> str: """Convert date_time to IMAP4 INTERNALDATE representation. Return string in form: '"DD-Mmm-YYYY HH:MM:SS +HHMM"'. The date_time argument can be a number (int or float) representing seconds since epoch (as returned by time.time()), a 9-tuple representing local time, an instance of time.struct_time (as returned by time.localtime()), an aware datetime instance or a double-quoted string. In the last case, it is assumed to already be in the correct format. """ if isinstance(date_time, (int, float)): dt = datetime.fromtimestamp(date_time, timezone.utc).astimezone() elif isinstance(date_time, tuple): try: gmtoff = date_time.tm_gmtoff except AttributeError: if time.daylight: dst = date_time[8] if dst == -1: dst = time.localtime(time.mktime(date_time))[8] gmtoff = -(time.timezone, time.altzone)[dst] else: gmtoff = -time.timezone delta = timedelta(seconds=gmtoff) dt = datetime(*date_time[:6], tzinfo=timezone(delta)) elif isinstance(date_time, datetime): if date_time.tzinfo is None: raise ValueError("date_time must be aware") dt = date_time elif isinstance(date_time, str) and (date_time[0],date_time[-1]) == ('"','"'): return date_time # Assume in correct format else: raise ValueError("date_time not of a known type") fmt = '"%d-{}-%Y %H:%M:%S %z"'.format(Months[dt.month]) return dt.strftime(fmt) aioimaplib-2.0.1/aioimaplib/imap_testing_server.py000066400000000000000000001014251474216043600223630ustar00rootroot00000000000000# aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import argparse import asyncio from base64 import b64decode import email import email.mime.nonmultipart import logging import re import sys import uuid from collections import deque from copy import deepcopy from datetime import datetime, timedelta from email._policybase import Compat32 from email.header import Header from email.message import Message from functools import update_wrapper from math import ceil from operator import attrgetter from pytz import utc log = logging.getLogger(__name__) log.setLevel(logging.INFO) sh = logging.StreamHandler() sh.setLevel(logging.INFO) sh.setFormatter(logging.Formatter("%(asctime)s %(levelname)s " + "[%(module)s:%(lineno)d] %(message)s")) log.addHandler(sh) NONAUTH, AUTH, SELECTED, IDLE, LOGOUT = 'NONAUTH', 'AUTH', 'SELECTED', 'IDLE', 'LOGOUT' UID_RANGE_RE = re.compile(r'(?P\d+):(?P\d|\*)') CAPABILITIES = 'IDLE UIDPLUS MOVE ENABLE NAMESPACE AUTH=XOAUTH2' CRLF = b'\r\n' class InvalidUidSet(RuntimeError): def __init__(self, *args) -> None: super().__init__(*args) class ServerState: DEFAULT_MAILBOXES = ['INBOX', 'Trash', 'Sent', 'Drafts'] def __init__(self): self.mailboxes = dict() self.connections = dict() self.subcriptions = dict() def reset(self): self.mailboxes = dict() for connection in self.connections.values(): connection.transport.close() self.connections = dict() def add_mail(self, to, mail, mailbox='INBOX'): if to not in self.mailboxes: self.mailboxes[to] = dict() if mailbox not in self.mailboxes[to]: self.mailboxes[to][mailbox] = list() m = deepcopy(mail) m.id = len(self.mailboxes[to][mailbox]) + 1 m.uid = self.max_uid(to, mailbox) + 1 self.mailboxes[to][mailbox].append(m) return m.uid def max_uid(self, user, mailbox): if user not in self.mailboxes or mailbox not in self.mailboxes[user] \ or len(self.mailboxes[user][mailbox]) == 0: return 0 return max(self.mailboxes[user][mailbox], key=lambda msg: msg.uid).uid def max_id(self, user, mailbox): if user not in self.mailboxes or mailbox not in self.mailboxes[user]: return 0 return len(self.mailboxes[user][mailbox]) def login(self, user_login, protocol): if user_login not in self.mailboxes: self.mailboxes[user_login] = dict() for mb in self.DEFAULT_MAILBOXES: self.create_mailbox_if_not_exists(user_login, mb) if user_login not in self.connections: self.connections[user_login] = protocol if user_login not in self.subcriptions: self.subcriptions[user_login] = set() def create_mailbox_if_not_exists(self, user_login, user_mailbox): if user_mailbox not in self.mailboxes[user_login]: self.mailboxes[user_login][user_mailbox] = list() def get_mailbox_messages(self, user_login, user_mailbox): return self.mailboxes[user_login].get(user_mailbox) def has_mailbox(self, user_login, user_mailbox): return self.get_mailbox_messages(user_login, user_mailbox) is not None def imap_receive(self, user, mail, mailbox): uid = self.add_mail(user, mail, mailbox) log.debug('created mail with UID: %s' % uid) if user in self.connections: self.connections[user].notify_new_mail(uid) return uid def get_connection(self, user): return self.connections.get(user) def subscribe(self, user, mailbox): self.subcriptions[user].add(mailbox) def unsubscribe(self, user, mailbox): self.subcriptions[user].remove(mailbox) def lsub(self, user, mailbox_search): mb_re = re.compile(mailbox_search) return [mb for mb in self.subcriptions[user] if mb_re.match(mb)] def list(self, user, reference, mailbox_pattern): mb = self.mailboxes[user] for path_item in reference.split('/'): mb = self.mailboxes[user].get(path_item, self.mailboxes[user]) mb_re = re.compile(mailbox_pattern) return sorted([mb for mb in mb.keys() if mb_re.match(mb)]) def remove(self, message, user, mailbox): self.remove_byid(user, mailbox, message.id) def delete_mailbox(self, user, mailbox): if mailbox in self.mailboxes[user]: del self.mailboxes[user][mailbox] def rename_mailbox(self, user, old_mb, new_mb): if old_mb in self.mailboxes[user]: mb = self.mailboxes[user].pop(old_mb) self.mailboxes[user][new_mb] = mb def copy(self, user, src_mailbox, dest_mailbox, message_set): to_copy = [msg for msg in self.mailboxes[user][src_mailbox] if str(msg.id) in message_set] if dest_mailbox not in self.mailboxes[user]: self.mailboxes[user][dest_mailbox] = list() self.mailboxes[user][dest_mailbox] += to_copy def move(self, user, src_mailbox, dest_mailbox, id_range, msg_attribute): id_getter = attrgetter(msg_attribute) to_move = [msg for msg in self.mailboxes[user][src_mailbox] if id_getter(msg) in id_range] id_moved = [] for msg in to_move: self.remove(msg, user, src_mailbox) id_moved.append(self.add_mail(user, msg, dest_mailbox)) if len(id_moved) == 0: id_moved.append(0) return range(min(id_moved), max(id_moved) + 1) def remove_byid(self, user, mailbox, id): msg = self.mailboxes[user][mailbox].pop(id-1) self._reindex(user, mailbox) return msg def _reindex(self, user, mailbox): for idx, msg in enumerate(self.mailboxes[user][mailbox]): msg.id = idx + 1 def critical_section(next_state): async def execute_section(self, state, critical_func, *args, **kwargs): async with self.state_condition: critical_func(self, *args, **kwargs) self.state = state log.debug('state -> %s' % state) self.state_condition.notify_all() def decorator(func): def wrapper(self, *args, **kwargs): asyncio.ensure_future(execute_section(self, next_state, func, *args, **kwargs)) return update_wrapper(wrapper, func) return decorator command_re = re.compile(br'((DONE)|(?P\w+) (?P[\w]+)([\w \.#@:\*"\(\)\{\}\[\]\+\-\\\%=]+)?$)') FETCH_HEADERS_RE = re.compile(r'.*BODY.PEEK\[HEADER.FIELDS \((?P.+)\)\].*') class ImapProtocol(asyncio.Protocol): IDLE_STILL_HERE_PERIOD_SECONDS = 10 DEFAULT_QUOTA = 5000 def __init__(self, server_state, fetch_chunk_size=0, capabilities=CAPABILITIES, loop=asyncio.get_event_loop()): self.uidvalidity = int(datetime.now().timestamp()) self.capabilities = capabilities self.state_to_send = list() self.delay_seconds = 0 self.loop = loop self.fetch_chunk_size = fetch_chunk_size self.transport = None self.server_state = server_state self.user_login = None self.user_mailbox = None self.idle_tag = None self.idle_task = None self.state = NONAUTH self.state_condition = asyncio.Condition() self.append_literal_command = None def connection_made(self, transport): self.transport = transport transport.write('* OK IMAP4rev1 MockIMAP Server ready\r\n'.encode()) def data_received(self, data): if self.append_literal_command is not None: self.append_literal(data) return for cmd_line in data.splitlines(): if command_re.match(cmd_line) is None: self.send_untagged_line('BAD Error in IMAP command : Unknown command (%r).' % cmd_line) else: command_array = cmd_line.decode().rstrip().split() if self.state is not IDLE: tag = command_array[0] self.exec_command(tag, command_array[1:]) else: self.exec_command(None, command_array) def connection_lost(self, error): if error: log.error(error) if self.idle_task is not None: self.idle_task.cancel() self.transport.close() def exec_command(self, tag, command_array): command = command_array[0].lower() parameters = command_array[1:] if command == 'uid': command = command_array[1].lower() parameters = ['uid'] + command_array[2:] if not hasattr(self, command): return self.error(tag, 'Command "%s" not implemented' % command) self.loop.call_later(self.delay_seconds, lambda: getattr(self, command)(tag, *parameters)) def send_untagged_line(self, response, encoding='utf-8', continuation=False, max_chunk_size=0): self.send_raw_untagged_line(response.encode(encoding=encoding), continuation, max_chunk_size) def send_raw_untagged_line(self, raw_response, continuation=False, max_chunk_size=0): prefix = b'+ ' if continuation else b'* ' raw_line = prefix + raw_response + CRLF if max_chunk_size: for nb_chunk in range(ceil(len(raw_line) / max_chunk_size)): chunk_start_index = nb_chunk * max_chunk_size self.send(raw_line[chunk_start_index:chunk_start_index + max_chunk_size]) else: self.send(raw_line) def send_tagged_line(self, tag, response): self.send('{tag} {response}\r\n'.format(tag=tag, response=response).encode()) def send(self, _bytes): log.debug("Sending %r", _bytes) self.transport.write(_bytes) @critical_section(next_state=AUTH) def login(self, tag, *args): self.user_login = args[0] self.server_state.login(self.user_login, self) self.send_untagged_line('CAPABILITY IMAP4rev1 %s' % self.capabilities) self.send_tagged_line(tag, 'OK LOGIN completed') @critical_section(next_state=AUTH) def authenticate(self, tag, method, sasl_string): if method != "XOAUTH2": self.error(tag, 'Only XOAUTH2 autheticate is supported.') return token = b64decode(sasl_string).decode('ascii') # disassemble sasl string user_part, token_part = token.split('\1',1) _, self.user_login = user_part.split("=") self.server_state.login(self.user_login, self) self.send_tagged_line(tag, 'OK AUTHENTICATE completed') @critical_section(next_state=LOGOUT) def logout(self, tag, *args): self.server_state.login(self.user_login, self) self.send_untagged_line('BYE Logging out') self.send_tagged_line(tag, 'OK LOGOUT completed') self.transport.close() @critical_section(next_state=SELECTED) def select(self, tag, *args): self.user_mailbox = args[0] self.examine(tag, *args) @critical_section(next_state=IDLE) def idle(self, tag, *args): log.debug("Entering idle for '%s'", self.user_login) self.idle_tag = tag def still_here(): self.send_untagged_line('OK Still here') self.idle_task = self.loop.call_later(self.IDLE_STILL_HERE_PERIOD_SECONDS, still_here) self.idle_task = self.loop.call_later(self.IDLE_STILL_HERE_PERIOD_SECONDS, still_here) self.send_untagged_line('idling', continuation=True) @critical_section(next_state=SELECTED) def done(self, _, *args): self.send_tagged_line(self.idle_tag, 'OK IDLE terminated') self.idle_task.cancel() self.idle_task = None self.idle_tag = None @critical_section(next_state=AUTH) def close(self, tag, *args): self.user_mailbox = None self.send_tagged_line(tag, 'OK CLOSE completed.') async def wait(self, state): async with self.state_condition: await self.state_condition.wait_for(lambda: self.state == state) def examine(self, tag, *args): mailbox_name = args[0] self.server_state.create_mailbox_if_not_exists(self.user_login, mailbox_name) mailbox = self.server_state.get_mailbox_messages(self.user_login, mailbox_name) self.send_untagged_line(r'FLAGS (\Answered \Flagged \Deleted \Seen \Draft)') self.send_untagged_line(r'OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.') self.send_untagged_line('{nb_messages} EXISTS'.format(nb_messages=len(mailbox))) self.send_untagged_line('{nb_messages} RECENT'.format(nb_messages=0)) self.send_untagged_line('OK [UIDVALIDITY {uidvalidity}] UIDs valid'.format(uidvalidity=self.uidvalidity)) self.send_untagged_line('OK [UIDNEXT {next_uid}] Predicted next UID'.format( next_uid=self.server_state.max_uid(self.user_login, mailbox_name) + 1)) self.send_tagged_line(tag, 'OK [READ] Select completed (0.000 secs).') def search(self, tag, *args_param): args = list(args_param) by_uid = False args.reverse() if args[-1] == 'uid': args.pop() by_uid = True charset, keyword, unkeyword, older, younger, range_ = None, None, None, None, None, None if args and 'CHARSET' == args[-1].upper(): args.pop() charset = args.pop() if args and 'KEYWORD' == args[-1].upper(): args.pop() keyword = args.pop() if args and 'UNKEYWORD' == args[-1].upper(): args.pop() unkeyword = args.pop() if args and 'OLDER' == args[-1].upper(): args.pop() older = int(args.pop()) if args and 'YOUNGER' == args[-1].upper(): args.pop() younger = int(args.pop()) match_range = None if len(args) == 0 else UID_RANGE_RE.match(args[-1]) if match_range: args.pop() start = int(match_range.group('start')) if match_range.group('end') == '*': end = sys.maxsize else: end = int(match_range.group('end')) + 1 range_ = range(start, end) all = 'ALL' in args self.send_untagged_line( 'SEARCH {msg_uids}'.format(msg_uids=' '.join( self.memory_search(all, keyword, unkeyword, older, younger, by_uid=by_uid, range_=range_)))) self.send_tagged_line(tag, 'OK %sSEARCH completed' % ('UID ' if by_uid else '')) def memory_search(self, all, keyword, unkeyword, older, younger, by_uid=False, range_=None): def item_match(msg): return all or \ (keyword is not None and keyword in msg.flags) or \ (unkeyword is not None and unkeyword not in msg.flags) or \ (range_ is not None and msg.uid in range_) or \ (older is not None and datetime.now(tz=utc) - timedelta(seconds=older) > msg.date) or \ (younger is not None and datetime.now(tz=utc) - timedelta(seconds=younger) < msg.date) return [str(msg.uid if by_uid else msg.id) for msg in self.server_state.get_mailbox_messages(self.user_login, self.user_mailbox) if item_match(msg)] def store(self, tag, *args): arg_list = list(args) if arg_list[0] == 'uid': arg_list = list(args[1:]) uid = int(arg_list[0]) # args = ['12', '+FLAGS', '(FOO)'] flags = ' '.join(arg_list[2:]).strip('()').split() # only support one flag and do not handle replacement (without + sign) for message in self.server_state.get_mailbox_messages(self.user_login, self.user_mailbox): if message.uid == uid: message.flags.extend(flags) self.send_untagged_line('{uid} FETCH (UID {uid} FLAGS ({flags}))'.format( uid=uid, flags=' '.join(message.flags))) self.send_tagged_line(tag, 'OK Store completed.') def fetch(self, tag, *args): arg_list = list(args) by_uid = False if arg_list[0] == 'uid': by_uid = True arg_list = list(args[1:]) try: fetch_range = self._build_sequence_range(arg_list[0]) except InvalidUidSet: return self.error(tag, 'Error in IMAP command: Invalid uidset') parts = arg_list[1:] parts_str = ' '.join(parts) for message in self.server_state.get_mailbox_messages(self.user_login, self.user_mailbox): if (by_uid and message.uid in fetch_range) or (not by_uid and message.id in fetch_range): response = self._build_fetch_response(message, parts, by_uid=by_uid) if 'BODY.PEEK' not in parts_str and ('BODY[]' in parts_str or 'RFC822' in parts_str): message.flags.append(r'\Seen') self.send_raw_untagged_line(response) self.send_tagged_line(tag, 'OK FETCH completed.') def _build_sequence_range(self, uid_pattern): range_re = re.compile(r'(\d+):(\d+|\*)') match = range_re.match(uid_pattern) if match: start = int(match.group(1)) if start <= 0: raise InvalidUidSet() if match.group(2) == '*': return range(start, sys.maxsize) end = int(match.group(2)) if end <= 0 or end < start: raise InvalidUidSet() return range(start, end + 1) return [int(uid_pattern)] def _build_fetch_response(self, message, parts, by_uid=True): response = ('%d FETCH (UID %s' % (message.id, message.uid)).encode() if by_uid \ else ('%d FETCH (' % message.id).encode() for part in parts: if part.startswith('(') or part.endswith(')'): part = part.strip('()') if not response.endswith(b' ') and not response.endswith(b'('): response += b' ' if part == 'UID' and not by_uid: response += ('UID %s' % message.uid).encode() if part == 'BODY[]' or part == 'BODY.PEEK[]' or part == 'RFC822': response += ('%s {%s}\r\n' % (part, len(message.as_bytes()))).encode() + message.as_bytes() if part == 'BODY.PEEK[HEADER.FIELDS': fetch_header = FETCH_HEADERS_RE.match(' '.join(parts)) if fetch_header: headers = fetch_header.group('headers') message_headers = Message(policy=Compat32(linesep='\r\n')) for hk in headers.split(): message_headers[hk] = message.email.get(hk, '') response += ('BODY[HEADER.FIELDS (%s)] {%d}\r\n' % (headers, len(message_headers.as_bytes()))).encode() + message_headers.as_bytes() if part == 'FLAGS': response += ('FLAGS (%s)' % ' '.join(message.flags)).encode() response = response.strip(b' ') response += b')' return response def append(self, tag, *args): mailbox_name = args[0] size = args[-1].strip('{}') self.append_literal_command = (tag, mailbox_name, int(size)) self.send_untagged_line('Ready for literal data', continuation=True) def append_literal(self, data): tag, mailbox_name, size = self.append_literal_command if data == CRLF: if 'UIDPLUS' in self.capabilities: self.send_tagged_line(tag, 'OK [APPENDUID %s %s] APPEND completed.' % (self.uidvalidity, self.server_state.max_uid(self.user_login, mailbox_name))) else: self.send_tagged_line(tag, 'OK APPEND completed.') self.append_literal_command = None return literal_data, rest = data[:size], data[size:] if len(literal_data) < size: self.send_tagged_line(self.append_literal_command[0], 'BAD literal length : expected %s but was %s' % (size, len(literal_data))) self.append_literal_command = None elif rest and rest != CRLF: self.send_tagged_line(self.append_literal_command[0], 'BAD literal trailing data : expected CRLF but got %s' % (rest)) else: m = email.message_from_bytes(data) self.server_state.add_mail(self.user_login, Mail(m), mailbox_name) if rest: self.append_literal(rest) def expunge(self, tag, *args): expunge_range = range(0, sys.maxsize) uid_response = '' if args and args[0] == 'uid': uid_response = 'UID ' if len(args) > 1: try: expunge_range = self._build_sequence_range(args[1]) except InvalidUidSet: return self.error(tag, 'Error in IMAP command: Invalid uidset') for message in self.server_state.get_mailbox_messages(self.user_login, self.user_mailbox).copy(): if message.uid in expunge_range: self.server_state.remove(message, self.user_login, self.user_mailbox) self.send_untagged_line('{msg_uid} EXPUNGE'.format(msg_uid=message.uid)) self.send_tagged_line(tag, 'OK %sEXPUNGE completed.' % uid_response) def capability(self, tag, *args): self.send_untagged_line('CAPABILITY IMAP4rev1 YESAUTH') self.send_tagged_line(tag, 'OK Pre-login capabilities listed, post-login capabilities have more') def namespace(self, tag): self.send_untagged_line('NAMESPACE (("" "/")) NIL NIL') self.send_tagged_line(tag, 'OK NAMESPACE command completed') def enable(self, tag, *args): self.send_tagged_line(tag, 'OK %s enabled' % ' '.join(args)) def copy(self, tag, *args): message_set, mailbox = args[0:-1], args[-1] self.server_state.copy(self.user_login, self.user_mailbox, mailbox, message_set) self.send_tagged_line(tag, 'OK COPY completed.') def move(self, tag, *args): args_list = list(args) args_list.reverse() msg_attribute = 'id' if args[-1] == 'uid': msg_attribute = 'uid' mailbox, message_set = args_list[0:2] seq_range = self._build_sequence_range(message_set) seq_moved = self.server_state.move(self.user_login, self.user_mailbox, mailbox, seq_range, msg_attribute) if 'UIDPLUS' in self.capabilities: self.send_untagged_line( 'OK [COPYUID %d %d:%d %d:%d]' % (self.uidvalidity, seq_range.start, seq_range.stop-1, seq_moved.start, seq_moved.stop-1)) for msg_id in seq_moved: self.send_untagged_line('{msg_id} EXPUNGE'.format(msg_id=msg_id)) self.send_tagged_line(tag, 'OK Done') def id(self, tag, *args): self.send_untagged_line('NIL') self.send_tagged_line(tag, 'OK ID command completed') def noop(self, tag, *args): if len(self.state_to_send) > 0: for line in deque(self.state_to_send): self.send_untagged_line(line) self.send_tagged_line(tag, 'OK NOOP completed.') def check(self, tag, *args): self.send_tagged_line(tag, 'OK CHECK completed.') def status(self, tag, *args): mailbox_name = args[0] data_items = ' '.join(args[1:]) mailbox = self.server_state.get_mailbox_messages(self.user_login, mailbox_name) if mailbox is None: self.send_tagged_line(tag, 'NO STATUS completed.') return status_response = 'STATUS %s (' % mailbox_name if 'MESSAGES' in data_items: status_response += 'MESSAGES %s' % len(mailbox) if 'RECENT' in data_items: status_response += ' RECENT %s' % len([m for m in mailbox if 'RECENT' in m.flags]) if 'UIDNEXT' in data_items: status_response += ' UIDNEXT %s' % (self.server_state.max_uid(self.user_login, self.user_mailbox) + 1) if 'UIDVALIDITY' in data_items: status_response += ' UIDVALIDITY %s' % self.uidvalidity if 'UNSEEN' in data_items: status_response += ' UNSEEN %s' % len([m for m in mailbox if 'UNSEEN' in m.flags]) status_response += ')' self.send_untagged_line(status_response) self.send_tagged_line(tag, 'OK STATUS completed.') def subscribe(self, tag, *args): mailbox_name = args[0] self.server_state.subscribe(self.user_login, mailbox_name) self.send_tagged_line(tag, 'OK SUBSCRIBE completed.') def unsubscribe(self, tag, *args): mailbox_name = args[0] self.server_state.unsubscribe(self.user_login, mailbox_name) self.send_tagged_line(tag, 'OK UNSUBSCRIBE completed.') def lsub(self, tag, *args): reference_name, mailbox_name = args if not reference_name.endswith('.') and not mailbox_name.startswith('.'): mailbox_search = '%s.%s' % (reference_name, mailbox_name) else: mailbox_search = reference_name + mailbox_name for found_mb_name in self.server_state.lsub(self.user_login, mailbox_search): self.send_untagged_line('LSUB () "." %s' % found_mb_name) self.send_tagged_line(tag, 'OK LSUB completed.') def create(self, tag, *args): mailbox_name = args[0] self.server_state.create_mailbox_if_not_exists(self.user_login, mailbox_name) self.send_tagged_line(tag, 'OK CREATE completed.') def delete(self, tag, *args): mailbox_name = args[0] self.server_state.delete_mailbox(self.user_login, mailbox_name) self.send_tagged_line(tag, 'OK DELETE completed.') def rename(self, tag, *args): old_mb, new_mb = args self.server_state.rename_mailbox(self.user_login, old_mb, new_mb) self.send_tagged_line(tag, 'OK RENAME completed.') def list(self, tag, *args): reference = args[0] mailbox_pattern = args[1].replace('*', '.*').replace('%', '.*') for mb in self.server_state.list(self.user_login, reference, mailbox_pattern): self.send_untagged_line('LIST () "/" %s' % mb) self.send_tagged_line(tag, 'OK LIST completed.') def error(self, tag, msg): self.send_tagged_line(tag, 'BAD %s' % msg) def notify_new_mail(self, uid): if self.idle_tag: self.send_untagged_line('{uid} EXISTS'.format(uid=uid)) self.send_untagged_line('{uid} RECENT'.format(uid=uid)) else: self.state_to_send.append('{uid} EXISTS'.format(uid=uid)) self.state_to_send.append('{uid} RECENT'.format(uid=uid)) def delay(self, tag, *args): self.delay_seconds = int(args[0]) self.send_tagged_line(tag, 'OK DELAY completed.') def getquotaroot(self, tag, *args): arg_list = list(args) size = 0 if self.server_state.has_mailbox(self.user_login, arg_list[0]): for message in self.server_state.get_mailbox_messages(self.user_login, arg_list[0]): size += len(message.as_bytes()) self.send_untagged_line(f'QUOTAROOT {arg_list[0]} INBOX') self.send_untagged_line(f'QUOTA INBOX (STORAGE {size} {self.DEFAULT_QUOTA})') self.send_tagged_line(tag, 'OK GETQUOTAROOT completed.') class MockImapServer: def __init__(self, capabilities=CAPABILITIES, loop=None) -> None: self._server_state = ServerState() self._connections = list() self.capabilities = capabilities if loop is None: if sys.version_info < (3, 10): self.loop = asyncio.get_event_loop() else: try: self.loop = asyncio.get_running_loop() except RuntimeError: self.loop = asyncio.new_event_loop() else: self.loop = loop def receive(self, mail, imap_user=None, mailbox='INBOX'): """ :param imap_user: str :type mail: Mail :type mailbox: str :type to_list: list """ if imap_user is not None: return [self._server_state.imap_receive(imap_user, mail, mailbox)] else: uids = list() for to in mail.to: uids.append(self._server_state.imap_receive(to, mail, mailbox)) return uids async def wait_state(self, state, user): user_connections = [connection for connection in self._connections if connection.user_login == user] if len(user_connections) == 0: other_users = list(map(lambda c: c.user_login, self._connections)) raise ValueError("wait_state didn't find a connection to user %s among %s" % (user, other_users)) if len(user_connections) > 1: raise ValueError("wait_state can't handle %d connections for user %s" % (len(user_connections), user)) await user_connections[0].wait(state) def get_connection(self, user): return self._server_state.get_connection(user) def run_server(self, host='127.0.0.1', port=1143, fetch_chunk_size=0, ssl_context=None): def create_protocol(): protocol = ImapProtocol(self._server_state, fetch_chunk_size, self.capabilities, self.loop) self._connections.append(protocol) return protocol return self.loop.create_server(create_protocol, host, port, ssl=ssl_context) def reset(self): self._server_state.reset() class Mail: def __init__(self, email, date=datetime.now()): self.date = date self.email = email self.uid = 0 self.id = 0 self.flags = [] def as_bytes(self): return self.email.as_bytes() def as_string(self): return self.email.as_string() @property def to(self): return self.email.get('To').split(', ') @staticmethod def create(to, mail_from='', subject='', content='', encoding='utf-8', date=None, in_reply_to=None, message_id=None, quoted_printable=False, cc=None, body_subtype='plain', references=None ): """ :param quoted_printable: boolean :type to: list :type cc: list :type mail_from: str :type subject: unicode :type content: unicode :type encoding: str :type date: datetime :param in_reply_to: str :param message_id: str :param body_subtype: str :param references: list """ charset = email.charset.Charset(encoding) msg = email.mime.nonmultipart.MIMENonMultipart('text', body_subtype, charset=encoding) if quoted_printable: charset.body_encoding = email.charset.QP msg.set_payload(content, charset=charset) date = date or datetime.now(tz=utc) msg['Return-Path'] = '<%s>' % mail_from msg['Delivered-To'] = '<%s>' % ', '.join(to) msg['Message-ID'] = '<%s>' % (message_id or '%s@mockimap' % str(uuid.uuid1())) msg['Date'] = date.strftime('%a, %d %b %Y %H:%M:%S %z') if '<' in mail_from and '>' in mail_from or mail_from == '': msg['From'] = mail_from else: msg['From'] = '<%s>' % mail_from msg['User-Agent'] = 'python3' msg['MIME-Version'] = '1.0' msg['To'] = ', '.join(to) msg['Subject'] = Header(subject, encoding) if in_reply_to is not None: msg['In-Reply-To'] = '<%s>' % in_reply_to if cc is not None: msg['Cc'] = ', '.join(cc) if references is not None: ' '.join(['<%s>' % ref for ref in references]) return Mail(msg, date=date) async def async_main(**kwargs): log.info(f"Running IMAP server on {kwargs['host']}:{kwargs['port']}") srv = await MockImapServer(loop=asyncio.get_running_loop()).run_server(host=kwargs['host'], port=kwargs['port']) async with srv: await srv.serve_forever() def main(): parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, prog='imap-testing-server', description='Small python asyncio IMAP testing server from aioimaplib.', epilog='') parser.add_argument('--port', help='tcp port of the server', default=1143) parser.add_argument('--host', help='host of the server', default='127.0.0.1') args = parser.parse_args() asyncio.run(async_main(**args.__dict__)) if __name__ == '__main__': main() aioimaplib-2.0.1/example/000077500000000000000000000000001474216043600152625ustar00rootroot00000000000000aioimaplib-2.0.1/example/imap_fetch.py000066400000000000000000000066221474216043600177410ustar00rootroot00000000000000import re from asyncio import run, wait_for from collections import namedtuple from email.message import Message from email.parser import BytesHeaderParser, BytesParser from typing import Collection import aioimaplib ID_HEADER_SET = {'Content-Type', 'From', 'To', 'Cc', 'Bcc', 'Date', 'Subject', 'Message-ID', 'In-Reply-To', 'References'} FETCH_MESSAGE_DATA_UID = re.compile(rb'.*UID (?P\d+).*') FETCH_MESSAGE_DATA_SEQNUM = re.compile(rb'(?P\d+) FETCH.*') FETCH_MESSAGE_DATA_FLAGS = re.compile(rb'.*FLAGS \((?P.*?)\).*') MessageAttributes = namedtuple('MessageAttributes', 'uid flags sequence_number') async def fetch_messages_headers(imap_client: aioimaplib.IMAP4_SSL, max_uid: int) -> int: response = await imap_client.uid('fetch', '%d:*' % (max_uid + 1), '(UID FLAGS BODY.PEEK[HEADER.FIELDS (%s)])' % ' '.join(ID_HEADER_SET)) new_max_uid = max_uid if response.result == 'OK': for i in range(0, len(response.lines) - 1, 3): fetch_command_without_literal = b'%s %s' % (response.lines[i], response.lines[i + 2]) uid = int(FETCH_MESSAGE_DATA_UID.match(fetch_command_without_literal).group('uid')) flags = FETCH_MESSAGE_DATA_FLAGS.match(fetch_command_without_literal).group('flags') seqnum = FETCH_MESSAGE_DATA_SEQNUM.match(fetch_command_without_literal).group('seqnum') # these attributes could be used for local state management message_attrs = MessageAttributes(uid, flags, seqnum) print(message_attrs) # uid fetch always includes the UID of the last message in the mailbox # cf https://tools.ietf.org/html/rfc3501#page-61 if uid > max_uid: message_headers = BytesHeaderParser().parsebytes(response.lines[i + 1]) print(message_headers) new_max_uid = uid else: print('error %s' % response) return new_max_uid async def fetch_message_body(imap_client: aioimaplib.IMAP4_SSL, uid: int) -> Message: dwnld_resp = await imap_client.uid('fetch', str(uid), 'BODY.PEEK[]') return BytesParser().parsebytes(dwnld_resp.lines[1]) def handle_server_push(push_messages: Collection[str]) -> None: for msg in push_messages: if msg.endswith(b'EXISTS'): print('new message: %s' % msg) # could fetch only the message instead of max_uuid:* in the loop elif msg.endswith(b'EXPUNGE'): print('message removed: %s' % msg) elif b'FETCH' in msg and b'\Seen' in msg: print('message seen %s' % msg) else: print('unprocessed push message : %s' % msg) async def imap_loop(host, user, password) -> None: imap_client = aioimaplib.IMAP4_SSL(host=host, timeout=30) await imap_client.wait_hello_from_server() await imap_client.login(user, password) await imap_client.select('INBOX') persistent_max_uid = 1 while True: persistent_max_uid = await fetch_messages_headers(imap_client, persistent_max_uid) print('%s starting idle' % user) idle_task = await imap_client.idle_start(timeout=60) handle_server_push((await imap_client.wait_server_push())) imap_client.idle_done() await wait_for(idle_task, timeout=5) print('%s ending idle' % user) if __name__ == '__main__': run(imap_loop('imap.server', 'account_id', 'password')) aioimaplib-2.0.1/example/xoauth2.py000066400000000000000000000115731474216043600172350ustar00rootroot00000000000000import asyncio import logging import socket import webbrowser from pathlib import Path from pprint import pprint from urllib.parse import parse_qs import json from httpx_oauth.oauth2 import OAuth2, OAuth2Token from aioimaplib import IMAP4_SSL CALLBACK_HTTP_PORT = 12345 # for office365 client = OAuth2( "", "", "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize", "https://login.microsoftonline.com/organizations/oauth2/v2.0/token", ) SCOPES = [ "offline_access", "https://outlook.office.com/IMAP.AccessAsUser.All", ] # for google`` # this is not tested yet. # from httpx_oauth.clients.google import GoogleOAuth2 # client = GoogleOAuth2( # "", # "", # ) # SCOPES = ["https://mail.google.com/"] logging.basicConfig(level=logging.DEBUG) token_path = Path(__file__).parent / ".oauth_token.json" async def main(): token = await get_token() client = IMAP4_SSL("outlook.office365.com") await client.wait_hello_from_server() result = await client.xoauth2("", token) pprint(result.lines) await client.select() result = await client.uid_search("1:*", charset="us-ascii") pprint(result.lines) await client.close() # These are functions to aquire a token and persist it/refresh it # if you have issues you can delete the token .oauth_token.json to re-aquire it async def get_token(): if not token_path.is_file(): token = await authorization() else: with token_path.open() as f_in: token_dict = json.load(f_in) token = OAuth2Token(token_dict) if token.is_expired(): token = client.refresh_token(token["refresh_token"]) # write token to file with token_path.open("w") as f_out: json.dump(token, f_out, indent=4) return token["access_token"] async def start_server_and_open_browser(url): response_queue = asyncio.Queue(1) # start callback webserver server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(("localhost", CALLBACK_HTTP_PORT)) server.listen() # this is set so we can restart the server quickly without getting # OSError: [Errno 48] Address already in use errors server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.setblocking(False) server_task = asyncio.create_task(run_http_server(server, response_queue)) webbrowser.open(url) val = await response_queue.get() server.close() server_task.cancel() return val async def authorization(): """Authorizes""" callback_url = f"http://localhost:{CALLBACK_HTTP_PORT}/" url = await client.get_authorization_url(callback_url, scope=SCOPES) token_response = await start_server_and_open_browser(url) access_token = await client.get_access_token(token_response["code"][0], callback_url) return access_token # this is a really small webserver to be able to receive the callback from oauth # heavlily inspired by https://github.com/jangia/http_server/blob/master/server.py CHUNK_LIMIT = 50 DEFAULT_RESPONSE = "HTTP/1.1 {status} {status_msg}\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Encoding: UTF-8\r\nAccept-Ranges: bytes\r\nConnection: closed\r\n\r\n{html}" def parse_request(request_str): part_one, part_two = request_str.split("\r\n\r\n") http_lines = part_one.split("\r\n") method, url, _ = http_lines[0].split(" ") if method != "GET": status, status_msg = 405, "Not allowed" else: status, status_msg = 200, "OK" return status, status_msg, url async def build_response(request, response_queue): status, status_msg, url = parse_request(request) html = "" # if there is code in the response it is the one we want if "code" in url: query = parse_qs(url.split("?", 1)[1]) await response_queue.put(query) html = "Thank you, auth is handed back to the cli." else: status = 404 status_msg = "Not Found" response = DEFAULT_RESPONSE.format( status=status, status_msg=status_msg, html=html ).encode("utf-8") return response async def read_request(client): request = "" while True: chunk = (await asyncio.get_event_loop().sock_recv(client, CHUNK_LIMIT)).decode( "utf8" ) request += chunk if len(chunk) < CHUNK_LIMIT: break return request async def handle_client(client, response_queue): request = await read_request(client) response = await build_response(request, response_queue) await asyncio.get_event_loop().sock_sendall(client, response) client.close() async def run_http_server(selected_server, response_queue): while True: client, _ = await asyncio.get_event_loop().sock_accept(selected_server) asyncio.create_task(handle_client(client, response_queue)) if __name__ == "__main__": asyncio.run(main()) aioimaplib-2.0.1/images/000077500000000000000000000000001474216043600150745ustar00rootroot00000000000000aioimaplib-2.0.1/images/thread_imap_protocol.png000066400000000000000000000456301474216043600220100ustar00rootroot00000000000000PNG  IHDRDbKGDote pHYs  tIME 75i5 IDATxwxU4Hi ; *(RDAaXvUVQwQ\auU@D@ 5@B ioHy[=<3w9ssR S Aʣӧٝ -;s2#jBX#.{\xD@f|5g.l v͊˭a=Ý`X e Ѐk{]w5BÉpaHͭI}eҶoA9]l~>"V[9(q  BO^"Q(!6G?5M'ݒ2p`Ɉ{f(ÕٮҴO2?ɧ8~n 7&45Tx( d&O7F 8t=/'QcQNyVࠔ*V.ףx# [hD3i]&ԙ5':=Kt\YfvZRSSlDGGSvmvJ߾}8pTZA(C?!b8z;4A&PgOaH.B0ek0~SACգ, QQQmۖx!CH]|8sG׎ |5\ KAGg_&v}Ƒi%gee1rH B)pN'\05] 6 gnԜwbzT'O&))Ir%g<.$מs7ZѰ–Q7/{>Hlg)0`@󍏏g޼yp88u֭_}qpz s0̘P\4l0„#ƍ 3ݺD@)EVVzw}W2W;Yt3Nk1hhl~to3Y9w\~Ba DLL &Hws=oV9n&bbb0DGGӷo_̙SL0&MD˖-yw+,u۴#⡇85Yq\iiU1#i|}(944{/J3k,4M+\iڴ)=퓺\J G#gVPigzTaU9X%Z- S~x~nf?rrr /iydMNN.ݣG͢ ҕ7}J/\{Rf#uGd6caT^&%owټ wtPJǶm۸EA+裏ӧkl6iRu'c0hXm8Cs9|gp:+`7a 1c1*FEa\S:Dw}uܹŋKe*PWY TrΞd1qF _a1 >dZiӆO>p7|S_Š+8qNs&uY_i[ V&n7nld[9m 7fs`j6h&\]znz O8G؄֭+o+o2a'y_ h~h `w>υŹ|_#G$222 Gg͚EFFJ)Μ9Sy.+M$pMۨiŊi9gY̹\Ń Yquh^ʹп9BNxwٿ?vSj*..NY,լY3o*-X]=zbݘoXVj'& jSUޙ3*'#CjgxڎImǠ`QcV[zߠwi U j̘1jP&MR-ZPVUũ^zI9Re]~@z2/&o(2  ̚ 7Q6ă͞yV4A0I/EP"Uļ1wb ֟:8ƛ*WUpƉGh9UV(Z qV$c[phd;5Ξ͈efnk+-G!˗`pg_]ka `03#`pVLMW+> { 2VfP!ZQ  $_3pgd… Ӹ?AA1]t|Dl_{3ƍ ; S9=u{,Q8`th؅VOiO;alа CzH%3/˖|N,80>4Sw m;,kQ͚Q꫉za9 4L7ld]tqGѠGxoT0 ͅѡ L[3z\%_ADۼ `@+|h{t# 0hpq; 3(4BmK|Ʌ X75G8cpd&&!]I(Hvs4+F nz6*t65b8c1AaDH0v2~\Fցxq'nLRWz3q{ȍN(CC0x--p6[1Do(VkPǛL_`a0juPj# =3(X<̞{ K˺E)/Ȇu MXt ˑ'K0fÝIҰa2f=Kxtq 'Q-7CܶS?ƂFD{-2X i\.h`4EW X!PzD8 J_jIT (؀`+ 3eZA| A 8`AA, 8`,}AqxIAq  Aq  XAq PwA [ഁD˛eؚ^3 rP4VC(Fٯ 3 xޒouTPʏ@g"m VSE\[ h|p< vʾ A 8`AA, /rAXZH  jԀGFkBxXlDbB!6%߾%fgV0\ &_F:neax?a$''n:,I<G3]2mQ.z@tuַ-|=(.gȠ?%dyj6ZtA –Q`6=] "P zjrdCwi${> AZp`|n"Q^c9vP(hK+gtAr&Ң z^ASd_G{a7E/]xAwZMug z pd3' $Zߖsƀ9 Ɵ._{Vr'Me?7<lU99 OCg/cK󧜥fԣ?tZuXu'lD?_8ǡRq4:.^;FFk-(X+^ieRmnE~SUeˍφR\.nw K"}mCbG с+?VGVeK٦@ dMD tDv$sR qT2)zY^3dp'c_iO*]|R\Ν;Dzeظq#7ڵL%wʳ9aQޥ}k%LY=џzNuXu/.gXyF:Y:3tn\l_t)]6wGk_ ^[gK Ӈ (2A_ @|u?~<$((T,2$`(ch4bASBEOCËGeϐ4~0}O=C^w?*=٦hsD,(]|9I+qs.^4:8b`ЂQK#kw2h: <W\$:Z$Ќ|P, چ)en}vN|}g#Cl66nȾ}9r$]tPC^/: \Sťڥ`R7j/=Kթ,Kw:@\fTGW0ӞG}[ޅfNs܈8yp'|쀕R;v{F||A*uBn9Xk-puT$O<0l\ <;wLll,-[,dA6 9 VXN^ԩrA&Z;`+WiӦӇѶ ~ElHxng۶m:tnV.~I{W:IUsVg@Mc"jc >̯۴i;v^z2#{bjRRRHII~$&&bXDӂ MBvvd=J||<-Z- w6 4MxA6 WDn 6m۶2#B@ I={ҹsgia w6 +شi̯!$\xϞ=:Z =`vIrr2l-L/yal8aR9ё2qmd}{  396L_w>ͨ/!,n>XeiOKX@g]FhX/.?sxض| I 0z%skhM*'gϞo3f`ԨQf͚忉"N z*Aכi#K'=v{Y)G./lnd+]IJB 6 Q*EVWټ$WIyMޏWd@jB>Lll,5Fz6]V/(4=w ]נQ-80FA 녽462DДW)([y6F>( ǥyz|}ێoaQtϥj5 r+St וnWTem&ׇQAVN"Zlvv/E-FuM#]JRSS>)T^sX, @ IDAT'8.򧣦fV2>~C,; ht?wm)KuTK*3N)EFF;v ''!6hj];v%w:aAHz)gXR+v d ++lgVɓItSy$-8\=9"ꔁ dDPרS']p{W.::ή]3gk׮%// ^K lyp eZdʉ (/CwЗE*MuM#]V[o1e&Lޯ'mMʘ'N|T 0%t?ÜpC'6RFЙq%sb Ov8Gj=P,}>/ ߿ g+BJJ '11u̞=~ \`F,:/EN k_:8y 1I0]Ha4H X ;SWW$<"eSN%)) Mx{AH,\{a3U;lg՚_|Űa4 6/Oq)ܸR9̴Q;8>/yp[мO]^ġbjժ0w믿W^ 6} xmr޽,7oNHH}~)+W;UVXVѮ >AlPp֯_OfHLLoe̙q3'zFT'E%ե+IzYdIPzUg]"hU7iHRW\Dv\{\&\t~R M1 >&A$T< i믘fvڅi> A$\q?fϞ=:u ]w%\!IrpBVZhdeG'6 kFz  //'O~\[m:Ɨ^z:up8رcvNbb"W]u&I(_&Z;``:t@jj*[n%334ꪫ0IA|&;` \.W᧾=Abb"uԑ MBwNbÆ l6Yz5kNAbyp!9࢔=f ˭ʭhe~Hi[K.̘1޽{s` &LQF _})޿* ~_żuǞ*Mk+\4:.^u#""ٳ'qqq޽o~W_1uT=*M8/8ܹ5( ElP)w`LL :u ?ٳgYd aaa;] :K9DW0bFzEz:ĺuhРƍSNw!55U4+grR$T{ Ňz6l={ܹ3=;v,,ǎ >NpF A_Ɉm^t'==J.]xx?><~=/\jB{iaO7|'6\-uU&i ﳛ4Zڀ[9< zeA)ʕ+>}:?3Ǐ'44-[2h |I(ɧj d7q@[o_ς-~hzoԨ^9ۅ;n򿹭r*PBb :~;mal 2}I0Y0pڵӇ5kҥK Bjj*=k&""|uN퐞'wgm}$wt[0l/K`sp2 \OرV}2bF#9_~%o)X^-h~XB J9o5&^z?֯ÝvE籯++?sbвeK>c̙ah_&j̷S+oU`ߏGo#<F?}yg:ZpG3]7H%ZB)Ue\tӤw}7CxAj?-enҳ篛ߑ:c-Gޏ{Ǿ2x M>bK}}H۸O ` RD}q6Ҏ;C z֬YS8PfM–]wU␏re~}]}I~Chycd;kn 4 >QXm9~_;\g+NQrOۦ:Ai !%a^EUmuSa炞RqD_ϲeXj6mO>τ.,| ֭#>>4!xc'7x},}> ߿ g2"o=I 6 ӽha,G 5Ю<|qEiժƍ_lA+%籯 f֭[ӠA/^l)UzyiР,^TebW#?)zVﭳ}s5k/)ZL>}p7j~zC"4tH Vw'ʃ!GOypxs=!_Y#&M }Z_ oP`yUu>*R0 :tTӰaË(0V)a>_z/"ot{Jzk'l8m| o ^,y;ru1|Ұ$''3rHq_Oئ*o 8퐜#=Е[K 社,}6P [TC=~KkUz>g| bT^I7Ðp34AyrxBvW6$yg2a}]~a222Y&ڵ?/ ͞'lSݏ$Ȅ.>Y}2}˻ ɟ?Dq)/eyVW˞:ZP{~bBMP'\m"/Pno 0Zx~T |ZЪtOp2 4 ='Sr_6 d`(i9ǣ_/tYmX>?m.& N셾!+d/*/tN7Άyࣽ0S6g{|mNtFgw˜Q_ˆ.5W G>wePzli+~'Ø$= ёp<5^=Ì7W- ԯ_ݻwgϞJjnF7T276H`,Vhx5ܑo,!$nR|_U=0XFϟϗ_~_|8s9Ez]ׁ%xq 1jA?Xx4 E}VBV+|;B7p]P*XA}-[ҲeK=C)U|)_X9&d6ё'=/X"`\0{=0۷o/QQQgbʤRk_-?a{Շ^:]Y_V4-e-}pUYt)_5D+/bhe:IvP+?3pM7EK"AX7EV,,MGy!{'`tG9s;3iӦѾ}3|eM^\EO?N3N@=+˱)4Jh= ",0ԃFa;4}[&[DWP/ԠN'?I/G '6moFJJ +NMW "3,E7VWb:7./:grf.`(r׿YR@kw^~FW~r{2,jСq :4`_Yl5.o;oCs~-K_ð˧/CYh?E3`>ukR -!toA2 H؜`\ӾQO(3n 6oQu%.jB|f?~<~-'N`}hgD,(Y|9I+qg) 1 0hA(%OÑ;4MlK+eBOʏ{JnO&lm* q׋GAztG!4|_Tp.~QЭ,6iɰȥphH .ԟ!i!h`pY<:HHh f.,p@>x%X$_pL>}&55VX >S(1+[ީ!yKo焘X{ؑq=Y ؀=0Ab L"Rjۦb獨C1C٧*wlO. ,LZoQ1Z*.+f3NAvxˊj~4o޼ؾ%xcl "~6&~ }%wi5PoYmu;gJ4 jGδgQ{uLX;ߙaxg ]?X|y1M4 Plw?ʥ`Rld4<P3%U`,H|AD'"wq&9\\{|/!O/_b >DI \DAqA3`AAҐ  Aq  Aq  Aq  Aq  Aq  X4 Mʼ]8`A.vΙ3gRdp)xWMN8G}ln#..PIݕr/=`!(Z8/*i`ۇ~H&MZmۖEꫯR~}BCCի]ox㍄5\âE$#H|||aH%v8o1ͥJNNNTP9;ƛoILL *?҅n';;'Np1V\I޽ҥ -Zꫯ]K'O[tRlقbvt:l䐓Cnn.N]/wO%. ƹs`޽hтFqmqSFOOt'va IDATN`ʔ)̟?0(J%88?VZUWd[A%NOO'&&6laaaJyO_͖-[3~+^GӧOgRw+Pw?C^{50 *l6v{v\θE{r &&MFF(⡇ү/<<;p"##7hРXE[k׮O}ݥݻ7~)K\233$==˗Ɂ nݺ,YA+.]l/Oll,X,Fc1n rsžrJ)l6YYYdggsiCvv6t`[nK^n'''G3^ )'55d֊^f }~̝;:Ɗ+Yzdp:رAVVwfl۶ǏӳgO"""ر#:t ""UlhJfp8V[rMpp0uKKf͚s=NjU3ߛT?{sߝ3 /xs/o> ^xa(..6deeNioZ ;!I|2u:;;s!yQʺhͲ͈F)56Tjm:'OȮznxZ[[ӎ&E"Cql{{x _-%/N9}8FmmI2&v>GGGp8oddDv2"FGGYԦemVccc8>>Ʒop=M!%%%; X{yy9ڧ!I$I <np"}DZp8@ /_9?^ďu:XXX$I@}}=뛘P>;O?<9G7a~_6OƟ3q _:::2lB뫨˗imβ* W͛7Yۇc_=xnnWB־X,dp8,{gY_uux0O(e}NΓLܼ [ f9?Li6lZ, WԦbam{{{1P rs={nXPVVV'X,(((hLh^ďU:Uǃp~?<9G7>'* 9` ˅к idST+!q)vz5733lnnYd/&&&R|`H;;;+rTǃCXJ|KEy#aᇰ$BsҽTSS5$9DQ<|PhllT,5y-Ag%z{{S(5])-c>pă+M/(ONNPSS#qX\xp8`2`sHj)ܽ{tqLNNʎBccct6Ԅ"L&XV444`~~^g%?~ӧOvŻwdK~JqD"xnܸ+Wfahhx\d/|>ZZZ`a6a4QXX: `uuUu< iױ^,5$ }}}l0L())A,ص| o~&4@ Ч( @ &@L _;a/@ 0@ $@ u}h-P,IENDB`aioimaplib-2.0.1/poetry.lock000066400000000000000000001262611474216043600160330ustar00rootroot00000000000000# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "anyio" version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] name = "certifi" version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] name = "cffi" version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] pycparser = "*" [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" files = [ {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, ] [package.dependencies] tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} [package.extras] toml = ["tomli"] [[package]] name = "cryptography" version = "43.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, ] [package.dependencies] cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.9" files = [ {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, ] [[package]] name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] test = ["pytest (>=6)"] [[package]] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, ] [[package]] name = "httpcore" version = "1.0.7" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, ] [package.dependencies] certifi = "*" h11 = ">=0.13,<0.15" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] anyio = "*" certifi = "*" httpcore = "==1.*" idna = "*" [package.extras] brotli = ["brotli", "brotlicffi"] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "httpx-oauth" version = "0.16.1" description = "Async OAuth client using HTTPX" optional = false python-versions = ">=3.9" files = [ {file = "httpx_oauth-0.16.1-py3-none-any.whl", hash = "sha256:2fcad82f80f28d0473a0fc4b4eda223dc952050af7e3a8c8781342d850f09fb5"}, {file = "httpx_oauth-0.16.1.tar.gz", hash = "sha256:7402f061f860abc092ea4f5c90acfc576a40bbb79633c1d2920f1ca282c296ee"}, ] [package.dependencies] httpx = ">=0.18" [[package]] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "imaplib2" version = "3.6" description = "A threaded Python IMAP4 client." optional = false python-versions = ">=3.6" files = [ {file = "imaplib2-3.6-py3-none-any.whl", hash = "sha256:8d51b9bf6b7be99ea3caf4503bb15c7299f626b8d2bb6139e6055cf2613aac6a"}, {file = "imaplib2-3.6.tar.gz", hash = "sha256:96cb485b31868a242cb98d5c5dc67b39b22a6359f30316de536060488e581e5b"}, ] [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] [[package]] name = "packaging" version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] [[package]] name = "pycparser" version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pyopenssl" version = "24.3.0" description = "Python wrapper module around the OpenSSL library" optional = false python-versions = ">=3.7" files = [ {file = "pyOpenSSL-24.3.0-py3-none-any.whl", hash = "sha256:e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a"}, {file = "pyopenssl-24.3.0.tar.gz", hash = "sha256:49f7a019577d834746bc55c5fce6ecbcec0f2b4ec5ce1cf43a9a173b8138bb36"}, ] [package.dependencies] cryptography = ">=41.0.5,<45" [package.extras] docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx_rtd_theme"] test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] [[package]] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=1.5,<2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-asyncio" version = "0.25.2" description = "Pytest support for asyncio" optional = false python-versions = ">=3.9" files = [ {file = "pytest_asyncio-0.25.2-py3-none-any.whl", hash = "sha256:0d0bb693f7b99da304a0634afc0a4b19e49d5e0de2d670f38dc4bfa5727c5075"}, {file = "pytest_asyncio-0.25.2.tar.gz", hash = "sha256:3f8ef9a98f45948ea91a0ed3dc4268b5326c0e7bce73892acc654df4262ad45f"}, ] [package.dependencies] pytest = ">=8.2,<9" [package.extras] docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] [[package]] name = "pytest-cov" version = "6.0.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.9" files = [ {file = "pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"}, {file = "pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35"}, ] [package.dependencies] coverage = {version = ">=7.5", extras = ["toml"]} pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-rerunfailures" version = "15.0" description = "pytest plugin to re-run tests to eliminate flaky failures" optional = false python-versions = ">=3.9" files = [ {file = "pytest-rerunfailures-15.0.tar.gz", hash = "sha256:2d9ac7baf59f4c13ac730b47f6fa80e755d1ba0581da45ce30b72fb3542b4474"}, {file = "pytest_rerunfailures-15.0-py3-none-any.whl", hash = "sha256:dd150c4795c229ef44320adc9a0c0532c51b78bb7a6843a8c53556b9a611df1a"}, ] [package.dependencies] packaging = ">=17.1" pytest = ">=7.4,<8.2.2 || >8.2.2" [[package]] name = "pytz" version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] name = "sniffio" version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "tzdata" version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] name = "tzlocal" version = "5.2" description = "tzinfo object for the local timezone" optional = false python-versions = ">=3.8" files = [ {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, ] [package.dependencies] tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [metadata] lock-version = "2.0" python-versions = "^3.9" content-hash = "8ea1e3e661252aa6e2075509715bfe8cb312ebe22836cc47700f1837b6b24fe3" aioimaplib-2.0.1/pyproject.toml000066400000000000000000000023401474216043600165420ustar00rootroot00000000000000[tool.poetry] name = "aioimaplib" version = "2.0.1" description = "Python asyncio IMAP4rev1 client library" authors = ["Bruno THOMAS "] license = "GPL-3.0" readme = "README.rst" repository = "https://github.com/bamthomas/aioimaplib" keywords = ["asyncio", "mail", "imap"] classifiers = [ "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Communications :: Email :: Post-Office :: IMAP", "Topic :: Internet" ] packages = [{include = "aioimaplib"}] [tool.poetry.dependencies] python = "^3.9" [tool.poetry.group.dev.dependencies] pytest = "^8.3" pytest-asyncio = "^0.25" pytest-rerunfailures = "^15.0" pytz = "^2024" tzlocal = "^5.2" imaplib2 = "3.6" docutils = "^0.21" pyOpenSSL = "^24.3" httpx-oauth = "^0.16" pytest-cov = "^6.0.0" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] imap-testing-server = "aioimaplib.imap_testing_server:main" aioimaplib-2.0.1/release.sh000077500000000000000000000000731474216043600156060ustar00rootroot00000000000000#!/bin/bash # -*- coding: UTF8 -*- poetry publish --build aioimaplib-2.0.1/tests/000077500000000000000000000000001474216043600147715ustar00rootroot00000000000000aioimaplib-2.0.1/tests/__init__.py000066400000000000000000000000001474216043600170700ustar00rootroot00000000000000aioimaplib-2.0.1/tests/data/000077500000000000000000000000001474216043600157025ustar00rootroot00000000000000aioimaplib-2.0.1/tests/data/test_attachment.eml000066400000000000000000014753311474216043600216060ustar00rootroot00000000000000Return-Path: Delivered-To: Received: from mail by imapserver (Dovecot) with LMTP id aCqPI9SHe1eZHAAAAmT2aQ for ; Tue, 05 Jul 2016 12:11:32 +0200 Received: from localhost (localhost [127.0.0.1]) by mail (Postfix) with ESMTP id 27335AA0657 for ; Tue, 5 Jul 2016 12:11:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mail; s=smtp; t=1467713492; bh=4Q5L7m3BDUFSe2oGhvDiuApYja3OD2Ih0mSBFMluKfs=; h=To:From:Subject:Date:From; b=KGzE7niJYozJNr99qEwSPIcP0bXrNjdJK32aAvO8BUuSpnbwpJvpeTKQgPsc0wZCC 6ZNTILv4XuYd52KtOCgQKP6bdQV7AJI5Nw4bW/CUK6Z01ndBDFQleFhBNwoAYajxwa JFtDje2jYQSwlzN3621P1qCkW42lvggc/C9wlYoA= X-Virus-Scanned: Debian amavisd-new at smtp.mail Received: from mail ([127.0.0.1]) by localhost (mail [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8yqSS8AkSA5c for ; Tue, 5 Jul 2016 12:11:30 +0200 (CEST) Received: from [192.168.1.3] (Authenticated sender: user) by mail (Postfix) with ESMTPSA id 1E1FDAA04F4 for ; Tue, 5 Jul 2016 12:11:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mail; s=smtp; t=1467713490; bh=4Q5L7m3BDUFSe2oGhvDiuApYja3OD2Ih0mSBFMluKfs=; h=To:From:Subject:Date:From; b=N3QhAuG/lpGF/bWXZx+vmL8cPxO8BwnXFxMKNidepcJaZBBbHaE8p94mwDYiNd7+M gJ+hFRDR//I67CuXXH2NyXn6dmqjQRIQp173lmXySyFQPntlBaVGzuQcteeL/OoH/Z aqTbX0pZ8RxNbqbozoxdMmyKNYq5GFxh5mEa4Pi0= To: user From: user Subject: =?UTF-8?Q?test_de_pi=c3=a8ce_jointe?= Message-ID: <577B87D1.200@mail> Date: Tue, 5 Jul 2016 12:11:29 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040303030503060001010402" This is a multi-part message in MIME format. --------------040303030503060001010402 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit yo Elle est où ma pièce jointe ? --------------040303030503060001010402 Content-Type: image/png; name="wireshark_websocket.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="wireshark_websocket.png" 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 Y20u2YzIHpsYNeYx2kQBNYby+fS2FHf18HkF4J+0k/ljF3I62QYeJanZ/AUm9G9GcTOQdIgN O5OxsYrRkauuViz6INOWDqa2t1PBpVz7piTNjaRbTBrF6oQz8rXWBF4TP5N/PTo18Ob76DBa hfw9Nfuv8XE4PmY8vc6x/cNhzI5Lxmb2p2qz53mjVzUlgEVERERERERERERERMSlvH0KQZYV 3D2den9qasqVK4BNX635wt6idXtFMd/L4MDUCCKjI1k2oQn+JkUEgKw4Pu/zGAvv/ICFfavi qYiIiIiIiIiIiIiIiIhIARd38jhH/jiMX7GSmExmTCYTZrMZs/nv39uzMjl14iihNeuwa8f2 vLsFtDhiJ/n3Naz67jAJKWmcP7ieeWsucke72hRR8hewkX4xgZhvZjP3QDk6tKuo5K+IiIiI iIiIiIiIiIjcFnwLFyGgWHFSLv7Jje4EnZWZSXzcCcqUK4+b26Xb6LorfPmXLTmalWPHMzYh HbzKcu8jUbzavISy9gDWY3zyXHc+PFaCe559k4creCgmIiIiIiIiIiIiIiIictsoU648nDjG ubPxFPEPwOTpBdmZQltWJmkpafx5LoHA0mUJKHb1AbG6BbSIiIiIiIiIiIiIiIiISD5y8cKf V75PTrrI2TOnSUtNISMjAwBPT0+8fQpRplx5PD2v3id3x/YtmH758Qe72axrSkVERERERERE RERERERECjKbzYbpwp/n7QqFiIiIiIiIiIiIiIiIiEjBp0t/RURERERERERERERERERuE0oA i4iIiIiIiIiIiIiIiIjcJpQAFhERERERERERERERERG5TSgBLCIiIiIiIiIiIiIiIiJym1AC WERERERERERERERERETkNuF++GA0drtdkRARERERERERERERERERKcBMJhPuZ8+cpkXr9oqG iIiIiIiIiIiIiIiIiEgBtmHtKt0CWkRERERERERERERERETkdqEEsIjcYnbSDi1haHgzLBYL ltZR/JRaALqdFcenvZrRfeExMjWIIiIiIiIiIiIiIiKST7n/7RXrKTZOGc37n+8hwV6MWh36 MaJ/C8p63KJyo27UftZZvl84jbmrtrHvVDI2n3Lc3eFZBj3TlLKeOTxORiwL+/ZkenQI/ZfM omsZt9xt3yXsJO9dyLsz1rPr1z9IzKpE38WzeTTI3clyg/HPjfG/Qf2sU0vpHT6Jw3+b5ffw 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 g0xbOpja3gYPb7B9k39DXnqlFSPGR9BqYmECghrwcEQddi+55gyDujB2op2JE6fTPyKRTM+S 3PFgP8KcvFIzPXoGkf3Wk5T987Jhz7KMYJ5ZOIceFTwclhuKv+Hxd6K+/U9+WvotF0P7ElbG /T81fxwy+VI3cjJjfMYz/Y3ezEoGz4AQ6rfseelKX8PHd/X6dmL+Gxh/Z9YfeFCufVOS5kbS LSaNYnXCGflaawLdcmF+eVah1/jhpI37kNFPLSIdT0rWacOw8c9Q3Ts31odrx8fk4Y352Fqm rP6IZDuY/StjeeY9BoZXyKX17fr5lRuOfPQij38EYMYv+F4e/d8AugXn64e231b9N8ZO+g/j ef6Ha18rzWOzF9Knqh4ELCIiIiIiIiIiIgWH6as1X9hbtG6vSIiIiIiIiIiIiIiIiIiIFGAb 1q7CrDCIiIiIiIiIiIiIiIiIiNwelAAWEREREREREREREREREblNKAEsIiIiIiIiIiIiIiIi InKbUAJYREREREREREREREREROQ2oQSwiIiIiIiIiIiIiIiIiMhtQglgkf+sLOKWP0mzHos4 nqloiGh9ioiIiIiIiIiIiMjt4O8JYOspNk7oS6cmFixhHXlu/AZOWp0tt5O8dwGj+/ekYxML FktPFv/1k2tH7RtlqP8O2BLYOvEFIto3xWKxYGnRleffXcuRNPvf35sRy8KnGmOxPMHSU1m5 13+j7KnEfPkOkV1aYLFYaPpgb97Zmogtt/rvqL7R83Pl+OaH/js7Pq5i5PgO10cy214Mu1R2 5asVI39MzSfboaP9y4n9La/nr9H9+XaP/61idP/81zWWzKE1ExgQ0ZYmFgtNOz7L2C9j+adf QS6pb0h+X/8iIiIiIiIiIiIit4+/JICtHPl4KFGrTXR6aw5z3wnHe/1oXlkYg9WpcjuZqekU qt6KJ3o3xPdvh3NU3yij/XfAbsNU7E46vziGiVOnMWFwC1jzP16c9htp170xg9hl41hpr4Bn rvbfKBuJm8fQb+x3BHQcyoSpU3lncBdqF3X7y/tutv+O6hs9PxePb57339nxcRWDx3dqfbhR OGwoU2fOZObMmcycNY3nanjlk+3Q0f7lqDyv56/R/fl2j/+tYnT//DdpHJw/gBcXXMQyeDar N33N8jeaEDd1MNN/S70F9XNDfl7/IiIiIiIiIiIiIreP6xPAGbGsXnGYUl1fIqJhFUIahPPS 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 RjzGkRHD6LIKoBSWR1tS+kg0JlM+SEA43b+bG1/rmf0cSU1gR9+WrLyupCgVLmSBvw07UKbb yzxuKY87NXjmhe2sG7iKH8+1o22JG2cgrEeWM2aJNz2nN6ekGdJyPP655x/H35bIlrcHMz/1 QYZPaUMIMXw54W2GvBnE7FEtKOnoGcD2FI7uT8Sv9p2U8riZ879V8+Mm4+Pq9e12aUsOrF4O n+zuepauTik2E5NghVIOLnF0MH4BRvc/V7efi/tvQf11XLpxR6p8sJgNR3vydOAeVu12o+Eb tShcUE7B5EvdZ16jdffnWWprx7vvNMilxKwHgXdUx3vlz5xICWH3ii9ZkxVIeJv7+eWoO1W6 ltYzoEVERERERERERESucV0C2OxbgiIkczbVj/uHzOZ+IPXnTSRRmBK+bpjNNy6/zJb0KzMH jmTHncOZ3rv2led8OmrfqNzq/822f5WVo+s+43DJBxhWxdv5E0j5mfeHTGZ/85HMfLsRwf6e pGx9kQ7j7M6VO+3f+memaIM+TFv9JOfPXsDuVwLPvVE8vCyAUoXzw+VVN+6fOdPg/LLbwa0q L308k86l/36+toTi+OJOkUrFriwcz2LlKUo0p5OywEECOC12G/sTf2F/eFPGX/P6pPAWbBq2 lMlhR3NpfG9u/G0J21mwMZMmk57mgTu8gSo88+JPrH9+Id+ebkqXMsbWqMPzb1PC4JWCuTV/ Ha1fF63vf2Vy6va/jsavs8H919Xt597+W3C5BTaiY+gU5q6P5eG6X7Db437equGbN52x2wFT jtdk5pnf+P08YPud3+IzaFAkd+7N7FXhbsolfcqBI1XZ7dWBTuaf+OVoafaeL0ubSj6IiIiI iIiIiIiIyFXXfbZrLhxCncA0Dv50Kvs5e1ZO//o7ycVrU7mI2WE5gD31AIsGD2Z12ReZ9LKF 4m7Ot2/4ZHKh/0bavyLtECtXn6B8uzZOPzsVIDNhP/tSQni4W2Mq+Xtixsrp6DisdufKneao f2ZvigYGEuCVxJ7VP5Aa/H9UKZSPLrX7l/4ZHV+PwJoEux9nR/QFbP84/hWpUcLGmaPnycx+ zXr+BH9SxKkElO89w1kwfz7zs79mDm9CYYLoPn4WIxoHYMut8b3J8belJ5Fu4/pko9mM2Z5O UoYTlyCbClGhRjEu7P2ZeGvOz9/s4vmRa+vDRes7+12ciT5BavZrGXG/E08gVUo6vr7R0fgZ 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 h2aj9gvmy82af6lpzJSnbslj2TR7btAuZUnSOCH3nXlyrpuyTU77w/W59MB2GXrbO81/jGdp Zl649Kj8/KEu+dbZV+fG6y7OwSs9nDN/fH3eqvv08meMeix3Pjo5nddfJ50rNTaA/35lqagq T2NtQ0TAAAAAAACsiBYMgGdMyAepSZdWE3PPCUOy6w/vyoQWXdIm0zN+RkOT05PavHXzmbm1 /Xdz5OBOn3rBcNPzL0WNE/PoTU+nxeCvZmCbubchN055On99ujLbHHVQtlytV1bf5ns5YvPm P5i5NO2pXH1nbXY66bjsMWjVrNx73exy2PcyYMw9+df8Fxk3ZOyfv5PBg7+cnfb5aR5e44Rc 9IOBaaWtARRAVXqs3T0znr0vz74/J40qBAAAAACAFcxC7kutSk3nbumetqkqa/70urdvzZk3 tcwBl2+bruXJ7IUutqnyl1z9u0Nzy8vts+0P1syHr/+tn/hG3m/snq1Wnhf6lrVKz7W7p3JU 88qsGz88b8+amMcP3z5/W2BKh/SZ9uHbICvSZbvT8seB0zJ55IO5+qLzc+p1q+c3B67hHcAA //Wq0mu3o7LbncfmxK//NTXbXpjbTh3kSz4AAAAAAKwwFgiAy2u6pG1mZMKsdtnixN9niySz nhua6WmTLjUVKS9f9PTZLz2S4ZOez/BvbJ1zP1buRd/YLkNPujkXbbLo+Zeeurxzz215o+sO Oan/grFrWVl5Kss+Sp3LKyvS7Ay6VEoqVs+xN/wue/YoX3iltuuZfu16JqsPyKp5IXued21e +ubPs6GEAOC/XF1G/fXC/HXObjnr5iPzpR4tU65SAAAAAABYgSwwbl3epl8Gdpud1559b957 cesy7oVXMqPzulmtbXmT02s2/mn+dM01uWbev9/9dKu0Sa/sd+6VOWXLjqlsYv6lZvbr+dud Y9J7152zSvVHv67s3D/dyiflzUkfPq65PhNHTmz2O4Cruq2dvpWj8/ir05r92M9SY2NKIPiH pwAAIABJREFUdTNT6zmhAAVQl/eHj0ubDbbPhp8Z/tZn+vixGTt+eupVFgAAAAAAy8GCY9fV q2TX3VfL2JsvyPVPjMzIp27OhdeOTt/dhmS1Fk1PL2/VPX1XWSWrzPvXd+V2qSprkU69+6ZH TUXT5S8lM17+c+6b2C+7bdcrVR/f2A6Dsseg2Xngugcztq6U2tH35uqhU5tdblm7DbP/kHZ5 9Jen5eqHR2T0mJEZ9uBNOe9nl+XF2UnDuPtz/llX5C9DH8/zLw3L43ddkdMufDHVX9wxa7j7 F6AASmmoa0x59UKeHlE3KjcdtVf2OuK6vF2ntgAAAAAA+M/7xDuAq9J377NyyoTTctHx385v Sx2y9u4/yS/37TcvSG1qelOWdP5mKE3Nszf/Kx8MODxfXukTm1feJdue9PO8cerZ2X/nc9Oy 6zr58pY9UjmimWWX1WT9I36TM1udm8vP+E6unJFUd+yXDbc/IJ0rkrIWHdN++hO55uxrM25G Y1LVNWtve3QuOGqbdPaMUIBCaGxoTFlZmYoAAAAAAGCFVHbvXbeXtttpiJoAgEUqpW7S07nk ez/MU3tck6v277P0vrwEAAAAAABLwX133/HJO4ABgE+bnWFn75XD75ieTmvtluN26in8BQAA AABghSQABoAmtczAE2/PQyeqCQAAAAAAVmzeTAsAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAA AAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAA CkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUh AAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAAD AAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAA AAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAA AAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACA ghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEI gAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAA AAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAA AAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAA AEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACg IATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBAC YAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAA AAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAA AAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAA AFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAo CAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQA GAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwA AAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAA AAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAA ABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAK QgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEA BgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMA AAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAA AAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAA AAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICC EAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiA AQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAA AAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAA AACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAA QEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAg BMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJg AAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAA AAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAA AACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAA UBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgI ATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAY AAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAA AAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAA AAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAA FIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApC AAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAG AAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAA AAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAA AAAKQgAMAAAAAAAAUBACYAAAAAAAAICCKHv+mSdL5eVyYAAAAAAAAID/Zo2NjSmbNnVKSVUA AAAAAAAA/Pdz6y8AAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMA AAAAAAAUhAAYAAAAAAAAoCAql0WhkyZPzGtvjMjMWbOSlFIqlVIqJUkp5eXl6dypS3r17J1O HTolSRpvuy2NV/0hqalJxY9OTNn669szAAAAAAAAAIupbNrUKaVP/nL69Ok57zeX5v5HHsv7 E8anrKws3Tp3ybabb5bjfnB42rRps8hCH3n8oWyy0Wbp0L5T9rqqfeoa5iRJbjpoStJYnsmT J+WZZ59M75598sGjj2XGww+nZ89eWam+IWXPP5+KW2+xZwAAAAAAAAAW06ceAX3/A0OzxS5f ydg+a2X3sy7KWX++O2ffdnd2P+uijOk9IIN3/Uruf2DoIgudNm1aOrTvlOkzpi/w+/feH53x E8dm2rRp2WmHIRl+340ZVjcr9d/aO/d1bJs3K8rTOGvW8q2R+gl57OoLcul976X+P7LAxnzw yj9y6+3PZGL98tzwFWU9PmvVpuXlu67NDY+OW7r7pGFSHrvy7Jx/55jU6QvQblZM//E++ZP7 e0qev+O6/PnZKWlYHssvzc7Iu67PPSOmp3FF31elORn90M3587BpK/66Lvd+ZBm3qxWp3WgX AAC4drWtAMB/3AIB8P0PDM0JF1ySAy6/JoO32io9OnXIrFIp0xsa06NTh3x5622y36XX5IQL LllkCFxXV5+9rmqf/a7vMv/u3yQ5+u/r5og71sjoUWPy+I3n5u26mpQqylJR1SKTZ87J2MmT UvHtb/9na6D29fzxuINy5O+GZ1aSNE7La08+leHj5iz5QOWcl3LRwfvl2FtGZcqTZ2SffU/O vRM/UWrjlDx9w7W5fUTSonx23h/+TJ4fNTOl/3RL+Ph6VCxB/S0LDVPz4j135aHXl/JAduOM jBo2LK9PnPOfr2/+ey1puyktx+N8efSpS1zfS7FP/lz9z7g8eeff88hbM5bL/przxq258E+P 5K3ZSdmKvu/Lkrr3nsitl1ybF6brVZdnu1qh2o12AQBAAZRmvpG7Lv5xDtlvv+yz73455qZR mfnOLfnRQT/Ixc9+kNLyvnZt5nofeuFTmbakp+Wf3Naij3MAwH+p+e8Anj59eo756c+yw4W/ T1VN60yo++x726rbtM5uZ/w6xxx2QB7beKPPfBx0Xd2i74tr9dJ1af/2/Tl61yF5/p26PPD0 1HTq0CYtO62T8m9+Y+luYeOk3H/KUbnyzU9P6ve93+T0zVuly8orZ+WurVOx1Ku3IlWVSWWL ylRUVqY8VWlRvuBQbOPk5/LAG5UZeOwaqal7M38477y8vduvclbv1svmBc0Lq6aPr8fijBaX Lcv6g89zdTM1j517Qi5+dsZH/Va7nllj0Jfzla/tkIGdKpfv+tW+mZuX2XFenwkPX5afXPZ4 2u79q5z1lZU+UX5T0xenXsvSolOvrL7eptlu152y0cot5gZN/8t9QsPUvHjX9bn1/qfy6rjZ SXXnrLH5V3Pw/l9OnxbzOtb6SXn6lity9T0vZnxti6y0wZAcdMjuWbdd+WeUNyEPXXtvpq3/ /Xxj3TYfC/LqM+21h3P7nf/Mky+/lUmd9shZZ+yRnpVJaebI3Penq/OXR17P5PrKdOi3afY4 6IBs36/1p4PAUl3ef+qv+dOfH8hz70xLQ2WHrLrxkBx44I5ZvaYsKc3JO/f/Nhff+HjG1HfK ujsfkiO/vk7aliepG5O/nHJy7l/rpPxq/zXSsixJWmSVIQdmy6G/zDX/2C3r7NkzVUvtOF5I e/tfsaTtZnHmb+rvl2e7AACA5TIOUJs3bjo/17zQJ18/cv+s27EyVV17pKq2U1ZaeaV0q6lc xtvzea+HPrHeHZLa6l6LN+633Mc5AIDPa/5n8gWXXpbWu30zLdu1y5T6z/6uWl1jKY0ppUVN m3Tda/9ccOll+ckJx3/67xYRAG89qjEd5wzNakOGpH7KmPQqa5ny8l5ZuSbZaO+Dl92W9vxq fnjQOmk9/xflab1ym5RVdciu//eL7Loslllek8411RnXpSbVNZ3TpuUH6dDq42dZDZn07D/z RtW6+b8BNctxMHsJ1qOq57KrP/hcF0oNmTllRtJzj/zwoIFp3TAzU959Of+87bqc9ew7OeHs 7+cLbYsYHTVm6rN/yOlXDlvIo6mbmr449bpOWtbNyuR3R+SpB/6SC44fmsFHnZLvbdIplf/L fUJ5RUqzqjNgl+9l9x7Vmf76P3PDLb/Lr2tWza+/1TfVqc07fzsn594+K5vtc2QO7PRu7v3j rTnn/Nb51ck7pvsnrpLr3v1X7hxRky1OGZSOH+Z0pTl5685zc+atE7P6tttnr8O+mR5dV0rX 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 9dn4G4flW/3bpm7y1NR0rUxS3sQ6N6P8xpkZ/eKITO61V44a0i+t5rybp267/qN6aV2b1286 I2fdMSeD9jwkew3okMZxj+YPVz6SVybVJX3/tx7CWd6idSrTkDl1jSmliTazyH2XRbebJtr6 BlWffZzXjbp1ocdA46L6mSSpfSe3X3RLZux4cvb/QmNuvGYxpy+Jqu7Z4lu75G8/ui13PTkh m2/zic+DUYs4thejn/rIovZd2/TbdLVUPPVchk/ZM326ViSNH+T1YeNTtdq+6VU9M8P/sIh9 UzMjL/z+jFz6cOtsvvcPskXvykwYPjS3vp2PPbK2iX0xv2Odmfee/0fuHd0i6+7fP63LkroJ r+S1GdXpv2HvzI3mylLTf+OsUvZEXnltShr6df3osdmlmXnnxbEp6/W1zM95G6fmyVuHZkJj j/zjF4flj1NKadtng+y8/7czZK12Ka/okL6dkyefej7vb98jPavrM/nVEZnaun/W6fpZ3w0v S0XVxx7U3TArE6bWp7Jbr7SvTCo69Ey7mQ/npffmpH/b1/LSpBZZqWt53rnj6vy7ZpectmW3 z/zGeWXXtdKv9Z8z4rUpaejfbek+CvxT7W3OQj5zZmfEDafnnLuSzfY5Kgf0Sd7+1/W57pwz Mufnv8g+/Zv5Odmsvr6JY34J29WStpvFmr8Zf1+23grYLgAAoKlxgIWOVzXj2mGeNpsdlhN3 75OqJNXtu6Vi1jIaT2zu9dAObTJiUdciLRay3k2NiXzO+v7UeCYAsFzNH6MrK0vatFy8QKhs IWcEHz4CumOndrl4l5dTP/K+NNbfnl4bDkrtmKfmhb8Pp+X2/5fWG38rsx8+e9lv6YhLcti3 L/no50475hfn7p9VmzirKU17Lrf+c2rW/t6p+eaXOqYsyarfnZwnj70xQ0fOzgbrbZLjrtjk c6xQfSY89a+83Wr97LN66wWmtOi4Unr3/ti7Oec9r7V1r4H5wrr9Up010uX9R/P8X1bO5ttu loEtk/SvzLCHz87wlyakfkDP+fO27jUwg74w987mL3xh1ZQdf2r+fuuL2eWHg+bdDf3p9WjT f+P0yXV56s2Z2bpTq0x9ZVgmlVWk8c1nMqZ2g6yR9/L0a7PTY+u106H8sx8XXtNn/Wy43kd3 VJemPrHIely7amKmpyYbrLNu1li1VcpW/fTXCWtW3Sibbji3zAGdx+bpnzyUx0bVZv01W6R1 nw2ycZ+5f9e/b9uMfuhHuX/YuNRt1G7+OnxyneY/B7dufB6+/Or8aewmOfq0b2atxXgZyqLq t+aD53Lz3WOz8tfPzhG7f/qdh81Z50Xuvw//pvfADFq/X6ozMGt1HZ/nfvJwHhtVm/VWfj63 3DM2Xb9yRo762iqpTtI4aUJuyyP/G71bqS61dXWZUz89k0a9lPuvuzvjy/pnl9Vapyxli6z/ qkXtuybaTZN9xoDPPs7nzFj4MVDeYVH9TG3e+fvluaO0S07dbZW0yMjFnL7kqroOSN8WyUsj J6V+mwW/4ds4o+ljuznt/GOfPIvcd20GbJHVyn+bR16cmu237pTy2W/n2dFl6XNAv7RsYt98 ofdz+cvD09J775/m+0Pm7Zu12uXNfz2f4c3aF0lSytRHzsgRl76axiTtNjo0x2zZNZVJ5nww PjPSJl3afhSPlVV3SJfWycvjp6chHwviGj7Iu5NLabNmp48epTvn7Tz5RkParb959tx+7azU 4oO8fMeV+dMvL0yrX5+U7buulB0O2ycvnXlNTvjhk9lsQGOGPTMnOx53cDZo8nFndRlz329z w+i++erpG6dDWZIeW+fAnZ7Kr07+Tm5NWbptcWgObP/vXHLP7Hzp8LUy/IpTct5LU9JmzR1y 4Hd3zRof9p0V7dKzffLimClpyNIP+j6rvX3qM2faU7n13nFZ6etn59Bd5x7DA9dcKXPe/HH+ duvzGXLCxmm3OP3sovr6ZdyuGpew3SzW/M34+xW1XQAAwKLHAaYu8bVDVbuV0rt37/nz1s/6 z48nfvx6qG7a64texlqfvd7NHZNaXJ8azwQAlqv5n8ndu3RN5ewZadmhY7NmnD1lcrp36fqZ 0+rqP0xIypKypHrai2mz5X6pXGv3TB19TN57/JbM+dKhmdNrcNrPmJ7a2tplv6VTSJw8AAAR 50lEQVR99sqPv7NOPvz+WXmLTulZlaR+0bPVjR+Rd+vrM+WyI7PvZZ+ovElzUkqrz/fNuPrx eeLBUWm9/r5ZrfXi77Z2PdoktVMzrbaUtCxLKtqlW5tkxLRZaVzomVjvfHHtNrnrpVcyoW5Q 2lR/9nqUd1g3m/Wqzd+eHJ3aQT0y4snx6bPHnqn++4N5bmxd+lUOy7DJnbPhhl1TmfebtcZN 1WP1l3bN7ms9letPPy6vb759dtppu2zSr91CTxqrOvZJx8zMpJkNSery/uO35OrbHs0r703O 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 qQ4AAAAASUVORK5CYII= --------------040303030503060001010402-- aioimaplib-2.0.1/tests/server_fixture.py000066400000000000000000000114241474216043600204210ustar00rootroot00000000000000import asyncio import functools import imaplib import ssl from email.charset import add_charset, SHORTEST from ssl import SSLContext from typing import Optional import pytest from aioimaplib import aioimaplib from aioimaplib.imap_testing_server import MockImapServer from tests.ssl_cert import create_temp_self_signed_cert async def main_test(server: MockImapServer, ssl_context: Optional[SSLContext]): srv = await server.run_server(host='127.0.0.1', port=12345, fetch_chunk_size=64, ssl_context=ssl_context) async with srv: try: await srv.serve_forever() except Exception: srv.shutdown() @pytest.fixture() def with_ssl(): _cert_file, _cert_key = create_temp_self_signed_cert() ssl_context_server = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) ssl_context_server.load_cert_chain(_cert_file, _cert_key) return ssl_context_server, _cert_file @pytest.fixture def advance_time(event_loop, request): return EventLoopClockAdvancer(event_loop) @pytest.fixture() def with_server(event_loop, request): capabilities = request.param if hasattr(request, 'param') else None # imapserver = create_server(capabilities, event_loop) main_server_future = asyncio.ensure_future(main_test(server=imapserver, ssl_context=None)) event_loop.run_until_complete(asyncio.sleep(0.01)) try: yield imapserver finally: imapserver.reset() main_server_future.cancel() def create_server(capabilities, event_loop): add_charset('utf-8', SHORTEST, None, 'utf-8') add_charset('cp1252', SHORTEST, None, 'cp1252') if capabilities is not None: imapserver = MockImapServer(loop=event_loop, capabilities=capabilities) else: imapserver = MockImapServer(loop=event_loop) return imapserver @pytest.fixture() def with_ssl_server(event_loop, with_ssl): add_charset('utf-8', SHORTEST, None, 'utf-8') add_charset('cp1252', SHORTEST, None, 'cp1252') imapserver = MockImapServer(loop=event_loop) cancel_handle = asyncio.ensure_future(main_test(server=imapserver, ssl_context=with_ssl[0])) event_loop.run_until_complete(asyncio.sleep(0.01)) try: yield imapserver finally: imapserver.reset() cancel_handle.cancel() async def login_user(login, password, select=False, lib=imaplib.IMAP4, loop=None): args = {'host': '127.0.0.1', 'port': 12345} if loop is None else {'host': '127.0.0.1', 'port': 12345, 'loop': loop} imap_client = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(lib, **args)), 1) await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.login, login, password)), 1) if select: await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select)), 1) return imap_client async def login_user_async(login, password, select=False, loop=None, timeout=1): test_loop = loop if loop is not None else asyncio.get_running_loop() imap_client = aioimaplib.IMAP4(host='127.0.0.1', port=12345, loop=test_loop, timeout=timeout) await imap_client.wait_hello_from_server() await imap_client.login(login, password) if select: await imap_client.select() return imap_client class EventLoopClockAdvancer: """ from https://github.com/pytest-dev/pytest-asyncio/pull/113 A helper object that when called will advance the event loop's time. If the call is awaited, the caller task will wait an iteration for the update to wake up any awaiting handlers. """ __slots__ = ("offset", "loop", "sleep_duration", "_base_time") def __init__(self, loop, sleep_duration=1e-6): self.offset = 0.0 self._base_time = loop.time self.loop = loop self.sleep_duration = sleep_duration # incorporate offset timing into the event loop self.loop.time = self.time def time(self): """ Return the time according to the event loop's clock. The time is adjusted by an offset. """ return self._base_time() + self.offset async def __call__(self, seconds): """ Advance time by a given offset in seconds. Returns an awaitable that will complete after all tasks scheduled for after advancement of time are proceeding. """ # sleep so that the loop does everything currently waiting await asyncio.sleep(self.sleep_duration) if seconds > 0: # advance the clock by the given offset self.offset += seconds # Once the clock is adjusted, new tasks may have just been # scheduled for running in the next pass through the event loop await asyncio.sleep(self.sleep_duration)aioimaplib-2.0.1/tests/ssl_cert.py000066400000000000000000000031641474216043600171650ustar00rootroot00000000000000import os import tempfile from OpenSSL import crypto def create_temp_self_signed_cert(): """ Create a self signed SSL certificate in temporary files for host '127.0.0.1' Returns a tuple containing the certificate file name and the key file name. It is the caller's responsibility to delete the files after use """ # create a key pair key = crypto.PKey() key.generate_key(crypto.TYPE_RSA, 2048) # create a self-signed cert cert = crypto.X509() cert.get_subject().C = "UK" cert.get_subject().ST = "London" cert.get_subject().L = "London" cert.get_subject().O = "aioimaplib" cert.get_subject().OU = "aioimaplib" cert.get_subject().CN = '127.0.0.1' ext = crypto.X509Extension(b'subjectAltName', False, b'IP:127.0.0.1') cert.add_extensions([ext]) cert.set_serial_number(1000) cert.gmtime_adj_notBefore(0) cert.gmtime_adj_notAfter(10 * 365 * 24 * 60 * 60) cert.set_issuer(cert.get_subject()) cert.set_pubkey(key) cert.sign(key, 'sha1') # Save certificate in temporary file (cert_file_fd, cert_file_name) = tempfile.mkstemp(suffix='.crt', prefix='cert') cert_file = os.fdopen(cert_file_fd, 'wb') cert_file.write( crypto.dump_certificate(crypto.FILETYPE_PEM, cert) ) cert_file.close() # Save key in temporary file (key_file_fd, key_file_name) = tempfile.mkstemp(suffix='.key', prefix='cert') key_file = os.fdopen(key_file_fd, 'wb') key_file.write( crypto.dump_privatekey(crypto.FILETYPE_PEM, key) ) key_file.close() # Return file names return (cert_file_name, key_file_name) aioimaplib-2.0.1/tests/test_acceptance_aioimaplib.py000066400000000000000000000027731474216043600226670ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import asyncio import email import os import pytest from aioimaplib.imap_testing_server import Mail from tests.server_fixture import with_server, login_user_async @pytest.mark.asyncio() async def test_file_with_attachment(with_server): with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/test_attachment.eml'), mode='br') as msg: imap_client = await login_user_async('user@mail', 'pass', select=True) mail = Mail(email.message_from_binary_file(msg)) with_server.receive(mail, imap_user='user@mail') result, data = await imap_client.fetch('1', '(RFC822)') assert 'OK' == result assert [b'1 FETCH (RFC822 {418898}', mail.as_bytes(), b')', b'FETCH completed.'] == data aioimaplib-2.0.1/tests/test_aioimaplib.py000066400000000000000000001010721474216043600205110ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import asyncio import logging import ssl import unittest from datetime import datetime, timedelta from unittest.mock import call, MagicMock import pytest from pytz import utc from aioimaplib import aioimaplib, extract_exists, STOP_WAIT_SERVER_PUSH, FetchCommand, IdleCommand from aioimaplib.aioimaplib import Commands, IMAP4ClientProtocol, Command, Abort from aioimaplib import imap_testing_server from aioimaplib.imap_testing_server import Mail from tests.server_fixture import with_ssl_server, with_ssl, with_server, login_user_async, create_server aioimaplib.log.setLevel(logging.WARNING) sh = logging.StreamHandler() sh.setLevel(logging.INFO) sh.setFormatter(logging.Formatter("%(asctime)s %(levelname)s [%(module)s:%(lineno)d] %(message)s")) aioimaplib.log.addHandler(sh) class TestAioimaplibUtils(unittest.TestCase): def setUp(self): self.imap_protocol = IMAP4ClientProtocol(None) self.imap_protocol._handle_line = MagicMock(return_value=None) aioimaplib.get_running_loop = asyncio.new_event_loop # monkey patch to avoid Exception "No running loop" def test_split_responses_no_data(self): self.imap_protocol.data_received(b'') self.imap_protocol._handle_line.assert_not_called() def test_split_responses_regular_lines(self): self.imap_protocol.data_received(b'* BYE Logging out\r\nCAPB2 OK LOGOUT completed\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* BYE Logging out', None), call(b'CAPB2 OK LOGOUT completed', None)]) def test_split_responses_with_message_data(self): cmd = Command('FETCH', 'TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* 1 FETCH (UID 1 RFC822 {26}\r\n...\r\n(mail content)\r\n...\r\n)\r\n' b'TAG OK FETCH completed.\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 1 FETCH (UID 1 RFC822 {26}', None)]) self.imap_protocol._handle_line.assert_has_calls([call(b')', cmd)]) self.imap_protocol._handle_line.assert_has_calls([call(b'TAG OK FETCH completed.', None)]) assert [b'...\r\n(mail content)\r\n...\r\n'] == cmd.response.lines def test_split_responses_with_two_messages_data(self): cmd = Command('FETCH', 'TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* 3 FETCH (UID 3 RFC822 {6}\r\nmail 1)\r\n' b'* 4 FETCH (UID 4 RFC822 {6}\r\nmail 2)\r\n' b'TAG OK FETCH completed.\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 3 FETCH (UID 3 RFC822 {6}', None), call(b')', cmd), call(b'* 4 FETCH (UID 4 RFC822 {6}', None), call(b')', cmd), call(b'TAG OK FETCH completed.', None)]) assert [b'mail 1', b'mail 2'] == cmd.response.lines def test_split_responses_with_flag_fetch_message_data(self): self.imap_protocol.data_received(b'* 1 FETCH (UID 10 FLAGS (FOO))\r\n' b'* 1 FETCH (UID 15 FLAGS (BAR))\r\n' b'TAG OK STORE completed.\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 1 FETCH (UID 10 FLAGS (FOO))', None), call(b'* 1 FETCH (UID 15 FLAGS (BAR))', None), call(b'TAG OK STORE completed.', None)]) def test_split_responses_with_message_data_expunge(self): self.imap_protocol.data_received(b'* 123 EXPUNGE\r\nTAG OK SELECT completed.\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 123 EXPUNGE', None), call(b'TAG OK SELECT completed.', None)]) def test_incomplete_line_with_literal_fetch(self): cmd = Command('FETCH', 'TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* 12 FETCH (BODY[HEADER] {4}\r\nyo\r\n)\r\n* 13 FETCH (BODY[') self.imap_protocol.data_received(b'HEADER] {5}\r\nyo2\r\n)\r\nTAG OK STORE completed.\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 12 FETCH (BODY[HEADER] {4}', None), call(b')', cmd)]) self.imap_protocol._handle_line.assert_has_calls([call(b'* 13 FETCH (BODY[HEADER] {5}', None), call(b')', cmd), call(b'TAG OK STORE completed.', None)]) assert [b'yo\r\n', b'yo2\r\n'] == cmd.response.lines def test_incomplete_lines_during_literal(self): cmd = Command('LIST', 'TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* LIST () "/" {11}\r\nfoo/') self.imap_protocol.data_received(b'bar/') self.imap_protocol.data_received(b'baz\r\n* LIST () "/" qux\r\nTAG OK LIST completed\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* LIST () "/" {11}', None)]) self.imap_protocol._handle_line.assert_has_calls([call(b'* LIST () "/" qux', None), call(b'TAG OK LIST completed', None)]) assert [b'foo/bar/baz'] == cmd.response.lines def test_incomplete_line_during_literal_no_cmd_found(self): self.imap_protocol.data_received(b'* LIST () "/" {7}\r\nfoo/') self.imap_protocol.data_received(b'bar\r\nTAG OK LIST completed\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* LIST () "/" {7}', None)]) self.imap_protocol._handle_line.assert_has_calls([call(b'* LIST () "/" {7}', None), call(b'', Command('NIL', 'unused')), call(b'TAG OK LIST completed', None)]) def test_line_with_literal_no_cmd_found_no_AttributeError_thrown(self): self.imap_protocol.data_received(b'* 3 FETCH (UID 12 RFC822 {4}\r\nmail)\r\n' b'TAG OK FETCH completed.\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 3 FETCH (UID 12 RFC822 {4}', None), call(b')', Command('NIL', 'unused')), call(b'TAG OK FETCH completed.', None)]) def test_line_with_attachment_literals(self): cmd = Command('FETCH', 'TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* 46 FETCH (UID 46 FLAGS () BODYSTRUCTURE (' b'("text" "calendar" ("charset" "UTF-8" "name" {16}\r\nG\xe9n\xe9ration 3.ics)' b' "" NIL "quoted-printable" 365 14 NIL ' b'("attachment" ("filename" {16}\r\nG\xe9n\xe9ration 3.ics)))\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 46 FETCH (UID 46 FLAGS () BODYSTRUCTURE (' b'("text" "calendar" ("charset" "UTF-8" "name" {16}', None), call(b') "" NIL "quoted-printable" 365 14 NIL ' b'("attachment" ("filename" {16}', cmd), call(b')))', cmd)]) assert [b'G\xe9n\xe9ration 3.ics', b'G\xe9n\xe9ration 3.ics'] == cmd.response.lines def test_incomplete_line_followed_by_incomplete_literal(self): cmd = Command('FETCH', 'TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* 2 FETCH (') self.imap_protocol.data_received(b'FLAGS () UID 160016 BODY[] {10}\r\non the ') self.imap_protocol.data_received(b'dot)\r\nTAG OK FETCH completed\r\n') self.imap_protocol._handle_line.assert_has_calls([call(b'* 2 FETCH (FLAGS () UID 160016 BODY[] {10}', None), call(b')', cmd), call(b'TAG OK FETCH completed', None)]) assert [b'on the dot'] == cmd.response.lines # cf 1st FETCH in https://tools.ietf.org/html/rfc3501#section-8 example def test_incomplete_fetch_message_attributes_without_literal(self): cmd = FetchCommand('TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) line = b'* 12 FETCH (FLAGS (\Seen) BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 \r\n' cmd.append_to_resp(line) self.imap_protocol.data_received(line) line = b'92))\r\nTAG OK FETCH completed\r\n' cmd.append_to_resp(line) self.imap_protocol.data_received(line) self.imap_protocol._handle_line.assert_has_calls( [call(b'* 12 FETCH (FLAGS (\Seen) BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 ', None), call(b'92))', cmd), call(b'TAG OK FETCH completed', None)]) def test_incomplete_fetch_with_incomplete_line(self): cmd = FetchCommand('TAG') self.imap_protocol._handle_line = MagicMock(return_value=cmd) self.imap_protocol.data_received(b'* 21 FETCH (FLAGS (\Seen) BODY[] {16}\r\nincomplete fetch') self.imap_protocol.data_received(b')\r\nTAG OK FETCH completed\r\n') self.imap_protocol._handle_line.assert_has_calls( [call(b'* 21 FETCH (FLAGS (\Seen) BODY[] {16}', None), call(b')', cmd), call(b'TAG OK FETCH completed', None)]) def test_command_repr(self): assert 'tag NAME' == str(Command('NAME', 'tag')) assert 'tag NAME arg1 arg2' == str(Command('NAME', 'tag', 'arg1', 'arg2')) assert 'tag UID NAME arg' == str(Command('NAME', 'tag', 'arg', prefix='UID')) assert 'tag UID NAME' == str(Command('NAME', 'tag', prefix='UID')) class TestDataReceived(unittest.TestCase): def setUp(self): self.imap_protocol = IMAP4ClientProtocol(None) aioimaplib.get_running_loop = asyncio.new_event_loop # monkey patch to avoid Exception "No running loop" def test_when_idle_continuation_line_in_same_dataframe_as_status_update(self): queue = asyncio.Queue() cmd = IdleCommand('TAG', queue) self.imap_protocol.pending_sync_command = cmd self.imap_protocol.data_received(b'+ idling\r\n* 1 EXISTS\r\n* 1 RECENT\r\n') assert self.imap_protocol._idle_event.is_set() assert [b'1 EXISTS', b'1 RECENT'] == queue.get_nowait() class TestFetchWaitsForAllMessageAttributes(unittest.TestCase): def setUp(self): aioimaplib.get_running_loop = asyncio.new_event_loop # monkey patch to avoid Exception "No running loop" def test_empty_fetch(self): assert not FetchCommand('TAG').wait_data() def test_simple_fetch(self): fetch = FetchCommand('TAG') fetch.append_to_resp(b'12 FETCH (FLAGS (\Seen))') assert not fetch.wait_data() def test_simple_fetch_with_two_lines(self): fetch = FetchCommand('TAG') fetch.append_to_resp(b'12 FETCH (FLAGS (\Seen) BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028') assert fetch.wait_data() fetch.append_to_resp(b'92))') assert not fetch.wait_data() def test_fetch_with_literal(self): fetch = FetchCommand('TAG') fetch.append_to_resp(b'12 FETCH (FLAGS () BODY[] {13}') fetch.begin_literal_data(13, b'literal (data') fetch.append_to_resp(b')') assert not fetch.wait_data() def test_fetch_only_the_last_message_data(self): fetch = FetchCommand('TAG') fetch.append_to_resp(b'12 FETCH (FLAGS (\Seen)') # not closed on purpose assert fetch.wait_data() fetch.append_to_resp(b'13 FETCH (FLAGS (\Seen)') assert fetch.wait_data() fetch.append_to_resp(b')') assert not fetch.wait_data() @pytest.mark.asyncio() async def test_login(with_server): imap_client = aioimaplib.IMAP4(port=12345, loop=asyncio.get_running_loop(), timeout=3) await asyncio.wait_for(imap_client.wait_hello_from_server(), 2) result, data = await imap_client.login('user', 'password') assert aioimaplib.AUTH == imap_client.protocol.state assert 'OK' == result assert b'LOGIN completed' == data[-1] assert imap_client.has_capability('IDLE') assert imap_client.has_capability('UIDPLUS') @pytest.mark.asyncio() async def test_xoauth2(with_server): imap_client = aioimaplib.IMAP4(port=12345, loop=asyncio.get_running_loop(), timeout=3) await asyncio.wait_for(imap_client.wait_hello_from_server(), 2) result, data = await imap_client.xoauth2('user', 'myspecialtoken') assert aioimaplib.AUTH == imap_client.protocol.state assert 'OK' == result assert b'AUTHENTICATE completed' == data[-1] @pytest.mark.asyncio() async def test_login_with_special_characters(with_server): imap_client = aioimaplib.IMAP4(port=12345, loop=asyncio.get_running_loop(), timeout=3) await asyncio.wait_for(imap_client.wait_hello_from_server(), 2) result, data = await imap_client.login('user', 'pass"word') assert aioimaplib.AUTH == imap_client.protocol.state assert 'OK' == result assert b'LOGIN completed' == data[-1] @pytest.mark.asyncio() async def test_login_twice(with_server): with pytest.raises(aioimaplib.Error) as expected: imap_client = await login_user_async('user', 'pass') await imap_client.login('user', 'password') assert expected == 'command LOGIN illegal in state AUTH' @pytest.mark.asyncio() async def test_logout(with_server): imap_client = await login_user_async('user', 'pass') result, data = await imap_client.logout() assert 'OK' == result assert [b'BYE Logging out', b'LOGOUT completed'] == data assert aioimaplib.LOGOUT == imap_client.protocol.state @pytest.mark.asyncio() async def test_select_no_messages(with_server): imap_client = await login_user_async('user', 'pass') resp = await imap_client.select() assert 'OK' == resp[0] assert 0 == extract_exists(resp) assert aioimaplib.SELECTED == imap_client.protocol.state @pytest.mark.asyncio() async def test_examine_no_messages(with_server): imap_client = await login_user_async('user', 'pass') assert 0 == extract_exists((await imap_client.examine())) assert aioimaplib.AUTH == imap_client.protocol.state @pytest.mark.asyncio() async def test_search_two_messages(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) result, data = await imap_client.search('ALL') assert 'OK' == result assert b'1 2' == data[0] @pytest.mark.asyncio() async def test_search_messages(with_server): """Increase compatibility with https://docs.python.org/3/library/imaplib.html#imap4-example.""" with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) # E.g. typ, data = M.search(None, 'ALL') result, data = await imap_client.search(None, 'ALL') assert 'OK' == result assert b'1 2' == data[0] @pytest.mark.asyncio() async def test_uid_with_illegal_command(with_server): imap_client = await login_user_async('user', 'pass', select=True) for command in {'COPY', 'FETCH', 'STORE', 'EXPUNGE', 'MOVE'}.symmetric_difference(Commands.keys()): with pytest.raises(aioimaplib.Abort) as expected: await imap_client.uid(command) assert ('command UID only possible with COPY, FETCH, EXPUNGE (w/UIDPLUS) or STORE (was %s)' % command) in str(expected) @pytest.mark.asyncio() async def test_search_three_messages_by_uid(with_server): imap_client = await login_user_async('user', 'pass', select=True) with_server.receive(Mail.create(['user'])) # id=1 uid=1 with_server.receive(Mail.create(['user']), mailbox='OTHER_MAILBOX') # id=1 uid=1 with_server.receive(Mail.create(['user'])) # id=2 uid=2 assert b'1 2' == (await imap_client.search('ALL')).lines[0] assert b'1 2' == (await imap_client.uid_search('ALL')).lines[0] await imap_client.select('OTHER_MAILBOX') assert b'1' == (await imap_client.uid_search('ALL')).lines[0] @pytest.mark.asyncio() async def test_fetch(with_server): imap_client = await login_user_async('user', 'pass', select=True) mail = Mail.create(['user'], mail_from='me', subject='hello', content='pleased to meet you, wont you guess my name ?') with_server.receive(mail) result, data = await imap_client.fetch('1', '(RFC822)') content = mail.as_bytes() assert 'OK' == result assert [ b'1 FETCH (RFC822 {%d}' % len(content), content, b')', b'FETCH completed.' ] == data @pytest.mark.asyncio() async def test_fetch_by_uid_without_body(with_server): imap_client = await login_user_async('user', 'pass', select=True) mail = Mail.create(['user'], mail_from='me', subject='hello', content='pleased to meet you, wont you guess my name ?') with_server.receive(mail) response = (await imap_client.uid('fetch', '1', '(UID FLAGS)')) assert 'OK' == response.result assert b'1 FETCH (UID 1 FLAGS ())' == response.lines[0] @pytest.mark.asyncio() async def test_fetch_by_uid(with_server): imap_client = await login_user_async('user', 'pass', select=True) mail = Mail.create(['user'], mail_from='me', subject='hello', content='pleased to meet you, wont you guess my name ?') with_server.receive(mail) response = (await imap_client.uid('fetch', '1', '(RFC822)')) assert 'OK' == response.result assert mail.as_bytes() == response.lines[1] @pytest.mark.asyncio() async def test_idle(with_server): imap_client = await login_user_async('user', 'pass', select=True) idle = await imap_client.idle_start(timeout=0.3) with_server.receive(Mail.create(to=['user'], mail_from='me', subject='hello')) assert [b'1 EXISTS', b'1 RECENT'] == (await imap_client.wait_server_push()) imap_client.idle_done() assert ('OK', [b'IDLE terminated']) == (await asyncio.wait_for(idle, 1)) assert imap_client._idle_waiter._cancelled with pytest.raises(asyncio.TimeoutError): await imap_client.wait_server_push(timeout=0.1) @pytest.mark.asyncio() async def test_idle_loop(with_server): imap_client = await login_user_async('user', 'pass', select=True) idle = await imap_client.idle_start(timeout=0.3) with_server.receive(Mail.create(to=['user'], mail_from='me', subject='hello')) data = list() while imap_client.has_pending_idle(): data.append((await imap_client.wait_server_push())) if data[-1] == STOP_WAIT_SERVER_PUSH: imap_client.idle_done() await asyncio.wait_for(idle, 1) assert [[b'1 EXISTS', b'1 RECENT'], STOP_WAIT_SERVER_PUSH] == data @pytest.mark.asyncio() async def test_idle_stop(with_server): imap_client = await login_user_async('user', 'pass', select=True) idle = await imap_client.idle_start() assert (await imap_client.stop_wait_server_push()) assert STOP_WAIT_SERVER_PUSH == (await imap_client.wait_server_push()) imap_client.idle_done() await asyncio.wait_for(idle, 1) @pytest.mark.asyncio() async def test_idle_stop_does_nothing_if_no_pending_idle(with_server): imap_client = await login_user_async('user', 'pass', select=True) assert not (await imap_client.stop_wait_server_push()) @pytest.mark.asyncio() async def test_idle_error_response(with_server): imap_client = await login_user_async('user', 'pass', select=True) conn = with_server.get_connection('user') def idle_error(tag, *args): conn.error(tag, "Error initiating IDLE") conn.idle = idle_error with pytest.raises(Abort): await imap_client.idle_start() @pytest.mark.asyncio() async def test_store_and_search_by_keyword(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) assert b'' == (await imap_client.uid_search('KEYWORD FOO', charset=None)).lines[0] assert 'OK' == (await imap_client.uid('store', '1', '+FLAGS (FOO)')).result assert b'1' == (await imap_client.uid_search('KEYWORD FOO', charset=None)).lines[0] assert b'2' == (await imap_client.uid_search('UNKEYWORD FOO', charset=None)).lines[0] @pytest.mark.asyncio() async def test_expunge_messages(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) assert ('OK', [b'1 EXPUNGE', b'2 EXPUNGE', b'EXPUNGE completed.']) == (await imap_client.expunge()) assert 0 == extract_exists((await imap_client.select())) @pytest.mark.asyncio() async def test_copy_messages(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) result, _ = await imap_client.copy('1', '2', 'MAILBOX') assert 'OK' == result assert 2 == extract_exists((await imap_client.select('MAILBOX'))) @pytest.mark.asyncio() async def test_copy_messages_by_uid(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) result, _ = await imap_client.uid('copy', '1', 'MAILBOX') assert 'OK' == result assert 1 == extract_exists((await imap_client.select('MAILBOX'))) @pytest.mark.asyncio() async def test_concurrency_1_executing_sync_commands_sequentially(with_server): imap_client = await login_user_async('user', 'pass') f1 = asyncio.ensure_future(imap_client.examine('INBOX')) f2 = asyncio.ensure_future(imap_client.examine('MAILBOX')) await asyncio.wait([f1, f2]) assert f1.exception() is None assert f2.exception() is None @pytest.mark.asyncio() async def test_concurrency_2_executing_same_async_commands_sequentially(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) f1 = asyncio.ensure_future(imap_client.fetch('1', '(RFC822)')) f2 = asyncio.ensure_future(imap_client.fetch('1', '(RFC822)')) await asyncio.wait([f1, f2]) assert f1.exception() is None assert f2.exception() is None @pytest.mark.asyncio() async def test_concurrency_3_executing_async_commands_in_parallel(with_server): # cf valid example in https://tools.ietf.org/html/rfc3501#section-5.5 with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) store = asyncio.ensure_future(imap_client.store('1', '+FLAGS (FOO)')) copy = asyncio.ensure_future(imap_client.copy('1', 'MBOX')) expunge = asyncio.ensure_future(imap_client.expunge()) await asyncio.wait([store, copy, expunge]) assert 0 == extract_exists((await imap_client.select())) assert 1 == extract_exists((await imap_client.select('MBOX'))) assert b'1' == (await imap_client.search('KEYWORD FOO', charset=None)).lines[0] @pytest.mark.asyncio() async def test_concurrency_4_sync_command_waits_for_async_commands_to_finish(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) asyncio.ensure_future(imap_client.copy('1', 'MBOX')) asyncio.ensure_future(imap_client.expunge()) examine = asyncio.ensure_future(imap_client.examine('MBOX')) assert 1 == extract_exists((await asyncio.wait_for(examine, 1))) @pytest.mark.asyncio() async def test_noop(with_server): imap_client = await login_user_async('user', 'pass') assert ('OK', [b'NOOP completed.']) == (await imap_client.noop()) @pytest.mark.asyncio() async def test_noop_with_untagged_data(with_server): imap_client = await login_user_async('user', 'pass') with_server.receive(Mail.create(['user'])) assert ('OK', [b'1 EXISTS', b'1 RECENT', b'NOOP completed.']) == (await imap_client.noop()) @pytest.mark.asyncio() async def test_check(with_server): imap_client = await login_user_async('user', 'pass', select=True) assert ('OK', [b'CHECK completed.']) == (await imap_client.check()) @pytest.mark.asyncio() async def test_close(with_server): imap_client = await login_user_async('user', 'pass', select=True) assert imap_testing_server.SELECTED == with_server.get_connection('user').state assert ('OK', [b'CLOSE completed.']) == (await imap_client.close()) assert imap_testing_server.AUTH == with_server.get_connection('user').state @pytest.mark.asyncio() async def test_status(with_server): imap_client = await login_user_async('user', 'pass') assert b'INBOX (MESSAGES 0 UIDNEXT 1)' == \ (await imap_client.status('INBOX', '(MESSAGES UIDNEXT)')).lines[0] @pytest.mark.asyncio() async def test_subscribe_unsubscribe_lsub(with_server): imap_client = await login_user_async('user', 'pass') assert ('OK', [b'SUBSCRIBE completed.']) == (await imap_client.subscribe('#fr.soc.feminisme')) assert ('OK', [b'() "." #fr.soc.feminisme', b'LSUB completed.']) == \ (await imap_client.lsub('#fr.', 'soc.*')) assert ('OK', [b'UNSUBSCRIBE completed.']) == (await imap_client.unsubscribe('#fr.soc.feminisme')) assert ('OK', [b'LSUB completed.']) == (await imap_client.lsub('#fr', '.*')) @pytest.mark.asyncio() async def test_create_delete_mailbox(with_server): imap_client = await login_user_async('user', 'pass') assert 'NO' == (await imap_client.status('MBOX', '(MESSAGES)')).result assert ('OK', [b'CREATE completed.']) == (await imap_client.create('MBOX')) assert 'OK' == (await imap_client.status('MBOX', '(MESSAGES)')).result assert ('OK', [b'DELETE completed.']) == (await imap_client.delete('MBOX')) assert 'NO' == (await imap_client.status('MBOX', '(MESSAGES)')).result @pytest.mark.asyncio() async def test_rename_mailbox(with_server): imap_client = await login_user_async('user', 'pass') assert 'NO' == (await imap_client.status('MBOX', '(MESSAGES)')).result assert ('OK', [b'RENAME completed.']) == (await imap_client.rename('INBOX', 'MBOX')) assert 'OK' == (await imap_client.status('MBOX', '(MESSAGES)')).result @pytest.mark.asyncio() async def test_list(with_server): imap_client = await login_user_async('user', 'pass') assert ('OK', [b'() "/" Drafts', b'() "/" INBOX', b'() "/" Sent', b'() "/" Trash', b'LIST completed.']) == (await imap_client.list('""', '.*')) await imap_client.create('MYBOX') assert ('OK', [b'() "/" Drafts', b'() "/" INBOX', b'() "/" MYBOX', b'() "/" Sent', b'() "/" Trash', b'LIST completed.']) == \ (await imap_client.list('""', '.*')) @pytest.mark.asyncio() async def test_get_quotaroot(with_server): imap_client = await login_user_async('user', 'pass') with_server.receive(Mail.create(['user'])) response = await imap_client.getquotaroot('INBOX') assert response.lines == [b'INBOX (STORAGE 292 5000)', b'GETQUOTAROOT completed.'] @pytest.mark.asyncio() async def test_append(with_server): imap_client = await login_user_async('user@mail', 'pass') assert 0 == extract_exists((await imap_client.examine('INBOX'))) msg = Mail.create(['user@mail'], subject='append msg', content='do you see me ?') response = await imap_client.append(msg.as_bytes(), mailbox='INBOX', flags='FOO BAR', date=datetime.now(tz=utc), ) assert 'OK' == response.result assert b'1] APPEND completed' in response.lines[0] assert 1 == extract_exists((await imap_client.examine('INBOX'))) @pytest.mark.asyncio() async def test_rfc5032_within(with_server): with_server.receive(Mail.create(['user'], date=datetime.now(tz=utc) - timedelta(seconds=84600 * 3))) # 1 with_server.receive(Mail.create(['user'], date=datetime.now(tz=utc) - timedelta(seconds=84600))) # 2 with_server.receive(Mail.create(['user'])) # 3 imap_client = await login_user_async('user', 'pass', select=True) assert b'1' == (await imap_client.search('OLDER', '84700')).lines[0] assert b'2 3' == (await imap_client.search('YOUNGER', '84700')).lines[0] @pytest.mark.asyncio() async def test_rfc4315_uidplus_expunge(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) assert ('OK', [b'1 EXPUNGE', b'UID EXPUNGE completed.']) == (await imap_client.uid('expunge', '1:1')) assert 1 == extract_exists((await imap_client.select())) @pytest.mark.asyncio() async def test_rfc6851_move(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) uidvalidity = with_server.get_connection('user').uidvalidity assert ('OK', [b'OK [COPYUID %d 1:1 1:1]' % uidvalidity, b'1 EXPUNGE', b'Done']) == \ (await imap_client.move('1:1', 'Trash')) assert 0 == extract_exists((await imap_client.select())) assert 1 == extract_exists((await imap_client.select('Trash'))) @pytest.mark.asyncio() async def test_rfc6851_uidmove(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user_async('user', 'pass', select=True) uidvalidity = with_server.get_connection('user').uidvalidity assert ('OK', [b'OK [COPYUID %d 1:1 1:1]' % uidvalidity, b'1 EXPUNGE', b'Done']) == \ (await imap_client.uid('move', '1:1', 'Trash')) assert 0 == extract_exists((await imap_client.select())) assert 1 == extract_exists((await imap_client.select('Trash'))) @pytest.mark.asyncio() async def test_rfc5161_enable(with_server): imap_client = await login_user_async('user', 'pass') assert ('OK', [b'X-GOOD-IDEA CONDSTORE enabled']) == \ (await imap_client.enable('X-GOOD-IDEA CONDSTORE')) @pytest.mark.asyncio() async def test_rfc2342_namespace(with_server): imap_client = await login_user_async('user', 'pass') response = await imap_client.namespace() assert ('OK', [b'(("" "/")) NIL NIL', b'NAMESPACE command completed']) == response @pytest.mark.asyncio() async def test_rfc2971_id(with_server): imap_client = await login_user_async('user', 'pass') response = await imap_client.id() assert ('OK', [b'ID command completed']) == response @pytest.mark.asyncio() async def test_callback_is_called_when_connection_is_lost(event_loop): imapserver = create_server(None, event_loop) srv = await imapserver.run_server(host='127.0.0.1', port=12345, fetch_chunk_size=64, ssl_context=None) async with srv: await srv.start_serving() queue = asyncio.Queue() imap_client = aioimaplib.IMAP4(port=12345, loop=event_loop, timeout=3, conn_lost_cb=lambda m: queue.put_nowait('called with %s' % m)) await asyncio.wait_for(imap_client.wait_hello_from_server(), 2) await imap_client.login('login', 'password') imapserver.reset() srv.close() await asyncio.wait_for(srv.wait_closed(), 1) assert 'called with None' == (await asyncio.wait_for(queue.get(), timeout=2)) @pytest.mark.asyncio() async def test_client_can_connect_to_server_over_ssl(with_ssl, with_ssl_server): ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=with_ssl[1]) imap_client = aioimaplib.IMAP4_SSL(port=12345, loop=asyncio.get_running_loop(), ssl_context=ssl_context) await asyncio.wait_for(imap_client.wait_hello_from_server(), 2) assert 'IMAP4REV1' == imap_client.protocol.imap_version assert {'IMAP4rev1', 'YESAUTH'} == imap_client.protocol.capabilities assert imap_client.has_capability('YESAUTH') aioimaplib-2.0.1/tests/test_aioimaplib_capabilities.py000066400000000000000000000077731474216043600232370ustar00rootroot00000000000000import asyncio import logging import pytest from aioimaplib import aioimaplib from aioimaplib.aioimaplib import Abort from aioimaplib.imap_testing_server import ImapProtocol, ServerState, MockImapServer from tests.server_fixture import with_server, login_user_async, main_test aioimaplib.log.setLevel(logging.WARNING) sh = logging.StreamHandler() sh.setLevel(logging.INFO) sh.setFormatter(logging.Formatter("%(asctime)s %(levelname)s [%(module)s:%(lineno)d] %(message)s")) aioimaplib.log.addHandler(sh) @pytest.mark.skip(reason="it passes alone but blocks the other tests in this module") @pytest.mark.asyncio() async def test_capabilities_server_not_compliant(event_loop): class NotCompliantProtocol(ImapProtocol): def capability(self, tag, *args): """should send CAPABILITY IMAP4rev1 YESAUTH """ self.send_untagged_line('CAPABILITY YESAUTH') self.send_tagged_line(tag, 'OK Pre-login capabilities listed, post-login capabilities have more') class NotCompliantServer(MockImapServer): def run_server(self, host='127.0.0.1', port=1143, fetch_chunk_size=0, ssl_context=None): return event_loop.create_server(lambda: NotCompliantProtocol(ServerState(), loop=self.loop), host=host, port=port, ssl=None) imap_srv = NotCompliantServer(loop=event_loop) srv = await imap_srv.run_server(port=12345) main_server_future = asyncio.ensure_future(main_test(server=srv, ssl_context=None)) with pytest.raises(asyncio.TimeoutError): with pytest.raises(aioimaplib.Error) as expected: await login_user_async('user', 'pass', timeout=0.1) assert expected == 'server not IMAP4 compliant' @pytest.mark.asyncio() async def test_capabilities(with_server): imap_client = aioimaplib.IMAP4(port=12345, loop=asyncio.get_running_loop()) await asyncio.wait_for(imap_client.wait_hello_from_server(), 2) assert 'IMAP4REV1' == imap_client.protocol.imap_version assert {'IMAP4rev1', 'YESAUTH'} == imap_client.protocol.capabilities assert imap_client.has_capability('YESAUTH') @pytest.mark.parametrize("with_server", [''], indirect=True) # '' = no capabilities @pytest.mark.asyncio() async def test_idle_messages_without_idle_capability_abort_command(with_server): imap_client = await login_user_async('user', 'pass', select=True) with pytest.raises(Abort): await asyncio.wait_for(imap_client.idle(), timeout=2) @pytest.mark.parametrize("with_server", [''], indirect=True) # '' = no capabilities @pytest.mark.asyncio() async def test_expunge_messages_without_uidplus_capability_abort_command(with_server): imap_client = await login_user_async('user', 'pass', select=True) with pytest.raises(Abort): await imap_client.uid('expunge', '1:1') @pytest.mark.parametrize("with_server", [''], indirect=True) # '' = no capabilities @pytest.mark.asyncio() async def test_move_without_move_capability_abort_command(with_server): imap_client = await login_user_async('user', 'pass', select=True) with pytest.raises(Abort): await imap_client.move('1:1', 'Trash') @pytest.mark.parametrize("with_server", [''], indirect=True) # '' = no capabilities @pytest.mark.asyncio() async def test_uidmove_without_move_capability_abort_command(with_server): imap_client = await login_user_async('user', 'pass', select=True) with pytest.raises(Abort): await imap_client.uid('move', '1:1', 'Trash') @pytest.mark.parametrize("with_server", [''], indirect=True) # '' = no capabilities @pytest.mark.asyncio() async def test_enable_without_enable_capability_abort_command(with_server): imap_client = await login_user_async('user', 'pass') with pytest.raises(Abort): await imap_client.enable('CAPABILITY') @pytest.mark.parametrize("with_server", [''], indirect=True) # '' = no capabilities @pytest.mark.asyncio() async def test_namespace_without_namespace_capability_abort_command(with_server): imap_client = await login_user_async('user', 'pass') with pytest.raises(Abort): await imap_client.namespace() aioimaplib-2.0.1/tests/test_aioimaplib_clocked.py000066400000000000000000000153251474216043600222020ustar00rootroot00000000000000import asyncio import pytest from aioimaplib import Command, CommandTimeout, STOP_WAIT_SERVER_PUSH, AioImapException, Response from aioimaplib.imap_testing_server import ImapProtocol from tests.server_fixture import with_server, login_user_async, advance_time @pytest.mark.asyncio() async def test_command_timeout(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=1) await advance_time(2) with pytest.raises(AioImapException): await cmd.wait() @pytest.mark.asyncio() async def test_command_close_cancels_timer(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=1) cmd.close(b'line', 'OK') await advance_time(3) await cmd.wait() assert Response('OK', [b'line']) == cmd.response @pytest.mark.asyncio() async def test_command_begin_literal_data_resets_timer(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=2) await advance_time(1) cmd.begin_literal_data(7, b'literal') await advance_time(1.9) cmd.close(b'line', 'OK') await cmd.wait() assert Response('OK', [b'literal', b'line']) == cmd.response @pytest.mark.asyncio() async def test_command_append_data_resets_timer(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=2) cmd.begin_literal_data(4, b'da') await advance_time(1.9) cmd.append_literal_data(b'ta') await advance_time(1.9) cmd.close(b'line', 'OK') await cmd.wait() assert Response('OK', [b'data', b'line']) == cmd.response @pytest.mark.asyncio() async def test_command_append_literal_data_resets_timer(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=2) cmd.begin_literal_data(12, b'literal') await advance_time(1.9) cmd.append_literal_data(b' data') await advance_time(1.9) cmd.close(b'line', 'OK') await cmd.wait() assert Response('OK', [b'literal data', b'line']) == cmd.response @pytest.mark.asyncio() async def test_command_append_to_resp_resets_timer(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=2) await advance_time(1.9) cmd.append_to_resp(b'line 1') await advance_time(1.9) cmd.close(b'line 2', 'OK') await cmd.wait() assert Response('OK', [b'line 1', b'line 2']) == cmd.response @pytest.mark.asyncio() async def test_command_timeout_while_receiving_data(event_loop, with_server, advance_time): cmd = Command('CMD', 'tag', loop=event_loop, timeout=2) await advance_time(1) cmd.begin_literal_data(12, b'literal') await advance_time(3) with pytest.raises(AioImapException): await cmd.wait() @pytest.mark.asyncio() async def test_when_async_commands_timeout__they_should_be_removed_from_protocol_state(event_loop, with_server, advance_time): imap_client = await login_user_async('user', 'pass', select=True, loop=event_loop) await (imap_client.protocol.execute(Command( 'DELAY', imap_client.protocol.new_tag(), '3', loop=event_loop))) noop_task = asyncio.ensure_future(imap_client.protocol.execute( Command('NOOP', imap_client.protocol.new_tag(), '', loop=event_loop, timeout=2))) await advance_time(1) assert 1 == len(imap_client.protocol.pending_async_commands) await advance_time(1.1) finished, pending = await asyncio.wait([noop_task]) assert noop_task in finished assert isinstance(noop_task.exception(), CommandTimeout) assert 0 == len(imap_client.protocol.pending_async_commands) @pytest.mark.asyncio() async def test_when_sync_commands_timeout__they_should_be_removed_from_protocol_state(event_loop, with_server, advance_time): imap_client = await login_user_async('user', 'pass', select=True, loop=event_loop) await (imap_client.protocol.execute(Command( 'DELAY', imap_client.protocol.new_tag(), '3', loop=event_loop))) delay_task = asyncio.ensure_future(imap_client.protocol.execute( Command('DELAY', imap_client.protocol.new_tag(), '0', loop=event_loop, timeout=2))) await advance_time(1) assert imap_client.protocol.pending_sync_command is not None await advance_time(1.1) finished, pending = await asyncio.wait([delay_task]) assert delay_task in finished assert isinstance(delay_task.exception(), CommandTimeout) assert imap_client.protocol.pending_sync_command is None # test failing with python 12 @pytest.mark.asyncio() async def test_idle_start__exits_queue_get_without_timeout_error(event_loop, with_server, advance_time): imap_client = await login_user_async('user', 'pass', select=True, loop=event_loop) idle_timeout = 5 await imap_client.idle_start(idle_timeout) push_task = asyncio.ensure_future(imap_client.wait_server_push(idle_timeout + 2)) await advance_time(idle_timeout + 1) r = await asyncio.wait_for(push_task, 0) assert STOP_WAIT_SERVER_PUSH == r @pytest.mark.asyncio() async def test_idle_start__exits_queueget_with_keepalive_without_timeout_error(event_loop, with_server, advance_time): imap_client = await login_user_async('user', 'pass', select=True, loop=event_loop) # Idle long enough for the server to issue a keep-alive server_idle_timeout = ImapProtocol.IDLE_STILL_HERE_PERIOD_SECONDS idle_timeout = server_idle_timeout + 1 idle = await imap_client.idle_start(idle_timeout) push_task = asyncio.ensure_future(imap_client.wait_server_push(server_idle_timeout - 1)) # Advance time until we've received a keep-alive from server await advance_time(server_idle_timeout) # The original push task timed out with pytest.raises(asyncio.TimeoutError): await asyncio.wait_for(push_task, 0.1) # Read the keepalive from the server r = await imap_client.wait_server_push(0.1) assert [b'OK Still here'] == r # Advance the clock to the client timeout (idle waiter triggers) await advance_time(1) imap_client.idle_done() r = await asyncio.wait_for(idle, 1) assert "OK" == r.result assert not imap_client.protocol._idle_event.is_set() # Start another idle period idle = await imap_client.idle_start(idle_timeout) await advance_time(1) # Read 'stop_wait_server_push' push_task = asyncio.ensure_future(imap_client.wait_server_push(0.1)) await advance_time(1) r = await asyncio.wait_for(push_task, None) assert STOP_WAIT_SERVER_PUSH == r # There shouldn't be anything left in the queue (no '+ idling') with pytest.raises(asyncio.TimeoutError): push_task = asyncio.ensure_future(imap_client.wait_server_push(0.1)) await advance_time(1) await asyncio.wait_for(push_task, 0.1) imap_client.idle_done() await asyncio.wait_for(idle, 1) aioimaplib-2.0.1/tests/test_imapserver.py000066400000000000000000000161161474216043600205640ustar00rootroot00000000000000# aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -*- coding: utf-8 -*- import email import imaplib import unittest from datetime import datetime import asyncio import functools import pytz import sys from aioimaplib.imap_testing_server import ServerState, Mail, MockImapServer, ImapProtocol, InvalidUidSet import pytest class TestMailToString(unittest.TestCase): def test_message_date_string(self): now = pytz.timezone('Europe/Paris').localize(datetime(2016, 2, 2, 12, 13, 14, 151)) mail = Mail.create(['user'], date=now) assert mail.email.get('Date') == 'Tue, 02 Feb 2016 12:13:14 +0100' def test_message_default_date_string_is_utc(self): mail = Mail.create(['user']) assert mail.email.get('Date').endswith('+0000') def test_message_title_string_without_accents_isnot_encoded(self): now = pytz.timezone('Europe/Paris').localize(datetime(2016, 2, 2, 12, 13, 14, 151)) mail = Mail.create(['user'], subject='subject', date=now) assert mail.email.get('Subject') == 'subject' def test_message_title_string_with_accents_is_base64encoded(self): mail = Mail.create(['user'], subject='Classé ?') assert '=?utf-8?b?Q2xhc3PDqSA/?=' in mail.as_string() def test_message_quoted_printable(self): mail = Mail.create(['user'], content='Bonjour à vous', quoted_printable=True) assert 'Bonjour =C3=A0 vous' in mail.as_string(), '"=C3=A0" not found in %s' % mail.as_string() def test_message_not_quoted_printable(self): mail = Mail.create(['user'], subject='élo ?', content='Bonjour à vous').as_bytes() m = email.message_from_bytes(mail) assert 'Bonjour à vous' == m.get_payload(decode=True).decode() def test_header_encode_to(self): mail = Mail.create(['Zébulon Durand '], mail_from='from@mail.fr', subject='subject') assert '=?utf-8?q?Z=C3=A9bulon_Durand_=3Czeb=40zebulon=2Eio=3E?=' in mail.as_string(), 'expected string not found in :%s\n' % mail.as_string() def test_mail_from(self): mail = Mail.create(['user'], subject='subject') assert mail.email.get('From') == '' mail = Mail.create(['user'], mail_from='', subject='subject') assert mail.email.get('From') == '' mail = Mail.create(['user'], mail_from='test@test', subject='subject') assert mail.email.get('From') == '' mail = Mail.create(['user'], mail_from='Test ', subject='subject') assert mail.email.get('From') == 'Test ' def test_build_sequence_range(self): assert range(1, 3) == ImapProtocol(None)._build_sequence_range('1:2') assert range(1, 12) == ImapProtocol(None)._build_sequence_range('1:11') assert range(1234, 12346) == ImapProtocol(None)._build_sequence_range('1234:12345') assert range(1, sys.maxsize) == ImapProtocol(None)._build_sequence_range('1:*') assert [42] == ImapProtocol(None)._build_sequence_range('42') def test_build_sequence_badrange(self): with pytest.raises(InvalidUidSet): ImapProtocol(None)._build_sequence_range('0:2') with pytest.raises(InvalidUidSet): ImapProtocol(None)._build_sequence_range('2:0') with pytest.raises(InvalidUidSet): ImapProtocol(None)._build_sequence_range('2:1') class TestServerState(unittest.TestCase): def test_max_ids_with_no_user(self): assert 0 == ServerState().max_uid('user', 'INBOX') assert 0 == ServerState().max_id('user', 'INBOX') def test_max_ids_one_user_one_mail(self): server_state = ServerState() server_state.add_mail('user', Mail.create(['user'])) assert 1 == server_state.max_id('user', 'INBOX') assert 1 == server_state.max_uid('user', 'INBOX') assert 0 == server_state.max_id('user', 'OTHER_MAILBOX') def test_max_ids_one_user_three_mails_in_two_mailboxes(self): server_state = ServerState() server_state.add_mail('user', Mail.create(['user']), mailbox='INBOX') server_state.add_mail('user', Mail.create(['user']), mailbox='INBOX') server_state.add_mail('user', Mail.create(['user']), mailbox='OUTBOX') assert 1 == server_state.max_id('user', 'OUTBOX') assert 2 == server_state.max_id('user', 'INBOX') assert 2 == server_state.max_uid('user', 'INBOX') def test_reprocess_ids_if_a_message_is_removed(self): server_state = ServerState() server_state.add_mail('user', Mail.create(['user'], 'from1'), mailbox='INBOX') server_state.add_mail('user', Mail.create(['user'], 'from2'), mailbox='INBOX') server_state.add_mail('user', Mail.create(['user'], 'from3'), mailbox='INBOX') server_state.remove_byid('user', 'INBOX', 1) assert 1 == server_state.get_mailbox_messages('user', 'INBOX')[0].id assert 2 == server_state.get_mailbox_messages('user', 'INBOX')[1].id assert 2 == server_state.max_id('user', 'INBOX') assert 3 == server_state.max_uid('user', 'INBOX') server_state.remove_byid('user', 'INBOX', 1) assert 1 == server_state.get_mailbox_messages('user', 'INBOX')[0].id assert 1 == server_state.max_id('user', 'INBOX') assert 3 == server_state.max_uid('user', 'INBOX') class WithImapServer: def _init_server(self, loop, capabilities=None, ssl_context=None): self.loop = loop if capabilities is not None: self.imapserver = MockImapServer(loop=loop, capabilities=capabilities) else: self.imapserver = MockImapServer(loop=loop) self.server = self.imapserver.run_server( host='127.0.0.1', port=12345, fetch_chunk_size=64, ssl_context=ssl_context ) async def _shutdown_server(self): self.imapserver.reset() self.server.close() await asyncio.wait_for(self.server.wait_closed(), 1) async def login_user(self, login, password, select=False, lib=imaplib.IMAP4): imap_client = await asyncio.wait_for( self.loop.run_in_executor(None, functools.partial(lib, host='127.0.0.1', port=12345)), 1) await asyncio.wait_for( self.loop.run_in_executor(None, functools.partial(imap_client.login, login, password)), 1) if select: await asyncio.wait_for( self.loop.run_in_executor(None, functools.partial(imap_client.select)), 1) return imap_client aioimaplib-2.0.1/tests/test_imapserver_aioimaplib.py000066400000000000000000000041541474216043600227510ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import asyncio import pytest from aioimaplib import extract_exists from aioimaplib.aioimaplib import Command from tests.server_fixture import with_server, login_user_async @pytest.mark.asyncio() async def test_append_too_long(with_server): imap_client = await login_user_async('user@mail', 'pass') assert 0 == extract_exists((await imap_client.examine('INBOX'))) message_bytes = b'do you see me ?' imap_client.protocol.literal_data = message_bytes * 2 args = ['INBOX', '{%s}' % len(message_bytes)] response = await imap_client.protocol.execute( Command('APPEND', imap_client.protocol.new_tag(), *args, loop=asyncio.get_running_loop()) ) assert 'BAD' == response.result assert b'expected CRLF but got' in response.lines[0] @pytest.mark.asyncio() async def test_append_too_short(with_server): imap_client = await login_user_async('user@mail', 'pass') assert 0 == extract_exists((await imap_client.examine('INBOX'))) message_bytes = b'do you see me ?' * 2 imap_client.protocol.literal_data = message_bytes[:5] args = ['INBOX', '{%s}' % len(message_bytes)] response = await imap_client.protocol.execute( Command('APPEND', imap_client.protocol.new_tag(), *args, loop=asyncio.get_running_loop()) ) assert 'BAD' == response.result assert b'expected 30 but was' in response.lines[0] aioimaplib-2.0.1/tests/test_imapserver_imaplib.py000066400000000000000000000530571474216043600222660ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import asyncio import email import functools import imaplib import ssl from datetime import datetime, timedelta import pytest from pytz import utc from aioimaplib.imap_testing_server import Mail, AUTH, SELECTED, LOGOUT from tests.server_fixture import with_server, login_user, with_ssl, with_ssl_server @pytest.mark.asyncio async def test_server_greetings_and_capabilities(with_server): pending_imap = asyncio.get_running_loop().run_in_executor(None, functools.partial(imaplib.IMAP4, host='127.0.0.1', port=12345)) imap_client = await asyncio.wait_for(pending_imap, 1) assert 'NONAUTH' == imap_client.state @pytest.mark.asyncio async def test_server_login(with_server): pending_imap = asyncio.get_running_loop().run_in_executor(None, functools.partial(imaplib.IMAP4, host='127.0.0.1', port=12345)) imap_client = await asyncio.wait_for(pending_imap, 1) pending_login = asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.login, 'user', 'pass')) result, data = await asyncio.wait_for(pending_login, 1) assert 'OK' == result assert [b'LOGIN completed'] == data assert AUTH == with_server.get_connection('user').state @pytest.mark.asyncio async def test_select_no_messages_in_mailbox(with_server): imap_client = await login_user('user@mail', 'pass') result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select)), 1) assert 'OK' == result assert [b'0'] == data assert SELECTED == with_server.get_connection('user@mail').state @pytest.mark.asyncio async def test_select_one_message_in_mailbox(with_server): with_server.receive(Mail.create(to=['user'], mail_from='me', subject='hello')) imap_client = await login_user('user', 'pass') result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select)), 1) assert 'OK' == result assert [b'1'] == data @pytest.mark.asyncio async def test_select_one_message_in_INBOX_zero_in_OTHER(with_server): with_server.receive(Mail.create(to=['user'], mail_from='me', subject='hello')) imap_client = await login_user('user', 'pass') _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select)), 1) assert [b'1'] == data _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select, 'OTHER')), 1) assert [b'0'] == data @pytest.mark.asyncio async def test_examine_no_messages_in_mailbox(with_server): imap_client = await login_user('user', 'pass') assert ('OK', [b'0']) == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select, readonly=True)), 1)) assert AUTH == with_server.get_connection('user').state @pytest.mark.asyncio async def test_search_by_uid_two_messages(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', 'utf-8', 'ALL')), 1) assert 'OK' == result assert [b'1 2'] == data @pytest.mark.asyncio async def test_search_by_uid_one_message_two_recipients(with_server): with_server.receive(Mail.create(['user1', 'user2'])) imap_client = await login_user('user1', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, 'ALL')), 1) assert 'OK' == result assert [b'1'] == data imap_client = await login_user('user2', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, 'ALL')), 1) assert 'OK' == result assert [b'1'] == data @pytest.mark.asyncio async def test_fetch_one_message_by_uid(with_server): mail = Mail.create(['user'], mail_from='me', subject='hello', content='pleased to meet you, wont you guess my name ?') with_server.receive(mail) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', '(RFC822)')), 1) assert 'OK' == result assert [(b'1 (UID 1 RFC822 {360}', mail.as_bytes()), b')'] == data @pytest.mark.asyncio async def test_fetch_bad_range(with_server): imap_client = await login_user('user', 'pass', select=True) with pytest.raises(Exception) as expected: await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '0:*', '(RFC822)')), 1) assert 'UID command error: BAD [b\'Error in IMAP command: Invalid uidset\']' == str(expected) with pytest.raises(Exception) as expected: await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '2:0', '(RFC822)')), 1) assert 'UID command error: BAD [b\'Error in IMAP command: Invalid uidset\']' == str(expected) @pytest.mark.asyncio async def test_fetch_one_message_by_uid_with_bodypeek(with_server): mail = Mail.create(['user'], mail_from='me', subject='hello', content='this mail is still unread') with_server.receive(mail) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', '(UID BODY.PEEK[])')), 1) assert 'OK' == result assert [(b'1 (UID 1 BODY.PEEK[] {340}', mail.as_bytes()), b')'] == data @pytest.mark.asyncio async def test_fetch_one_messages_by_uid_without_body(with_server): mail = Mail.create(['user'], mail_from='me', subject='hello', content='whatever') with_server.receive(mail) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', '(UID FLAGS)')), 1) assert 'OK' == result assert [(b'1 (UID 1 FLAGS ())')] == data @pytest.mark.asyncio async def test_fetch_one_messages_by_id_without_body(with_server): mail = Mail.create(['user'], mail_from='me', subject='hello', content='whatever') with_server.receive(mail) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.fetch, '1', '(UID FLAGS)')), 1) assert [(b'1 (UID 1 FLAGS ())')] == data result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.fetch, '1', '(FLAGS)')), 1) assert [(b'1 (FLAGS ())')] == data @pytest.mark.asyncio async def test_fetch_messages_by_uid_range(with_server): mail = Mail.create(['user'], mail_from='me', subject='hello', content='whatever') with_server.receive(mail) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1:1', '(FLAGS)')), 1) assert [(b'1 (UID 1 FLAGS ())')] == data result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.fetch, '1:*', '(UID FLAGS)')), 1) assert [(b'1 (UID 1 FLAGS ())')] == data @pytest.mark.asyncio async def test_fetch_one_messages_by_uid_encoding_cp1252(with_server): with_server.receive(Mail.create(['user'], mail_from='me', subject='hello', content='maître', encoding='cp1252')) imap_client = await login_user('user', 'pass', select=True) _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', '(RFC822)')), 1) mail_content = data[0][1] assert b'charset="cp1252"' in mail_content assert b'ma\xeetre' in mail_content assert 'maître' == email.message_from_bytes(mail_content).get_payload().strip() @pytest.mark.asyncio async def test_fetch_one_messages_out_of_two(with_server): with_server.receive(Mail.create(['user'], mail_from='me', subject='hello', content='maître')) with_server.receive(Mail.create(['user'], mail_from='you', subject='yo', content='bro')) imap_client = await login_user('user', 'pass', select=True) _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', '(RFC822)')), 1) assert 2 == len(data) @pytest.mark.asyncio async def test_fetch_one_message_with_headers(with_server): with_server.receive(Mail.create(['user'], mail_from='me', subject='hello', content='maître')) imap_client = await login_user('user', 'pass', select=True) _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', '(BODY.PEEK[HEADER.FIELDS (Content-type From)])')), 1) assert b'1 (UID 1 BODY[HEADER.FIELDS (Content-type From)] {57}' == data[0][0] assert b'Content-type: text/plain; charset="utf-8"\r\nFrom: \r\n\r\n' == data[0][1] @pytest.mark.asyncio async def test_store(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'store', '1', '+FLAGS.SILENT (\Seen \Answered)')), 1) assert 'OK' == result result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'fetch', '1', 'UID (FLAGS)')), 1) assert 'OK' == result assert [b'1 (UID 1 FLAGS (\Seen \Answered))'] == data @pytest.mark.asyncio async def test_store_and_search_by_keyword(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass', select=True) result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, 'KEYWORD FOO')), 1) assert 'OK' == result assert [b''] == data result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'store', '1', '+FLAGS (FOO)')), 1) assert 'OK' == result result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, 'KEYWORD FOO')), 1) assert 'OK' == result assert [b'1'] == data result, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, 'UNKEYWORD FOO')), 1) assert 'OK' == result assert [b'2'] == data @pytest.mark.asyncio async def test_search_by_uid_range(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass', select=True) _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, '1:2')), 1) assert [b'1 2'] == data _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, '1:*')), 1) assert [b'1 2'] == data _, data = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.uid, 'search', None, '1:1')), 1) assert [b'1'] == data @pytest.mark.asyncio async def test_expunge_messages(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass', select=True) await asyncio.wait_for(asyncio.get_running_loop().run_in_executor(None, imap_client.expunge), 1) assert ('OK', [b'0']) == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select)), 1)) @pytest.mark.asyncio async def test_noop(with_server): imap_client = await login_user('user', 'pass', select=True) assert ('OK', [b'NOOP completed.']) == \ (await asyncio.wait_for(asyncio.get_running_loop().run_in_executor(None, imap_client.noop), 1)) @pytest.mark.asyncio async def test_check(with_server): imap_client = await login_user('user', 'pass', select=True) assert ('OK', [b'CHECK completed.']) == \ (await asyncio.wait_for(asyncio.get_running_loop().run_in_executor(None, imap_client.check), 1)) @pytest.mark.asyncio async def test_status(with_server): imap_client = await login_user('user', 'pass') assert ('OK', [b'INBOX (MESSAGES 0 UIDNEXT 1)']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.status, 'INBOX', '(MESSAGES UIDNEXT)')), 1)) @pytest.mark.asyncio async def test_subscribe_unsubscribe_lsub(with_server): imap_client = await login_user('user', 'pass') assert ('OK', [b'SUBSCRIBE completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial( imap_client.subscribe, '#fr.soc.feminisme')), 1)) assert ('OK', [b'() "." #fr.soc.feminisme']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial( imap_client.lsub, '#fr', 'soc.*')), 1)) assert ('OK', [b'UNSUBSCRIBE completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial( imap_client.unsubscribe, '#fr.soc.feminisme')), 1)) assert ('OK', [None]) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial( imap_client.lsub, '#fr', '.*')), 1)) @pytest.mark.asyncio async def test_close(with_server): imap_client = await login_user('user', 'pass', select=True) assert SELECTED == with_server.get_connection('user').state assert ('OK', [b'CLOSE completed.']) == \ (await asyncio.wait_for(asyncio.get_running_loop().run_in_executor(None, imap_client.close), 1)) assert AUTH == with_server.get_connection('user').state @pytest.mark.asyncio async def test_copy_messages(with_server): with_server.receive(Mail.create(['user'])) with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass', select=True) result, _ = await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.copy, '1 2', 'MAILBOX')), 20) assert 'OK' == result assert ('OK', [b'2']) == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select, 'MAILBOX')), 20)) @pytest.mark.asyncio async def test_create_delete_mailbox(with_server): imap_client = await login_user('user', 'pass') assert ('NO', [b'STATUS completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.status, 'MBOX', '(MESSAGES)')), 1)) assert ('OK', [b'CREATE completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.create, 'MBOX')), 1)) assert ('OK', [b'MBOX (MESSAGES 0)']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.status, 'MBOX', '(MESSAGES)')), 1)) assert ('OK', [b'DELETE completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.delete, 'MBOX')), 1)) assert ('NO', [b'STATUS completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.status, 'MBOX', '(MESSAGES)')), 1)) @pytest.mark.asyncio async def test_rename_mailbox(with_server): with_server.receive(Mail.create(['user'])) imap_client = await login_user('user', 'pass') assert ('NO', [b'STATUS completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.status, 'MBOX', '(MESSAGES)')), 1)) assert ('OK', [b'RENAME completed.']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.rename, 'INBOX', 'MBOX')), 1)) assert ('OK', [b'MBOX (MESSAGES 1)']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.status, 'MBOX', '(MESSAGES)')), 1)) @pytest.mark.asyncio async def test_list(with_server): imap_client = await login_user('user', 'pass') assert ('OK', [b'() "/" Drafts', b'() "/" INBOX', b'() "/" Sent', b'() "/" Trash']) == \ (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.list, '""', '*')), 1)) @pytest.mark.asyncio async def test_append(with_server): imap_client = await login_user('user@mail', 'pass') assert ('OK', [b'0']) == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select, 'INBOX', readonly=True)), 2)) msg = Mail.create(['user@mail'], subject='append msg', content='do you see me ?') assert 'OK' == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial( imap_client.append, 'INBOX', 'FOO BAR', datetime.now(tz=utc), msg.as_bytes())), 2))[0] assert ('OK', [b'1']) == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.select, 'INBOX', readonly=True)), 2)) @pytest.mark.asyncio async def test_logout(with_server): imap_client = await login_user('user', 'pass') result, data = await asyncio.wait_for(asyncio.get_running_loop().run_in_executor(None, imap_client.logout), 1) assert 'BYE' == result # uhh ? assert [b'Logging out'] == data assert LOGOUT == with_server.get_connection('user').state @pytest.mark.asyncio async def test_rfc5032_within(with_server): with_server.receive(Mail.create(['user'], date=datetime.now(tz=utc) - timedelta(seconds=84600 * 3))) # 1 with_server.receive(Mail.create(['user'], date=datetime.now(tz=utc) - timedelta(seconds=84600))) # 2 with_server.receive(Mail.create(['user'])) # 3 imap_client = await login_user('user', 'pass', select=True) assert [b'2 3'] == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.search, 'utf-8', 'YOUNGER', '84700')), 1))[1] assert [b'1'] == (await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.search, 'utf-8', 'OLDER', '84700')), 1))[1] @pytest.mark.asyncio async def test_getquotaroot(with_server): imap_client = await login_user('user', 'pass') with_server.receive(Mail.create(['user'])) assert ('OK', [[b'INBOX INBOX'], [b'INBOX (STORAGE 292 5000)']]) == \ (await asyncio.wait_for(asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.getquotaroot, 'INBOX')), 1)) @pytest.mark.asyncio() async def test_client_can_connect_to_server_over_ssl(with_ssl, with_ssl_server): ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=with_ssl[1]) pending_imap = asyncio.get_running_loop().run_in_executor(None, functools.partial( imaplib.IMAP4_SSL, host='127.0.0.1', port=12345, ssl_context=ssl_context) ) imap_client = await asyncio.wait_for(pending_imap, 1) assert 'NONAUTH' == imap_client.state aioimaplib-2.0.1/tests/test_imapserver_imaplib2.py000066400000000000000000000042771474216043600223500ustar00rootroot00000000000000# aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import asyncio import functools import time from unittest.mock import Mock from imaplib2 import imaplib2 from aioimaplib.imap_testing_server import Mail, IDLE, SELECTED from tests.server_fixture import with_server, login_user import pytest @pytest.mark.flaky(reruns=5) @pytest.mark.asyncio() async def test_idle(with_server): imap_client = await login_user('user', 'pass', select=True, lib=imaplib2.IMAP4) idle_callback = Mock() asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.idle, callback=idle_callback)) await asyncio.wait_for(with_server.get_connection('user').wait(IDLE), 1) asyncio.get_running_loop().run_in_executor(None, functools.partial(with_server.receive, Mail.create(to=['user'], mail_from='me', subject='hello'))) await asyncio.wait_for(with_server.get_connection('user').wait(SELECTED), 5) time.sleep(0.2) # eurk hate sleeps but I don't know how to wait for the lib to receive end of IDLE idle_callback.assert_called_once() @pytest.mark.asyncio() async def test_login_twice(with_server): with pytest.raises(imaplib2.IMAP4.error) as expected: imap_client = await login_user('user', 'pass', lib=imaplib2.IMAP4) await asyncio.wait_for( asyncio.get_running_loop().run_in_executor(None, functools.partial(imap_client.login, 'user', 'pass')), 1) assert expected == 'command LOGIN illegal in state AUTH' aioimaplib-2.0.1/tests/test_ssl_cert.py000066400000000000000000000043501474216043600202220ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import os from OpenSSL import crypto from unittest import TestCase from tests.ssl_cert import create_temp_self_signed_cert class TestSslCert(TestCase): def setUp(self): self.cert, self.key = create_temp_self_signed_cert() def tearDown(self): os.remove(self.cert) os.remove(self.key) def test_create_temp_self_signed_cert_returns_two_file_names(self): assert os.path.isfile(self.cert) assert os.path.isfile(self.key) def test_create_temp_self_signed_cert_returns_cert_as_first_value(self): with open(self.cert, 'rb') as f: data = f.read() try: crypto.load_certificate(crypto.FILETYPE_PEM, data) except crypto.Error: self.fail('First file is not a certificate') def test_create_temp_self_signed_cert_returns_key_as_second_value(self): with open(self.key, 'rb') as f: data = f.read() try: crypto.load_privatekey(crypto.FILETYPE_PEM, data) except crypto.Error: self.fail('First file is not a key') def test_create_temp_self_signed_cert_can_generate_more_than_one_pair_of_keys(self): (second_cert, second_key) = create_temp_self_signed_cert() assert self.cert != second_cert assert os.path.isfile(second_cert) assert self.key != second_key assert os.path.isfile(second_key) os.remove(second_cert) os.remove(second_key) aioimaplib-2.0.1/tests/test_utils.py000066400000000000000000000042541474216043600175470ustar00rootroot00000000000000# -*- coding: utf-8 -*- # aioimaplib : an IMAPrev4 lib using python asyncio # Copyright (C) 2016 Bruno Thomas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import pytest from unittest import TestCase from aioimaplib import quoted, arguments_rfs2971, ID_MAX_FIELD_LEN, ID_MAX_VALUE_LEN class TestQuote(TestCase): def test_quote_encloses_string_in_dquote_character(self): assert '"hello"' == quoted('hello') def test_quote_escapes_dquote_character(self): assert '"hello\\"world"' == quoted('hello"world') def test_quote_escapes_backlash_character(self): assert '"hello\\\\world"' == quoted('hello\\world') def test_quote_returns_str_when_input_is_str(self): assert isinstance(quoted('hello'), str) class TestArgument(TestCase): def test_arguments_rfs2971_empty(self): assert ['NIL'] == arguments_rfs2971() def test_arguments_rfs2971_with_kwargs(self): assert ['(', '"name"', '"test"', ')'] == arguments_rfs2971(name='test') def test_arguments_rfs2971_with_max_items(self): with pytest.raises(ValueError): fields = range(31) arguments_rfs2971(**{str(field): field for field in fields}) def test_arguments_rfs2971_with_max_field_length(self): with pytest.raises(ValueError): field = 'test' * (ID_MAX_FIELD_LEN + 1) arguments_rfs2971(**{field: 'test'}) def test_arguments_rfs2971_with_max_value_length(self): with pytest.raises(ValueError): value = 'test' * (ID_MAX_VALUE_LEN + 1) arguments_rfs2971(field=value)