diff options
author | CoprDistGit <infra@openeuler.org> | 2023-03-09 13:02:32 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-03-09 13:02:32 +0000 |
commit | 554a17b23e37127d945ff2cffbe7c007cf3c1794 (patch) | |
tree | c6a6491ccaa68eb263f1f6f02dae3ac896cdc5a1 | |
parent | ef317a5074a1bd378600c902226c6880d2137683 (diff) |
automatic import of python-inotify_simple
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-inotify_simple.spec | 414 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 416 insertions, 0 deletions
@@ -0,0 +1 @@ +/inotify_simple-1.3.5.tar.gz diff --git a/python-inotify_simple.spec b/python-inotify_simple.spec new file mode 100644 index 0000000..540bc51 --- /dev/null +++ b/python-inotify_simple.spec @@ -0,0 +1,414 @@ +%global _empty_manifest_terminate_build 0 +Name: python-inotify-simple +Version: 1.3.5 +Release: 1 +Summary: A simple wrapper around inotify. No fancy bells and whistles, just a literal wrapper with ctypes. Under 100 lines of code! +License: BSD +URL: https://github.com/chrisjbillington/inotify_simple +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/51/41/59ca6011f5463d5e5eefcfed2e7fe470922d3a958b7f3aad95eda208d7d3/inotify_simple-1.3.5.tar.gz +BuildArch: noarch + + +%description +# inotify_simple 1.3 + +`inotify_simple` is a simple Python wrapper around +[inotify](http://man7.org/linux/man-pages/man7/inotify.7.html). +No fancy bells and whistles, just a literal wrapper with ctypes. Only \~100 +lines of code! + +`inotify_init1()` is wrapped as a file-like object, `INotify()`, holding the inotify +file descriptor. `INotify().read()` reads available data from the file descriptor and +returns events as `namedtuple` objects after unpacking them with the `struct` module. +`inotify_add_watch()` and `inotify_rm_watch()` are wrapped with no changes at all, +taking and returning watch descriptor integers that calling code is expected to keep +track of itself, just as one would use `inotify` from C. Works with Python 2.7 and +Python >= 3.2. + +[View on PyPI](http://pypi.python.org/pypi/inotify_simple) | +[Fork me on github](https://github.com/chrisjbillington/inotify_simple) | +[Read the docs](http://inotify_simple.readthedocs.org) + + +## Installation + +to install `inotify_simple`, run: + +``` +$ pip3 install inotify_simple +``` + +or to install from source: + +``` +$ python3 setup.py install +``` + +Note: If on Python < 3.4, you'll need the backported [enum34 +module](https://pypi.python.org/pypi/enum34). + +## Introduction + +There are many inotify python wrappers out there. [I found them all +unsatisfactory](https://xkcd.com/927/). Most are far too high-level for my +tastes, and the supposed convenience they provide actually limits one from +using inotify in ways other than those the author imagined. Others are C +extensions, requiring compilation for different platforms and Python versions, +rather than a pure python module using ctypes. This one is pretty low-level +and really just does what inotify itself does and nothing more. So hopefully +if I've written it right, it will remain functional well into the future with +no changes, recompilation or attention on my part. + +## Example usage + +```python +import os +from inotify_simple import INotify, flags + +os.mkdir('/tmp/inotify_test') + +inotify = INotify() +watch_flags = flags.CREATE | flags.DELETE | flags.MODIFY | flags.DELETE_SELF +wd = inotify.add_watch('/tmp/inotify_test', watch_flags) + +# Now create, delete and modify some files in the directory being monitored: +os.chdir('/tmp/inotify_test') +# CREATE event for a directory: +os.system('mkdir foo') +# CREATE event for a file: +os.system('echo hello > test.txt') +# MODIFY event for the file: +os.system('echo world >> test.txt') +# DELETE event for the file +os.system('rm test.txt') +# DELETE event for the directory +os.system('rmdir foo') +os.chdir('/tmp') +# DELETE_SELF on the original directory. # Also generates an IGNORED event +# indicating the watch was removed. +os.system('rmdir inotify_test') + +# And see the corresponding events: +for event in inotify.read(): + print(event) + for flag in flags.from_mask(event.mask): + print(' ' + str(flag)) +``` + +This outputs the following: +``` +Event(wd=1, mask=1073742080, cookie=0, name=u'foo') + flags.CREATE + flags.ISDIR +Event(wd=1, mask=256, cookie=0, name=u'test.txt') + flags.CREATE +Event(wd=1, mask=2, cookie=0, name=u'test.txt') + flags.MODIFY +Event(wd=1, mask=512, cookie=0, name=u'test.txt') + flags.DELETE +Event(wd=1, mask=1073742336, cookie=0, name=u'foo') + flags.DELETE + flags.ISDIR +Event(wd=1, mask=1024, cookie=0, name=u'') + flags.DELETE_SELF +Event(wd=1, mask=32768, cookie=0, name=u'') + flags.IGNORED +``` + +Note that the flags, since they are defined with an `enum.IntEnum`, print as +what they are called rather than their integer values. However they are still +just integers and so can be bitwise-ANDed and ORed etc with masks etc. The +`flags.from_mask()` method bitwise-ANDs a mask with all possible flags and +returns a list of matches. This is for convenience and useful for debugging +which events are coming through, but performance critical code should +generally bitwise-AND masks with flags of interest itself so as to not do +unnecessary checks. + +[See here](http://inotify_simple.readthedocs.org) for more. + +%package -n python3-inotify-simple +Summary: A simple wrapper around inotify. No fancy bells and whistles, just a literal wrapper with ctypes. Under 100 lines of code! +Provides: python-inotify-simple +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-inotify-simple +# inotify_simple 1.3 + +`inotify_simple` is a simple Python wrapper around +[inotify](http://man7.org/linux/man-pages/man7/inotify.7.html). +No fancy bells and whistles, just a literal wrapper with ctypes. Only \~100 +lines of code! + +`inotify_init1()` is wrapped as a file-like object, `INotify()`, holding the inotify +file descriptor. `INotify().read()` reads available data from the file descriptor and +returns events as `namedtuple` objects after unpacking them with the `struct` module. +`inotify_add_watch()` and `inotify_rm_watch()` are wrapped with no changes at all, +taking and returning watch descriptor integers that calling code is expected to keep +track of itself, just as one would use `inotify` from C. Works with Python 2.7 and +Python >= 3.2. + +[View on PyPI](http://pypi.python.org/pypi/inotify_simple) | +[Fork me on github](https://github.com/chrisjbillington/inotify_simple) | +[Read the docs](http://inotify_simple.readthedocs.org) + + +## Installation + +to install `inotify_simple`, run: + +``` +$ pip3 install inotify_simple +``` + +or to install from source: + +``` +$ python3 setup.py install +``` + +Note: If on Python < 3.4, you'll need the backported [enum34 +module](https://pypi.python.org/pypi/enum34). + +## Introduction + +There are many inotify python wrappers out there. [I found them all +unsatisfactory](https://xkcd.com/927/). Most are far too high-level for my +tastes, and the supposed convenience they provide actually limits one from +using inotify in ways other than those the author imagined. Others are C +extensions, requiring compilation for different platforms and Python versions, +rather than a pure python module using ctypes. This one is pretty low-level +and really just does what inotify itself does and nothing more. So hopefully +if I've written it right, it will remain functional well into the future with +no changes, recompilation or attention on my part. + +## Example usage + +```python +import os +from inotify_simple import INotify, flags + +os.mkdir('/tmp/inotify_test') + +inotify = INotify() +watch_flags = flags.CREATE | flags.DELETE | flags.MODIFY | flags.DELETE_SELF +wd = inotify.add_watch('/tmp/inotify_test', watch_flags) + +# Now create, delete and modify some files in the directory being monitored: +os.chdir('/tmp/inotify_test') +# CREATE event for a directory: +os.system('mkdir foo') +# CREATE event for a file: +os.system('echo hello > test.txt') +# MODIFY event for the file: +os.system('echo world >> test.txt') +# DELETE event for the file +os.system('rm test.txt') +# DELETE event for the directory +os.system('rmdir foo') +os.chdir('/tmp') +# DELETE_SELF on the original directory. # Also generates an IGNORED event +# indicating the watch was removed. +os.system('rmdir inotify_test') + +# And see the corresponding events: +for event in inotify.read(): + print(event) + for flag in flags.from_mask(event.mask): + print(' ' + str(flag)) +``` + +This outputs the following: +``` +Event(wd=1, mask=1073742080, cookie=0, name=u'foo') + flags.CREATE + flags.ISDIR +Event(wd=1, mask=256, cookie=0, name=u'test.txt') + flags.CREATE +Event(wd=1, mask=2, cookie=0, name=u'test.txt') + flags.MODIFY +Event(wd=1, mask=512, cookie=0, name=u'test.txt') + flags.DELETE +Event(wd=1, mask=1073742336, cookie=0, name=u'foo') + flags.DELETE + flags.ISDIR +Event(wd=1, mask=1024, cookie=0, name=u'') + flags.DELETE_SELF +Event(wd=1, mask=32768, cookie=0, name=u'') + flags.IGNORED +``` + +Note that the flags, since they are defined with an `enum.IntEnum`, print as +what they are called rather than their integer values. However they are still +just integers and so can be bitwise-ANDed and ORed etc with masks etc. The +`flags.from_mask()` method bitwise-ANDs a mask with all possible flags and +returns a list of matches. This is for convenience and useful for debugging +which events are coming through, but performance critical code should +generally bitwise-AND masks with flags of interest itself so as to not do +unnecessary checks. + +[See here](http://inotify_simple.readthedocs.org) for more. + +%package help +Summary: Development documents and examples for inotify-simple +Provides: python3-inotify-simple-doc +%description help +# inotify_simple 1.3 + +`inotify_simple` is a simple Python wrapper around +[inotify](http://man7.org/linux/man-pages/man7/inotify.7.html). +No fancy bells and whistles, just a literal wrapper with ctypes. Only \~100 +lines of code! + +`inotify_init1()` is wrapped as a file-like object, `INotify()`, holding the inotify +file descriptor. `INotify().read()` reads available data from the file descriptor and +returns events as `namedtuple` objects after unpacking them with the `struct` module. +`inotify_add_watch()` and `inotify_rm_watch()` are wrapped with no changes at all, +taking and returning watch descriptor integers that calling code is expected to keep +track of itself, just as one would use `inotify` from C. Works with Python 2.7 and +Python >= 3.2. + +[View on PyPI](http://pypi.python.org/pypi/inotify_simple) | +[Fork me on github](https://github.com/chrisjbillington/inotify_simple) | +[Read the docs](http://inotify_simple.readthedocs.org) + + +## Installation + +to install `inotify_simple`, run: + +``` +$ pip3 install inotify_simple +``` + +or to install from source: + +``` +$ python3 setup.py install +``` + +Note: If on Python < 3.4, you'll need the backported [enum34 +module](https://pypi.python.org/pypi/enum34). + +## Introduction + +There are many inotify python wrappers out there. [I found them all +unsatisfactory](https://xkcd.com/927/). Most are far too high-level for my +tastes, and the supposed convenience they provide actually limits one from +using inotify in ways other than those the author imagined. Others are C +extensions, requiring compilation for different platforms and Python versions, +rather than a pure python module using ctypes. This one is pretty low-level +and really just does what inotify itself does and nothing more. So hopefully +if I've written it right, it will remain functional well into the future with +no changes, recompilation or attention on my part. + +## Example usage + +```python +import os +from inotify_simple import INotify, flags + +os.mkdir('/tmp/inotify_test') + +inotify = INotify() +watch_flags = flags.CREATE | flags.DELETE | flags.MODIFY | flags.DELETE_SELF +wd = inotify.add_watch('/tmp/inotify_test', watch_flags) + +# Now create, delete and modify some files in the directory being monitored: +os.chdir('/tmp/inotify_test') +# CREATE event for a directory: +os.system('mkdir foo') +# CREATE event for a file: +os.system('echo hello > test.txt') +# MODIFY event for the file: +os.system('echo world >> test.txt') +# DELETE event for the file +os.system('rm test.txt') +# DELETE event for the directory +os.system('rmdir foo') +os.chdir('/tmp') +# DELETE_SELF on the original directory. # Also generates an IGNORED event +# indicating the watch was removed. +os.system('rmdir inotify_test') + +# And see the corresponding events: +for event in inotify.read(): + print(event) + for flag in flags.from_mask(event.mask): + print(' ' + str(flag)) +``` + +This outputs the following: +``` +Event(wd=1, mask=1073742080, cookie=0, name=u'foo') + flags.CREATE + flags.ISDIR +Event(wd=1, mask=256, cookie=0, name=u'test.txt') + flags.CREATE +Event(wd=1, mask=2, cookie=0, name=u'test.txt') + flags.MODIFY +Event(wd=1, mask=512, cookie=0, name=u'test.txt') + flags.DELETE +Event(wd=1, mask=1073742336, cookie=0, name=u'foo') + flags.DELETE + flags.ISDIR +Event(wd=1, mask=1024, cookie=0, name=u'') + flags.DELETE_SELF +Event(wd=1, mask=32768, cookie=0, name=u'') + flags.IGNORED +``` + +Note that the flags, since they are defined with an `enum.IntEnum`, print as +what they are called rather than their integer values. However they are still +just integers and so can be bitwise-ANDed and ORed etc with masks etc. The +`flags.from_mask()` method bitwise-ANDs a mask with all possible flags and +returns a list of matches. This is for convenience and useful for debugging +which events are coming through, but performance critical code should +generally bitwise-AND masks with flags of interest itself so as to not do +unnecessary checks. + +[See here](http://inotify_simple.readthedocs.org) for more. + +%prep +%autosetup -n inotify-simple-1.3.5 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-inotify-simple -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 1.3.5-1 +- Package Spec generated @@ -0,0 +1 @@ +b7ca2ffa816dea85ef5023cde4e72b8b inotify_simple-1.3.5.tar.gz |