Skip to main content

tail -f utility library providing both sync and async interfaces

Project description

async-tail

CI Coverage pypi license

Asynchronous tailing library written in Rust.


Python wrapper around Rust linemux library, which uses the notify cross-platform filesystem notification library.

Uses PyO3 Rust bindings and PyO3-asyncio to manage Rust/Python event loops lifecycles.

Installation

async-tail requires Python 3.7 - 3.11.

pip install async-tail

Binaries are available for:

  • Linux: x86_64, aarch64, i686, armv7l, musl-x86_64, musl-aarch64, ppc64le & s390x
  • MacOS: x86_64 & arm64 (except python 3.7)
  • Windows: To be done

Otherwise, you can install from source which requires Rust stable to be installed.

Usage

Here are some examples of what async-tail can do:

tail Usage

from async_tail import tail

for line in tail('./path/to/file.log', './path/to/file_2.log'):
    print(line)

atail Usage

import asyncio
from async_tail import atail

async def main():
    async for line in atail('/path/to/file.txt', '/path/to/file_2.txt'):
        print(line)

asyncio.run(main())

Notes

async-tail is a way for me to learn Rust and experiment Rust bindings from Python. It is inspired from the great Samuel COLVIN's work on watchfiles, which provides a Python wrapper around Rust notify crate. This is still under development. More things will come:

  • Write tests
  • Setup proper CI
  • Build wheels for Windows
  • Build and expose docs
  • Provide benchmarks

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

async_tail-0.2.0.tar.gz (17.8 kB view hashes)

Uploaded Source

Built Distributions

async_tail-0.2.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ x86-64

async_tail-0.2.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ ARM64

async_tail-0.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

async_tail-0.2.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

async_tail-0.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (661.6 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

async_tail-0.2.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl (673.7 kB view hashes)

Uploaded PyPy macOS 10.7+ x86-64

async_tail-0.2.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ x86-64

async_tail-0.2.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ ARM64

async_tail-0.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

async_tail-0.2.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

async_tail-0.2.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (661.6 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

async_tail-0.2.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl (673.7 kB view hashes)

Uploaded PyPy macOS 10.7+ x86-64

async_tail-0.2.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ x86-64

async_tail-0.2.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ ARM64

async_tail-0.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

async_tail-0.2.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

async_tail-0.2.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl (661.3 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

async_tail-0.2.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl (672.3 kB view hashes)

Uploaded PyPy macOS 10.7+ x86-64

async_tail-0.2.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ x86-64

async_tail-0.2.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded PyPy musllinux: musl 1.1+ ARM64

async_tail-0.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-pp37-pypy37_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

async_tail-0.2.0-pp37-pypy37_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

async_tail-0.2.0-pp37-pypy37_pp73-macosx_11_0_arm64.whl (662.9 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

async_tail-0.2.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl (674.4 kB view hashes)

Uploaded PyPy macOS 10.7+ x86-64

async_tail-0.2.0-cp312-cp312-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

async_tail-0.2.0-cp312-cp312-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

async_tail-0.2.0-cp312-cp312-manylinux_2_24_armv7l.whl (1.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.24+ ARMv7l

async_tail-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

async_tail-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.12+ i686

async_tail-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (660.5 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

async_tail-0.2.0-cp312-cp312-macosx_10_7_x86_64.whl (672.2 kB view hashes)

Uploaded CPython 3.12 macOS 10.7+ x86-64

async_tail-0.2.0-cp311-cp311-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

async_tail-0.2.0-cp311-cp311-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

async_tail-0.2.0-cp311-cp311-manylinux_2_24_armv7l.whl (1.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ ARMv7l

async_tail-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

async_tail-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.12+ i686

async_tail-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (660.6 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

async_tail-0.2.0-cp311-cp311-macosx_10_7_x86_64.whl (672.2 kB view hashes)

Uploaded CPython 3.11 macOS 10.7+ x86-64

async_tail-0.2.0-cp310-cp310-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

async_tail-0.2.0-cp310-cp310-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

async_tail-0.2.0-cp310-cp310-manylinux_2_24_armv7l.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ ARMv7l

async_tail-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

async_tail-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

async_tail-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (660.6 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

async_tail-0.2.0-cp310-cp310-macosx_10_7_x86_64.whl (672.2 kB view hashes)

Uploaded CPython 3.10 macOS 10.7+ x86-64

async_tail-0.2.0-cp39-cp39-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

async_tail-0.2.0-cp39-cp39-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

async_tail-0.2.0-cp39-cp39-manylinux_2_24_armv7l.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ ARMv7l

async_tail-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

async_tail-0.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

async_tail-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (661.2 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

async_tail-0.2.0-cp39-cp39-macosx_10_7_x86_64.whl (672.6 kB view hashes)

Uploaded CPython 3.9 macOS 10.7+ x86-64

async_tail-0.2.0-cp38-cp38-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

async_tail-0.2.0-cp38-cp38-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

async_tail-0.2.0-cp38-cp38-manylinux_2_24_armv7l.whl (1.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ ARMv7l

async_tail-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

async_tail-0.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

async_tail-0.2.0-cp38-cp38-macosx_11_0_arm64.whl (660.9 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

async_tail-0.2.0-cp38-cp38-macosx_10_7_x86_64.whl (671.6 kB view hashes)

Uploaded CPython 3.8 macOS 10.7+ x86-64

async_tail-0.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

async_tail-0.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ ARM64

async_tail-0.2.0-cp37-cp37m-manylinux_2_24_armv7l.whl (1.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ ARMv7l

async_tail-0.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

async_tail-0.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ s390x

async_tail-0.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64le

async_tail-0.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

async_tail-0.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

async_tail-0.2.0-cp37-cp37m-macosx_11_0_arm64.whl (661.4 kB view hashes)

Uploaded CPython 3.7m macOS 11.0+ ARM64

async_tail-0.2.0-cp37-cp37m-macosx_10_7_x86_64.whl (671.6 kB view hashes)

Uploaded CPython 3.7m macOS 10.7+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page