Metadata-Version: 1.1
Name: aiofile
Version: 1.4.2
Summary: Asynchronous file operations.
Home-page: http://github.com/mosquito/aiofile
Author: Dmitry Orlov <me@mosquito.su>
Author-email: me@mosquito.su
License: Apache 2
Description: AIOFile
        =======
        
        .. image:: https://travis-ci.org/mosquito/aiofile.svg
            :target: https://travis-ci.org/mosquito/aiofile
            :alt: Travis CI
        
        .. image:: https://img.shields.io/pypi/v/aiofile.svg
            :target: https://pypi.python.org/pypi/aiofile/
            :alt: Latest Version
        
        .. image:: https://img.shields.io/pypi/wheel/aiofile.svg
            :target: https://pypi.python.org/pypi/aiofile/
        
        .. image:: https://img.shields.io/pypi/pyversions/aiofile.svg
            :target: https://pypi.python.org/pypi/aiofile/
        
        .. image:: https://img.shields.io/pypi/l/aiofile.svg
            :target: https://pypi.python.org/pypi/aiofile/
        
        
        Real asynchronous file operations with asyncio support.
        
        
        Status
        ------
        
        Development - Stable
        
        
        Features
        --------
        
        * AIOFile has no internal pointer. You should pass ``offset`` and ``chunk_size`` for each operation or use helpers (Reader or Writer).
        * For POSIX (MacOS X and Linux) using implementaion based on `aio.h`_ (with `Cython`_).
        * For non-POSIX systems using thread-based implementation
        
        .. _aio.h: https://github.com/torvalds/linux/blob/master/include/linux/aio.h
        .. _Cython: http://cython.org
        
        
        Code examples
        -------------
        
        All code examples requires python 3.5+.
        
        Write and Read
        ++++++++++++++
        
        .. code-block:: python
        
            import asyncio
            from aiofile import AIOFile, Reader, Writer
        
        
            async def main():
                async with AIOFile("/tmp/hello.txt", 'w+') as afp:
                    await afp.write("Hello ")
                    await afp.write("world", offset=7)
                    await afp.fsync()
        
                    print(await afp.read())
        
        
            loop = asyncio.get_event_loop()
            loop.run_until_complete(main())
        
        
        Write and read with helpers
        +++++++++++++++++++++++++++
        
        .. code-block:: python
        
            import asyncio
            from aiofile import AIOFile, Reader, Writer
        
        
            async def main():
                async with AIOFile("/tmp/hello.txt", 'w+') as afp:
                    writer = Writer(afp)
                    reader = Reader(afp, chunk_size=8)
        
                    await writer("Hello")
                    await writer(" ")
                    await writer("World")
                    await afp.fsync()
        
                    async for chunk in reader:
                        print(chunk)
        
        
            loop = asyncio.get_event_loop()
            loop.run_until_complete(main())
        
        
        
        Read file line by line
        ++++++++++++++++++++++
        
        .. code-block:: python
        
            import asyncio
            from aiofile import AIOFile, LineReader, Writer
        
        
            async def main():
                async with AIOFile("/tmp/hello.txt", 'w+') as afp:
                    writer = Writer(afp)
        
                    await writer("Hello")
                    await writer(" ")
                    await writer("World")
                    await writer("\n")
                    await writer("\n")
                    await writer("From async world")
                    await afp.fsync()
        
                    async for line in LineReader(afp):
                        print(line)
        
        
            loop = asyncio.get_event_loop()
            loop.run_until_complete(main())
        
        
        Reading and Writing for the unix pipe
        +++++++++++++++++++++++++++++++++++++
        
        .. code-block:: python
        
            import os
            import asyncio
            from aiofile import AIOFile, Reader, Writer
        
        
            async def reader(fname):
                print('Start reader')
                async with AIOFile(fname, 'r') as afp:
                    while True:
                        # Maximum expected chunk size, must be passed.
                        # Otherwise will be read zero bytes
                        # (because unix pipe has zero size)
                        data = await afp.read(4096)
                        print(data)
        
        
            async def writer(fname):
                print('Start writer')
                async with AIOFile(fname, 'w') as afp:
                    while True:
                        await asyncio.sleep(1)
                        await afp.write('%06f' % loop.time())
        
        
            async def main():
                fifo_name = "/tmp/test.fifo"
        
                if os.path.exists(fifo_name):
                    os.remove(fifo_name)
        
                os.mkfifo(fifo_name)
        
                # Starting two readers and one writer, but only one reader
                # will be reading at the same time.
                await asyncio.gather(
                    reader(fifo_name),
                    reader(fifo_name),
                    writer(fifo_name),
                )
        
        
            loop = asyncio.new_event_loop()
            asyncio.set_event_loop(loop)
        
            try:
                loop.run_until_complete(main())
            finally:
                # Shutting down and closing file descriptors after interrupt
                loop.run_until_complete(loop.shutdown_asyncgens())
                loop.close()
                print('Exited')
        
Keywords: aio,python,asyncio,cython,fileio,io
Platform: POSIX
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Natural Language :: Russian
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: System
Classifier: Topic :: System :: Operating System
Provides: aiofile
