Linux sagir-us1.hostever.us 5.14.0-570.51.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 8 09:41:34 EDT 2025 x86_64
LiteSpeed
Server IP : 104.247.108.91 & Your IP : 216.73.216.105
Domains : 74 Domain
User : georgeto
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
python3-llfuse /
html /
.doctrees /
Delete
Unzip
Name
Size
Permission
Date
Action
about.doctree
10.45
KB
-rw-r--r--
2021-02-01 20:07
changes.doctree
78.18
KB
-rw-r--r--
2021-02-01 20:07
data.doctree
45.45
KB
-rw-r--r--
2021-02-01 20:22
environment.pickle
1.64
MB
-rw-r--r--
2021-02-01 20:22
example.doctree
79.57
KB
-rw-r--r--
2021-02-01 20:07
fuse_api.doctree
34.19
KB
-rw-r--r--
2021-02-01 20:22
general.doctree
20.07
KB
-rw-r--r--
2021-02-01 20:07
gotchas.doctree
5.36
KB
-rw-r--r--
2021-02-01 20:07
index.doctree
4.38
KB
-rw-r--r--
2021-02-01 20:07
install.doctree
19.21
KB
-rw-r--r--
2021-02-01 20:07
lock.doctree
18.36
KB
-rw-r--r--
2021-02-01 20:22
operations.doctree
146.99
KB
-rw-r--r--
2021-02-01 20:22
util.doctree
20.38
KB
-rw-r--r--
2021-02-01 20:22
Save
Rename
�� �sphinx.addnodes��document���)��}�(� rawsource�� ��children�]��docutils.nodes��section���)��}�(hhh]�(h �title���)��}�(h� Changelog�h]�h �Text���� Changelog�����}�(hh�parent�hhh�source�N�line�Nuba� attributes�}�(�ids�]��classes�]��names�]��dupnames�]��backrefs�]�u�tagname�hhhhhh�Changes.rst�hKubh � paragraph���)��}�(h��**WARNING**: Python-LLFUSE is no longer actively developed. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the pyfuse3_ module instead.�h]�(h �strong���)��}�(h�**WARNING**�h]�h�WARNING�����}�(hhhh4ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h2hh.ubh��: Python-LLFUSE is no longer actively developed. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the �����}�(h��: Python-LLFUSE is no longer actively developed. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the �hh.hhhNhNubh �problematic���)��}�(h�pyfuse3_�h]�h�pyfuse3_�����}�(hhhhIubah}�(h ]��id2�ah"]�h$]�h&]�h(]��refid��id1�uh*hGhh.hhhNhNubh� module instead.�����}�(h� module instead.�hh.hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhhhhubh)��}�(hhh]�(h)��}�(h�Release 1.4.1 (2021-01-31)�h]�h�Release 1.4.1 (2021-01-31)�����}�(hhjhhhhhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhhehhhh+hKubh �bullet_list���)��}�(hhh]�h � list_item���)��}�(h�4timestamp rounding tests: avoid y2038 issue in test �h]�h-)��}�(h�3timestamp rounding tests: avoid y2038 issue in test�h]�h�3timestamp rounding tests: avoid y2038 issue in test�����}�(hh�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhh}ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hhxhhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]��bullet��*�uh*hvhh+hKhhehhubeh}�(h ]��release-1-4-1-2021-01-31�ah"]�h$]��release 1.4.1 (2021-01-31)�ah&]�h(]�uh*h hhhhhh+hKubh)��}�(hhh]�(h)��}�(h�Release 1.4.0 (2021-01-24)�h]�h�Release 1.4.0 (2021-01-24)�����}�(hh�hh�hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhh�hhhh+hKubhw)��}�(hhh]�(h|)��}�(h��Remove py2 and py3<3.5 support, minimum requirement is Python 3.5 now. If you are stuck on Python 2.x or < 3.5, use llfuse<1.4.0.�h]�h-)��}�(h��Remove py2 and py3<3.5 support, minimum requirement is Python 3.5 now. If you are stuck on Python 2.x or < 3.5, use llfuse<1.4.0.�h]�h��Remove py2 and py3<3.5 support, minimum requirement is Python 3.5 now. If you are stuck on Python 2.x or < 3.5, use llfuse<1.4.0.�����}�(hh�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hh�hhhh+hNubh|)��}�(h�fsetup.py: return rc=2 in error cases, fixes #52. implements same behaviour as pyfuse3 for these cases.�h]�h-)��}�(h�fsetup.py: return rc=2 in error cases, fixes #52. implements same behaviour as pyfuse3 for these cases.�h]�h�fsetup.py: return rc=2 in error cases, fixes #52. implements same behaviour as pyfuse3 for these cases.�����}�(hh�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hh�hhhh+hNubh|)��}�(h�BUse EACCES instead of EPERM for file permission errors, fixes #36.�h]�h-)��}�(hh�h]�h�BUse EACCES instead of EPERM for file permission errors, fixes #36.�����}�(hh�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhh�ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hh�hhhh+hNubh|)��}�(h�zFix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500, fixes #38.�h]�h-)��}�(h�zFix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500, fixes #38.�h]�h�zFix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500, fixes #38.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hh�hhhh+hNubh|)��}�(h�.Docs: add link to pyfuse3 porting hints ticket�h]�h-)��}�(hj h]�h�.Docs: add link to pyfuse3 porting hints ticket�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hh�hhhh+hNubh|)��}�(h�~Testing: - Add Power support (ppc64le) to travis CI. - Move CI to GitHub Actions, except ppc64le. - Test fixes for pytest 6. �h]�(h-)��}�(h�Testing:�h]�h�Testing:�����}�(hj5 hj3 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhj/ ubhw)��}�(hhh]�(h|)��}�(h�)Add Power support (ppc64le) to travis CI.�h]�h-)��}�(hjF h]�h�)Add Power support (ppc64le) to travis CI.�����}�(hjF hjH ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhjD ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjA ubh|)��}�(h�*Move CI to GitHub Actions, except ppc64le.�h]�h-)��}�(hj] h]�h�*Move CI to GitHub Actions, except ppc64le.�����}�(hj] hj_ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhj[ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjA ubh|)��}�(h�Test fixes for pytest 6. �h]�h-)��}�(h�Test fixes for pytest 6.�h]�h�Test fixes for pytest 6.�����}�(hjx hjv ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhjr ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjA ubeh}�(h ]�h"]�h$]�h&]�h(]�h��-�uh*hvhh+hKhj/ ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h{hh�hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKhh�hhubeh}�(h ]��release-1-4-0-2021-01-24�ah"]�h$]��release 1.4.0 (2021-01-24)�ah&]�h(]�uh*h hhhhhh+hKubh)��}�(hhh]�(h)��}�(h�Release 1.3.8 (2020-10-10)�h]�h�Release 1.3.8 (2020-10-10)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK"ubhw)��}�(hhh]�(h|)��}�(h�fix compilation on FreeBSD, #28�h]�h-)��}�(hj� h]�h�fix compilation on FreeBSD, #28�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK$hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�Aexport DEVELOPER_MODE=1 can be used to opt in (default is 0), #22�h]�h-)��}�(hj� h]�h�Aexport DEVELOPER_MODE=1 can be used to opt in (default is 0), #22�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK%hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�btwine-based pypi-uploading, Qubes OS support for GPG signing, see util/sdist-sign and pypi-upload �h]�h-)��}�(h�atwine-based pypi-uploading, Qubes OS support for GPG signing, see util/sdist-sign and pypi-upload�h]�h�atwine-based pypi-uploading, Qubes OS support for GPG signing, see util/sdist-sign and pypi-upload�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK&hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK$hj� hhubeh}�(h ]��release-1-3-8-2020-10-10�ah"]�h$]��release 1.3.8 (2020-10-10)�ah&]�h(]�uh*h hhhhhh+hK"ubh)��}�(hhh]�(h)��}�(h�Release 1.3.7 (2020-10-04)�h]�h�Release 1.3.7 (2020-10-04)�����}�(hj hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj hhhh+hK*ubhw)��}�(hhh]�h|)��}�(h�:Rebuild with Cython 0.29.21 for Python 3.9 compatibility. �h]�h-)��}�(h�9Rebuild with Cython 0.29.21 for Python 3.9 compatibility.�h]�h�9Rebuild with Cython 0.29.21 for Python 3.9 compatibility.�����}�(hj' hj% ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK,hj! ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK,hj hhubeh}�(h ]��release-1-3-7-2020-10-04�ah"]�h$]��release 1.3.7 (2020-10-04)�ah&]�h(]�uh*h hhhhhh+hK*ubh)��}�(hhh]�(h)��}�(h�Release 1.3.6 (2019-02-14)�h]�h�Release 1.3.6 (2019-02-14)�����}�(hjL hjJ hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhjG hhhh+hK/ubhw)��}�(hhh]�(h|)��}�(h�No change upload. �h]�h-)��}�(h�No change upload.�h]�h�No change upload.�����}�(hja hj_ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK1hj[ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjX hhhh+hNubh|)��}�(h��Python-LLFUSE is no longer actively maintained. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the pyfuse3_ module instead. �h]�h-)��}�(h��Python-LLFUSE is no longer actively maintained. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the pyfuse3_ module instead.�h]�(h�Python-LLFUSE is no longer actively maintained. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the �����}�(h�Python-LLFUSE is no longer actively maintained. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the �hjw ubhH)��}�(h�pyfuse3_�h]�h�pyfuse3_�����}�(hhhj� ubah}�(h ]��id4�ah"]�h$]�h&]�h(]��refid��id3�uh*hGhjw ubh� module instead.�����}�(h� module instead.�hjw ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK3hjs ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjX hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK1hjG hhubeh}�(h ]��release-1-3-6-2019-02-14�ah"]�h$]��release 1.3.6 (2019-02-14)�ah&]�h(]�uh*h hhhhhh+hK/ubh)��}�(hhh]�(h)��}�(h�Release 1.3.5 (2018-08-30)�h]�h�Release 1.3.5 (2018-08-30)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK8ubhw)��}�(hhh]�(h|)��}�(h�,Add `handle_signals` option to `llfuse.main`�h]�h-)��}�(hj� h]�(h�Add �����}�(h�Add �hj� ubh �pending_xref���)��}�(h�`handle_signals`�h]�h �literal���)��}�(hj� h]�h�handle_signals�����}�(hhhj� ubah}�(h ]�h"]�(�xref��py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc��changes�� refdomain�j� �reftype��obj��refexplicit���refwarn��� py:module��llfuse��py:class�N� reftarget��handle_signals�uh*j� hh+hK:hj� ubh� option to �����}�(h� option to �hj� ubj� )��}�(h� `llfuse.main`�h]�j� )��}�(hj h]�h�llfuse.main�����}�(hhhj ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.main�uh*j� hh+hK:hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK:hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�,Several fixes to `examples/passthroughfs.py`�h]�h-)��}�(hj- h]�(h�Several fixes to �����}�(h�Several fixes to �hj/ ubj� )��}�(h�`examples/passthroughfs.py`�h]�j� )��}�(hj9 h]�h�examples/passthroughfs.py�����}�(hhhj; ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj7 ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�jE �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �examples/passthroughfs.py�uh*j� hh+hK;hj/ ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK;hj+ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�Now compatible with Python 3.7 �h]�h-)��}�(h�Now compatible with Python 3.7�h]�h�Now compatible with Python 3.7�����}�(hji hjg ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK<hjc ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK:hj� hhubeh}�(h ]��release-1-3-5-2018-08-30�ah"]�h$]��release 1.3.5 (2018-08-30)�ah&]�h(]�uh*h hhhhhh+hK8ubh)��}�(hhh]�(h)��}�(h�Release 1.3.4 (2018-04-29)�h]�h�Release 1.3.4 (2018-04-29)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK?ubhw)��}�(hhh]�h|)��}�(h�&No-change rebuild with Cython 0.28.2. �h]�h-)��}�(h�%No-change rebuild with Cython 0.28.2.�h]�h�%No-change rebuild with Cython 0.28.2.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKAhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKAhj� hhubeh}�(h ]��release-1-3-4-2018-04-29�ah"]�h$]��release 1.3.4 (2018-04-29)�ah&]�h(]�uh*h hhhhhh+hK?ubh)��}�(hhh]�(h)��}�(h�Release 1.3.3 (2018-03-31)�h]�h�Release 1.3.3 (2018-03-31)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hKDubhw)��}�(hhh]�(h|)��}�(h�DDropped pytest-catchlog dependency and add support for Pytest 3.3.0.�h]�h-)��}�(hj� h]�h�DDropped pytest-catchlog dependency and add support for Pytest 3.3.0.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKFhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�Minor bugfixes. �h]�h-)��}�(h�Minor bugfixes.�h]�h�Minor bugfixes.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKGhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKFhj� hhubeh}�(h ]��release-1-3-3-2018-03-31�ah"]�h$]��release 1.3.3 (2018-03-31)�ah&]�h(]�uh*h hhhhhh+hKDubh)��}�(hhh]�(h)��}�(h�Release 1.3.2 (2017-11-13)�h]�h�Release 1.3.2 (2017-11-13)�����}�(hj hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj hhhh+hKJubhw)��}�(hhh]�h|)��}�(h�Minor bugfixes. �h]�h-)��}�(h�Minor bugfixes.�h]�h�Minor bugfixes.�����}�(hj. hj, ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKLhj( ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj% hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKLhj hhubeh}�(h ]��release-1-3-2-2017-11-13�ah"]�h$]��release 1.3.2 (2017-11-13)�ah&]�h(]�uh*h hhhhhh+hKJubh)��}�(hhh]�(h)��}�(h�Release 1.3.1 (2017-09-22)�h]�h�Release 1.3.1 (2017-09-22)�����}�(hjS hjQ hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhjN hhhh+hKOubhw)��}�(hhh]�h|)��}�(h�IThe main loop now terminates properly again when terminated by a signal. �h]�h-)��}�(h�HThe main loop now terminates properly again when terminated by a signal.�h]�h�HThe main loop now terminates properly again when terminated by a signal.�����}�(hjh hjf ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKQhjb ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj_ hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKQhjN hhubeh}�(h ]��release-1-3-1-2017-09-22�ah"]�h$]��release 1.3.1 (2017-09-22)�ah&]�h(]�uh*h hhhhhh+hKOubh)��}�(hhh]�(h)��}�(h�Release 1.3 (2017-09-15)�h]�h�Release 1.3 (2017-09-15)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hKUubhw)��}�(hhh]�(h|)��}�(h�HThe `StatvfsData` class now has an `!~StatvfsData.f_namemax` attribute. �h]�h-)��}�(h�GThe `StatvfsData` class now has an `!~StatvfsData.f_namemax` attribute.�h]�(h�The �����}�(h�The �hj� ubj� )��}�(h� `StatvfsData`�h]�j� )��}�(hj� h]�h�StatvfsData�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �StatvfsData�uh*j� hh+hKWhj� ubh� class now has an �����}�(h� class now has an �hj� ubj� )��}�(h�`!~StatvfsData.f_namemax`�h]�h�~StatvfsData.f_namemax�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubh� attribute.�����}�(h� attribute.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKWhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��`EntryAttributes` and `StatvfsData` instances can now be pickled and copied. Other llfuse classes now raise an exception when the do not support pickling/copying. �h]�h-)��}�(h��`EntryAttributes` and `StatvfsData` instances can now be pickled and copied. Other llfuse classes now raise an exception when the do not support pickling/copying.�h]�(j� )��}�(h�`EntryAttributes`�h]�j� )��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes�uh*j� hh+hKZhj� ubh� and �����}�(h� and �hj� ubj� )��}�(h� `StatvfsData`�h]�j� )��}�(hj h]�h�StatvfsData�����}�(hhhj ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j* �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �StatvfsData�uh*j� hh+hKZhj� ubh� instances can now be pickled and copied. Other llfuse classes now raise an exception when the do not support pickling/copying.�����}�(h� instances can now be pickled and copied. Other llfuse classes now raise an exception when the do not support pickling/copying.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKZhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKWhj� hhubeh}�(h ]��release-1-3-2017-09-15�ah"]�h$]��release 1.3 (2017-09-15)�ah&]�h(]�uh*h hhhhhh+hKUubh)��}�(hhh]�(h)��}�(h�Release 1.2 (2017-01-22)�h]�h�Release 1.2 (2017-01-22)�����}�(hj` hj^ hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj[ hhhh+hK_ubhw)��}�(hhh]�h|)��}�(hX The *attr* argument of the `~Operations.setattr` handler now contains valid values only for the attributes that are to be set. Previously, the documentation assorted that other attributes would be set to the original (unchanged) values. However, that was actually never the case. �h]�(h-)��}�(h�~The *attr* argument of the `~Operations.setattr` handler now contains valid values only for the attributes that are to be set.�h]�(h�The �����}�(h�The �hjs ubh �emphasis���)��}�(h�*attr*�h]�h�attr�����}�(hhhj~ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hjs ubh� argument of the �����}�(h� argument of the �hjs ubj� )��}�(h�`~Operations.setattr`�h]�j� )��}�(hj� h]�h�setattr�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �Operations.setattr�uh*j� hh+hKahjs ubh�N handler now contains valid values only for the attributes that are to be set.�����}�(h�N handler now contains valid values only for the attributes that are to be set.�hjs ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKahjo ubh-)��}�(h��Previously, the documentation assorted that other attributes would be set to the original (unchanged) values. However, that was actually never the case.�h]�h��Previously, the documentation assorted that other attributes would be set to the original (unchanged) values. However, that was actually never the case.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKdhjo ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjl hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKahj[ hhubeh}�(h ]��release-1-2-2017-01-22�ah"]�h$]��release 1.2 (2017-01-22)�ah&]�h(]�uh*h hhhhhh+hK_ubh)��}�(hhh]�(h)��}�(h�Release 1.1.1 (2016-07-27)�h]�h�Release 1.1.1 (2016-07-27)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hKiubhw)��}�(hhh]�(h|)��}�(h�Fixed the description of the `~Operations.lookup` handler (should return zero if there is no such entry, not a negative value).�h]�h-)��}�(h�Fixed the description of the `~Operations.lookup` handler (should return zero if there is no such entry, not a negative value).�h]�(h�Fixed the description of the �����}�(h�Fixed the description of the �hj� ubj� )��}�(h�`~Operations.lookup`�h]�j� )��}�(hj h]�h�lookup�����}�(hhhj ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �Operations.lookup�uh*j� hh+hKkhj� ubh�N handler (should return zero if there is no such entry, not a negative value).�����}�(h�N handler (should return zero if there is no such entry, not a negative value).�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKkhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��Fixed the description of the `EntryAttributes` structure (descriptions of `~EntryAttributes.attr_timeout` and `~EntryAttributes.entry_timeout` were switched). �h]�h-)��}�(h��Fixed the description of the `EntryAttributes` structure (descriptions of `~EntryAttributes.attr_timeout` and `~EntryAttributes.entry_timeout` were switched).�h]�(h�Fixed the description of the �����}�(h�Fixed the description of the �hj4 ubj� )��}�(h�`EntryAttributes`�h]�j� )��}�(hj? h]�h�EntryAttributes�����}�(hhhjA ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj= ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�jK �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes�uh*j� hh+hKmhj4 ubh� structure (descriptions of �����}�(h� structure (descriptions of �hj4 ubj� )��}�(h�`~EntryAttributes.attr_timeout`�h]�j� )��}�(hjd h]�h�attr_timeout�����}�(hhhjf ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjb ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�jp �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes.attr_timeout�uh*j� hh+hKmhj4 ubh� and �����}�(h� and �hj4 ubj� )��}�(h� `~EntryAttributes.entry_timeout`�h]�j� )��}�(hj� h]�h� entry_timeout�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes.entry_timeout�uh*j� hh+hKmhj4 ubh� were switched).�����}�(h� were switched).�hj4 ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKmhj0 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKkhj� hhubeh}�(h ]��release-1-1-1-2016-07-27�ah"]�h$]��release 1.1.1 (2016-07-27)�ah&]�h(]�uh*h hhhhhh+hKiubh)��}�(hhh]�(h)��}�(h�Release 1.1 (2016-05-23)�h]�h�Release 1.1 (2016-05-23)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hKrubhw)��}�(hhh]�(h|)��}�(h�DAdded support for nanosecond resolution time-stamps in GNU/kFreeBSD.�h]�h-)��}�(hj� h]�h�DAdded support for nanosecond resolution time-stamps in GNU/kFreeBSD.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKthj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�.Fixed another set of build issues on FreeBSD. �h]�h-)��}�(h�-Fixed another set of build issues on FreeBSD.�h]�h�-Fixed another set of build issues on FreeBSD.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKuhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKthj� hhubeh}�(h ]��release-1-1-2016-05-23�ah"]�h$]��release 1.1 (2016-05-23)�ah&]�h(]�uh*h hhhhhh+hKrubh)��}�(hhh]�(h)��}�(h�Release 1.0 (2016-03-08)�h]�h�Release 1.0 (2016-03-08)�����}�(hj hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj hhhh+hKxubh-)��}�(h��**Note:** The 1.0 version number does not imply any special stability or an API freeze. It's a consequence of switching to semantic versioning, where backwards incompatible changes will always result in increased major version.�h]�(h3)��}�(h� **Note:**�h]�h�Note:�����}�(hhhj, ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h2hj( ubh�� The 1.0 version number does not imply any special stability or an API freeze. It’s a consequence of switching to semantic versioning, where backwards incompatible changes will always result in increased major version.�����}�(h�� The 1.0 version number does not imply any special stability or an API freeze. It's a consequence of switching to semantic versioning, where backwards incompatible changes will always result in increased major version.�hj( hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKzhj hhubhw)��}�(hhh]�(h|)��}�(h��Fixed an overflow when accessing the ``*st_xtime_ns`` attributes of the `~llfuse.EntryAttributes` class from Python on 32-bit systems. �h]�h-)��}�(h��Fixed an overflow when accessing the ``*st_xtime_ns`` attributes of the `~llfuse.EntryAttributes` class from Python on 32-bit systems.�h]�(h�%Fixed an overflow when accessing the �����}�(h�%Fixed an overflow when accessing the �hjL ubj� )��}�(h�``*st_xtime_ns``�h]�h�*st_xtime_ns�����}�(hhhjU ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j� hjL ubh� attributes of the �����}�(h� attributes of the �hjL ubj� )��}�(h�`~llfuse.EntryAttributes`�h]�j� )��}�(hjj h]�h�EntryAttributes�����}�(hhhjl ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjh ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�jv �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.EntryAttributes�uh*j� hh+hKhjL ubh�% class from Python on 32-bit systems.�����}�(h�% class from Python on 32-bit systems.�hjL ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhjH ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjE hhhh+hNubh|)��}�(h�nPOTENTIAL COMPATIBILITY BREAK: The `~Operations.destroy` handler is now called with the global lock acquired. �h]�h-)��}�(h�mPOTENTIAL COMPATIBILITY BREAK: The `~Operations.destroy` handler is now called with the global lock acquired.�h]�(h�#POTENTIAL COMPATIBILITY BREAK: The �����}�(h�#POTENTIAL COMPATIBILITY BREAK: The �hj� ubj� )��}�(h�`~Operations.destroy`�h]�j� )��}�(hj� h]�h�destroy�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �Operations.destroy�uh*j� hh+hK�hj� ubh�5 handler is now called with the global lock acquired.�����}�(h�5 handler is now called with the global lock acquired.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjE hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hKhj hhubeh}�(h ]��release-1-0-2016-03-08�ah"]�h$]��release 1.0 (2016-03-08)�ah&]�h(]�uh*h hhhhhh+hKxubh)��}�(hhh]�(h)��}�(h�Release 0.43 (2016-02-23)�h]�h�Release 0.43 (2016-02-23)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK�ubhw)��}�(hhh]�(h|)��}�(h�Fixed build-failure under OS-X.�h]�h-)��}�(hj� h]�h�Fixed build-failure under OS-X.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�rFixed some build failures under FreeBSD (hopefully all of them, but no testers were available before the release).�h]�h-)��}�(h�rFixed some build failures under FreeBSD (hopefully all of them, but no testers were available before the release).�h]�h�rFixed some build failures under FreeBSD (hopefully all of them, but no testers were available before the release).�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�<The *workers* parameter to `llfuse.main` may now be `None`. �h]�h-)��}�(h�;The *workers* parameter to `llfuse.main` may now be `None`.�h]�(h�The �����}�(h�The �hj, ubj} )��}�(h� *workers*�h]�h�workers�����}�(hhhj5 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj, ubh� parameter to �����}�(h� parameter to �hj, ubj� )��}�(h� `llfuse.main`�h]�j� )��}�(hjJ h]�h�llfuse.main�����}�(hhhjL ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjH ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�jV �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.main�uh*j� hh+hK�hj, ubh� may now be �����}�(h� may now be �hj, ubj� )��}�(h�`None`�h]�j� )��}�(hjo h]�h�None�����}�(hhhjq ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjm ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j{ �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �None�uh*j� hh+hK�hj, ubh�.�����}�(h�.�hj, ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj( ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj� hhubeh}�(h ]��release-0-43-2016-02-23�ah"]�h$]��release 0.43 (2016-02-23)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.42.1 (2016-02-01)�h]�h�Release 0.42.1 (2016-02-01)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK�ubhw)��}�(hhh]�h|)��}�(h�Include HTML documentation. �h]�h-)��}�(h�Include HTML documentation.�h]�h�Include HTML documentation.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj� hhubeh}�(h ]��release-0-42-1-2016-02-01�ah"]�h$]��release 0.42.1 (2016-02-01)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.42 (2016-01-30)�h]�h�Release 0.42 (2016-01-30)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK�ubhw)��}�(hhh]�(h|)��}�(h�{The documentation has been clarified and extended - please take a look even if you're already familiar with Python-LLFUSE. �h]�h-)��}�(h�zThe documentation has been clarified and extended - please take a look even if you're already familiar with Python-LLFUSE.�h]�h�|The documentation has been clarified and extended - please take a look even if you’re already familiar with Python-LLFUSE.�����}�(hj hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�!Extended coverage of unit tests. �h]�h-)��}�(h� Extended coverage of unit tests.�h]�h� Extended coverage of unit tests.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�"Fixed a compile error under OS-X. �h]�h-)��}�(h�!Fixed a compile error under OS-X.�h]�h�!Fixed a compile error under OS-X.�����}�(hj0 hj. ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj* ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�Added `notify_store` function. �h]�h-)��}�(h�Added `notify_store` function.�h]�(h�Added �����}�(h�Added �hjF ubj� )��}�(h�`notify_store`�h]�j� )��}�(hjQ h]�h�notify_store�����}�(hhhjS ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjO ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j] �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �notify_store�uh*j� hh+hK�hjF ubh� function.�����}�(h� function.�hjF ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hjB ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�!Added `get_sup_groups` function. �h]�h-)��}�(h� Added `get_sup_groups` function.�h]�(h�Added �����}�(h�Added �hj� ubj� )��}�(h�`get_sup_groups`�h]�j� )��}�(hj� h]�h�get_sup_groups�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �get_sup_groups�uh*j� hh+hK�hj� ubh� function.�����}�(h� function.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�tThe `~Operations.read` handler may now return arbitrary objects that as long as they implement the buffer protocol. �h]�h-)��}�(h�sThe `~Operations.read` handler may now return arbitrary objects that as long as they implement the buffer protocol.�h]�(h�The �����}�(h�The �hj� ubj� )��}�(h�`~Operations.read`�h]�j� )��}�(hj� h]�h�read�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �Operations.read�uh*j� hh+hK�hj� ubh�] handler may now return arbitrary objects that as long as they implement the buffer protocol.�����}�(h�] handler may now return arbitrary objects that as long as they implement the buffer protocol.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�?Implemented a *forget_multi* handler (used behind the scenes). �h]�h-)��}�(h�>Implemented a *forget_multi* handler (used behind the scenes).�h]�(h�Implemented a �����}�(h�Implemented a �hj ubj} )��}�(h�*forget_multi*�h]�h�forget_multi�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj ubh�" handler (used behind the scenes).�����}�(h�" handler (used behind the scenes).�hj ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�@Many classes were rewritten in Cython for improved performance. �h]�h-)��}�(h�?Many classes were rewritten in Cython for improved performance.�h]�h�?Many classes were rewritten in Cython for improved performance.�����}�(hj. hj, ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj( ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�ePython thread-specific data is now initialized only once rather than every time a handler is called. �h]�h-)��}�(h�dPython thread-specific data is now initialized only once rather than every time a handler is called.�h]�h�dPython thread-specific data is now initialized only once rather than every time a handler is called.�����}�(hjF hjD ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj@ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�_SIGINT (Ctrl-C) now properly terminates `llfuse.main` also when running with multiple workers. �h]�h-)��}�(h�^SIGINT (Ctrl-C) now properly terminates `llfuse.main` also when running with multiple workers.�h]�(h�(SIGINT (Ctrl-C) now properly terminates �����}�(h�(SIGINT (Ctrl-C) now properly terminates �hj\ ubj� )��}�(h� `llfuse.main`�h]�j� )��}�(hjg h]�h�llfuse.main�����}�(hhhji ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hje ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�js �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.main�uh*j� hh+hK�hj\ ubh�) also when running with multiple workers.�����}�(h�) also when running with multiple workers.�hj\ ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hjX ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�yThe return value of `llfuse.main` now indicates if the loop was terminated due to an unmount request or due to a signal. �h]�h-)��}�(h�xThe return value of `llfuse.main` now indicates if the loop was terminated due to an unmount request or due to a signal.�h]�(h�The return value of �����}�(h�The return value of �hj� ubj� )��}�(h� `llfuse.main`�h]�j� )��}�(hj� h]�h�llfuse.main�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.main�uh*j� hh+hK�hj� ubh�W now indicates if the loop was terminated due to an unmount request or due to a signal.�����}�(h�W now indicates if the loop was terminated due to an unmount request or due to a signal.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj� hhubh-)��}�(h�BACKWARDS INCOMPATIBLE CHANGES:�h]�h�BACKWARDS INCOMPATIBLE CHANGES:�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� hhubhw)��}�(hhh]�(h|)��}�(h��Ducktyping the `EntryAttributes` class is no longer allowed, `Operations` methods must return instances of this class (rather than any object that provides the necessary attributes). �h]�h-)��}�(h��Ducktyping the `EntryAttributes` class is no longer allowed, `Operations` methods must return instances of this class (rather than any object that provides the necessary attributes).�h]�(h�Ducktyping the �����}�(h�Ducktyping the �hj� ubj� )��}�(h�`EntryAttributes`�h]�j� )��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes�uh*j� hh+hK�hj� ubh� class is no longer allowed, �����}�(h� class is no longer allowed, �hj� ubj� )��}�(h�`Operations`�h]�j� )��}�(hj h]�h� Operations�����}�(hhhj! ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j+ �reftype��obj��refexplicit���refwarn��j� j� j� Nj� � Operations�uh*j� hh+hK�hj� ubh�m methods must return instances of this class (rather than any object that provides the necessary attributes).�����}�(h�m methods must return instances of this class (rather than any object that provides the necessary attributes).�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�qThe `!st_Xtime` attributes of the `EntryAttributes` have been dropped in favor of the `!st_Xtime_ns` attributes. �h]�h-)��}�(h�pThe `!st_Xtime` attributes of the `EntryAttributes` have been dropped in favor of the `!st_Xtime_ns` attributes.�h]�(h�The �����}�(h�The �hjR ubj� )��}�(h�`!st_Xtime`�h]�h�st_Xtime�����}�(hhhj[ ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjR ubh� attributes of the �����}�(h� attributes of the �hjR ubj� )��}�(h�`EntryAttributes`�h]�j� )��}�(hjr h]�h�EntryAttributes�����}�(hhhjt ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjp ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j~ �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes�uh*j� hh+hK�hjR ubh�# have been dropped in favor of the �����}�(h�# have been dropped in favor of the �hjR ubj� )��}�(h�`!st_Xtime_ns`�h]�h�st_Xtime_ns�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjR ubh� attributes.�����}�(h� attributes.�hjR ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hjN ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��The `setattr` method now always receives a completely filled `EntryAttributes` instance. To determine which attributes should be changed, a new *fields* argument has been introduced. �h]�h-)��}�(h��The `setattr` method now always receives a completely filled `EntryAttributes` instance. To determine which attributes should be changed, a new *fields* argument has been introduced.�h]�(h�The �����}�(h�The �hj� ubj� )��}�(h� `setattr`�h]�j� )��}�(hj� h]�h�setattr�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �setattr�uh*j� hh+hK�hj� ubh�0 method now always receives a completely filled �����}�(h�0 method now always receives a completely filled �hj� ubj� )��}�(h�`EntryAttributes`�h]�j� )��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �EntryAttributes�uh*j� hh+hK�hj� ubh�B instance. To determine which attributes should be changed, a new �����}�(h�B instance. To determine which attributes should be changed, a new �hj� ubj} )��}�(h�*fields*�h]�h�fields�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj� ubh� argument has been introduced.�����}�(h� argument has been introduced.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�FThe `~Operations.setattr` method now also receives an *fh* parameter. �h]�h-)��}�(h�EThe `~Operations.setattr` method now also receives an *fh* parameter.�h]�(h�The �����}�(h�The �hj0 ubj� )��}�(h�`~Operations.setattr`�h]�j� )��}�(hj; h]�h�setattr�����}�(hhhj= ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj9 ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�jG �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �Operations.setattr�uh*j� hh+hK�hj0 ubh� method now also receives an �����}�(h� method now also receives an �hj0 ubj} )��}�(h�*fh*�h]�h�fh�����}�(hhhj^ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj0 ubh� parameter.�����}�(h� parameter.�hj0 ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj, ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�bThe `llfuse.main` function now has a *workers* parameter, and the *single* parameter was dropped. �h]�h-)��}�(h�aThe `llfuse.main` function now has a *workers* parameter, and the *single* parameter was dropped.�h]�(h�The �����}�(h�The �hj� ubj� )��}�(h� `llfuse.main`�h]�j� )��}�(hj� h]�h�llfuse.main�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.main�uh*j� hh+hK�hj� ubh� function now has a �����}�(h� function now has a �hj� ubj} )��}�(h� *workers*�h]�h�workers�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj� ubh� parameter, and the �����}�(h� parameter, and the �hj� ubj} )��}�(h�*single*�h]�h�single�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj� ubh� parameter was dropped.�����}�(h� parameter was dropped.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj} ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�`Almost all request handlers now receive a `RequestContext` instance in an additional parameter. �h]�h-)��}�(h�_Almost all request handlers now receive a `RequestContext` instance in an additional parameter.�h]�(h�*Almost all request handlers now receive a �����}�(h�*Almost all request handlers now receive a �hj� ubj� )��}�(h�`RequestContext`�h]�j� )��}�(hj� h]�h�RequestContext�����}�(hhhj� ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j� �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �RequestContext�uh*j� hh+hK�hj� ubh�% instance in an additional parameter.�����}�(h�% instance in an additional parameter.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj� hhubeh}�(h ]��release-0-42-2016-01-30�ah"]�h$]��release 0.42 (2016-01-30)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.41.1 (2015-08-22)�h]�h�Release 0.41.1 (2015-08-22)�����}�(hj2 hj0 hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj- hhhh+hK�ubhw)��}�(hhh]�(h|)��}�(h��Added some files in :file:`test/` that were missing in the 0.41 tarball. Tests now support the ``--installed`` option, produce prettier output, and check for error messages printed to stderr or stdout. �h]�h-)��}�(h��Added some files in :file:`test/` that were missing in the 0.41 tarball. Tests now support the ``--installed`` option, produce prettier output, and check for error messages printed to stderr or stdout.�h]�(h�Added some files in �����}�(h�Added some files in �hjE ubj� )��}�(h� :file:`test/`�h]�h�test/�����}�(h�test/�hjN ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*j� hjE ubh�? that were missing in the 0.41 tarball. Tests now support the �����}�(h�? that were missing in the 0.41 tarball. Tests now support the �hjE ubj� )��}�(h�``--installed``�h]�h�--installed�����}�(hhhje ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j� hjE ubh�[ option, produce prettier output, and check for error messages printed to stderr or stdout.�����}�(h�[ option, produce prettier output, and check for error messages printed to stderr or stdout.�hjE ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hjA ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj> hhhh+hNubh|)��}�(h�/Python-LLFUSE can now also be built on NetBSD. �h]�h-)��}�(h�.Python-LLFUSE can now also be built on NetBSD.�h]�h�.Python-LLFUSE can now also be built on NetBSD.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj> hhhh+hNubh|)��}�(h��Added support for FUSE_SET_ATTR_ATIME_NOW and FUSE_SET_ATTR_MTIME_NOW setattr flags. Previously, these would be silently ignored. �h]�h-)��}�(h��Added support for FUSE_SET_ATTR_ATIME_NOW and FUSE_SET_ATTR_MTIME_NOW setattr flags. Previously, these would be silently ignored.�h]�h��Added support for FUSE_SET_ATTR_ATIME_NOW and FUSE_SET_ATTR_MTIME_NOW setattr flags. Previously, these would be silently ignored.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj> hhhh+hNubh|)��}�(h�=Fixed an AssertionError in :file:`examples/passthroughfs.py` �h]�h-)��}�(h�<Fixed an AssertionError in :file:`examples/passthroughfs.py`�h]�(h�Fixed an AssertionError in �����}�(h�Fixed an AssertionError in �hj� ubj� )��}�(h�!:file:`examples/passthroughfs.py`�h]�h�examples/passthroughfs.py�����}�(h�examples/passthroughfs.py�hj� ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj> hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj- hhubeh}�(h ]��release-0-41-1-2015-08-22�ah"]�h$]��release 0.41.1 (2015-08-22)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.41 (2015-08-20)�h]�h�Release 0.41 (2015-08-20)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK�ubhw)��}�(hhh]�(h|)��}�(h�(Fixed a syntax error in contrib/tmpfs.py�h]�h-)��}�(hj h]�h�(Fixed a syntax error in contrib/tmpfs.py�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�.Introduced an `!llfuse.__version__` attribute.�h]�h-)��}�(hj h]�(h�Introduced an �����}�(h�Introduced an �hj ubj� )��}�(h�`!llfuse.__version__`�h]�h�llfuse.__version__�����}�(hhhj$ ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hj ubh� attribute.�����}�(h� attribute.�hj ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�BAdded more reasonable default values for `llfuse.EntryAttributes`.�h]�h-)��}�(hjG h]�(h�)Added more reasonable default values for �����}�(h�)Added more reasonable default values for �hjI ubj� )��}�(h�`llfuse.EntryAttributes`�h]�j� )��}�(hjS h]�h�llfuse.EntryAttributes�����}�(hhhjU ubah}�(h ]�h"]�(j� �py��py-obj�eh$]�h&]�h(]�uh*j� hjQ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�j� � refdomain�j_ �reftype��obj��refexplicit���refwarn��j� j� j� Nj� �llfuse.EntryAttributes�uh*j� hh+hK�hjI ubh�.�����}�(hj� hjI ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hjE ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�6Added new minimal example, :file:`examples/lltest.py`.�h]�h-)��}�(hj� h]�(h�Added new minimal example, �����}�(h�Added new minimal example, �hj� ubj� )��}�(h�:file:`examples/lltest.py`�h]�h�examples/lltest.py�����}�(h�examples/lltest.py�hj� ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*j� hj� ubh�.�����}�(hj� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�Added unit tests.�h]�h-)��}�(hj� h]�h�Added unit tests.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�TAdded an example for a pass-through file system, :file:`examples/passthroughfs.py`. �h]�h-)��}�(h�SAdded an example for a pass-through file system, :file:`examples/passthroughfs.py`.�h]�(h�1Added an example for a pass-through file system, �����}�(h�1Added an example for a pass-through file system, �hj� ubj� )��}�(h�!:file:`examples/passthroughfs.py`�h]�h�examples/passthroughfs.py�����}�(h�examples/passthroughfs.py�hj� ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*j� hj� ubh�.�����}�(hj� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj� hhubeh}�(h ]��release-0-41-2015-08-20�ah"]�h$]��release 0.41 (2015-08-20)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.40 (2013-11-26)�h]�h�Release 0.40 (2013-11-26)�����}�(hj hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj hhhh+hK�ubhw)��}�(hhh]�(h|)��}�(h��Re-raising an exception from a request handler now works correctly under Python 3. Problems were caused by a Cython bug, but llfuse now works around the issue. �h]�h-)��}�(h��Re-raising an exception from a request handler now works correctly under Python 3. Problems were caused by a Cython bug, but llfuse now works around the issue.�h]�h��Re-raising an exception from a request handler now works correctly under Python 3. Problems were caused by a Cython bug, but llfuse now works around the issue.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubh|)��}�(h��File atime, ctime and mtime can now also be represented as nanosecond integer values for increased resolution. Thanks to nagy.attila@gmail.com for the initial patch. �h]�h-)��}�(h��File atime, ctime and mtime can now also be represented as nanosecond integer values for increased resolution. Thanks to nagy.attila@gmail.com for the initial patch.�h]�(h�yFile atime, ctime and mtime can now also be represented as nanosecond integer values for increased resolution. Thanks to �����}�(h�yFile atime, ctime and mtime can now also be represented as nanosecond integer values for increased resolution. Thanks to �hj3 ubh � reference���)��}�(h�nagy.attila@gmail.com�h]�h�nagy.attila@gmail.com�����}�(hhhj> ubah}�(h ]�h"]�h$]�h&]�h(]��refuri��mailto:nagy.attila@gmail.com�uh*j< hj3 ubh� for the initial patch.�����}�(h� for the initial patch.�hj3 ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj/ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubh|)��}�(h��Python-llfuse no longer includes the setuptools/distribute bootstrap script. This module thus has to be installed manually if not already present on the system. �h]�h-)��}�(h��Python-llfuse no longer includes the setuptools/distribute bootstrap script. This module thus has to be installed manually if not already present on the system.�h]�h��Python-llfuse no longer includes the setuptools/distribute bootstrap script. This module thus has to be installed manually if not already present on the system.�����}�(hje hjc ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj_ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubh|)��}�(h�9Duck-typing of the Operations instance is now supported. �h]�h-)��}�(h�8Duck-typing of the Operations instance is now supported.�h]�h�8Duck-typing of the Operations instance is now supported.�����}�(hj} hj{ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hjw ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubh|)��}�(h��Python-llfuse no longer requires a re-compilation of the Cython code (setup.py build_cython step) when compiling for MacOS or FreeBSD. �h]�h-)��}�(h��Python-llfuse no longer requires a re-compilation of the Cython code (setup.py build_cython step) when compiling for MacOS or FreeBSD.�h]�h��Python-llfuse no longer requires a re-compilation of the Cython code (setup.py build_cython step) when compiling for MacOS or FreeBSD.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubh|)��}�(h�>Extended attributes are now properly supported under FreeBSD. �h]�h-)��}�(h�=Extended attributes are now properly supported under FreeBSD.�h]�h�=Extended attributes are now properly supported under FreeBSD.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj hhubeh}�(h ]��release-0-40-2013-11-26�ah"]�h$]��release 0.40 (2013-11-26)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.39 (2013-05-11)�h]�h�Release 0.39 (2013-05-11)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hK�ubhw)��}�(hhh]�(h|)��}�(hX� When running under Python 3.x, several functions now work with string objects rather than byte objects: - llfuse.init(): the *mountpoint* argument, and the elements of the *fuse_opts* argument are expected to be of type str. - llfuse.listdir(): the *path* argument is expected to be of type str, and the values returned by the iterator will be of type str as well. - llfuse.getxattr(), llfuse.setxattr(): the *path* and *name* arguments are expected to be of type str. When necessary, values will be converted to the file system encoding using the surrogatescape handler as described in PEP 383 (http://www.python.org/dev/peps/pep-0383/) �h]�(h-)��}�(h�gWhen running under Python 3.x, several functions now work with string objects rather than byte objects:�h]�h�gWhen running under Python 3.x, several functions now work with string objects rather than byte objects:�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubhw)��}�(hhh]�(h|)��}�(h�wllfuse.init(): the *mountpoint* argument, and the elements of the *fuse_opts* argument are expected to be of type str. �h]�h-)��}�(h�vllfuse.init(): the *mountpoint* argument, and the elements of the *fuse_opts* argument are expected to be of type str.�h]�(h�llfuse.init(): the �����}�(h�llfuse.init(): the �hj� ubj} )��}�(h�*mountpoint*�h]�h� mountpoint�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj� ubh�# argument, and the elements of the �����}�(h�# argument, and the elements of the �hj� ubj} )��}�(h�*fuse_opts*�h]�h� fuse_opts�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj� ubh�) argument are expected to be of type str.�����}�(h�) argument are expected to be of type str.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hK�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� ubh|)��}�(h��llfuse.listdir(): the *path* argument is expected to be of type str, and the values returned by the iterator will be of type str as well. �h]�h-)��}�(h��llfuse.listdir(): the *path* argument is expected to be of type str, and the values returned by the iterator will be of type str as well.�h]�(h�llfuse.listdir(): the �����}�(h�llfuse.listdir(): the �hj9 ubj} )��}�(h�*path*�h]�h�path�����}�(hhhjB ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj9 ubh�m argument is expected to be of type str, and the values returned by the iterator will be of type str as well.�����}�(h�m argument is expected to be of type str, and the values returned by the iterator will be of type str as well.�hj9 ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhj5 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� ubh|)��}�(h�fllfuse.getxattr(), llfuse.setxattr(): the *path* and *name* arguments are expected to be of type str. �h]�h-)��}�(h�ellfuse.getxattr(), llfuse.setxattr(): the *path* and *name* arguments are expected to be of type str.�h]�(h�*llfuse.getxattr(), llfuse.setxattr(): the �����}�(h�*llfuse.getxattr(), llfuse.setxattr(): the �hje ubj} )��}�(h�*path*�h]�h�path�����}�(hhhjn ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hje ubh� and �����}�(h� and �hje ubj} )��}�(h�*name*�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hje ubh�* arguments are expected to be of type str.�����}�(h�* arguments are expected to be of type str.�hje ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhja ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�j� uh*hvhh+hK�hj� ubh-)��}�(h��When necessary, values will be converted to the file system encoding using the surrogatescape handler as described in PEP 383 (http://www.python.org/dev/peps/pep-0383/)�h]�(h�When necessary, values will be converted to the file system encoding using the surrogatescape handler as described in PEP 383 (�����}�(h�When necessary, values will be converted to the file system encoding using the surrogatescape handler as described in PEP 383 (�hj� ubj= )��}�(h�(http://www.python.org/dev/peps/pep-0383/�h]�h�(http://www.python.org/dev/peps/pep-0383/�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]��refuri�j� uh*j< hj� ubh�)�����}�(h�)�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�nRenamed get_off_t_bytes() and get_ino_t_bytes() to get_off_t_bits() and get_ino_t_bits() and documented them. �h]�h-)��}�(h�mRenamed get_off_t_bytes() and get_ino_t_bytes() to get_off_t_bits() and get_ino_t_bits() and documented them.�h]�h�mRenamed get_off_t_bytes() and get_ino_t_bytes() to get_off_t_bits() and get_ino_t_bits() and documented them.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hK�hj� hhubeh}�(h ]��release-0-39-2013-05-11�ah"]�h$]��release 0.39 (2013-05-11)�ah&]�h(]�uh*h hhhhhh+hK�ubh)��}�(hhh]�(h)��}�(h�Release 0.38 (2013-01-05)�h]�h�Release 0.38 (2013-01-05)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hMubhw)��}�(hhh]�h|)��}�(h�Various small bugfixes. �h]�h-)��}�(h�Various small bugfixes.�h]�h�Various small bugfixes.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMhj� hhubeh}�(h ]��release-0-38-2013-01-05�ah"]�h$]��release 0.38 (2013-01-05)�ah&]�h(]�uh*h hhhhhh+hMubh)��}�(hhh]�(h)��}�(h�Release 0.37.1 (2011-12-10)�h]�h�Release 0.37.1 (2011-12-10)�����}�(hj4 hj2 hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj/ hhhh+hMubhw)��}�(hhh]�h|)��}�(h�LFixed a segfault-causing race condition in Lock.acquire() and Lock.yield(). �h]�h-)��}�(h�KFixed a segfault-causing race condition in Lock.acquire() and Lock.yield().�h]�h�KFixed a segfault-causing race condition in Lock.acquire() and Lock.yield().�����}�(hjI hjG ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhjC ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj@ hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMhj/ hhubeh}�(h ]��release-0-37-1-2011-12-10�ah"]�h$]��release 0.37.1 (2011-12-10)�ah&]�h(]�uh*h hhhhhh+hMubh)��}�(hhh]�(h)��}�(h�Release 0.37 (2011-12-05)�h]�h�Release 0.37 (2011-12-05)�����}�(hjn hjl hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhji hhhh+hMubhw)��}�(hhh]�(h|)��}�(h��Explicitly call fuse_chan_destroy() in llfuse.close(), so that the mountpoint becomes inaccessible right away, even while the process is still running. �h]�h-)��}�(h��Explicitly call fuse_chan_destroy() in llfuse.close(), so that the mountpoint becomes inaccessible right away, even while the process is still running.�h]�h��Explicitly call fuse_chan_destroy() in llfuse.close(), so that the mountpoint becomes inaccessible right away, even while the process is still running.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMhj} ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(h��Added get_ino_t_bytes() and get_off_t_bytes() that return the number of bytes used for representing inode numbers and file offsets. �h]�h-)��}�(h��Added get_ino_t_bytes() and get_off_t_bytes() that return the number of bytes used for representing inode numbers and file offsets.�h]�h��Added get_ino_t_bytes() and get_off_t_bytes() that return the number of bytes used for representing inode numbers and file offsets.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM!hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(h��The yield_() method of the global lock now takes an additional *count* argument that can be used to yield the lock more than once. �h]�h-)��}�(h��The yield_() method of the global lock now takes an additional *count* argument that can be used to yield the lock more than once.�h]�(h�?The yield_() method of the global lock now takes an additional �����}�(h�?The yield_() method of the global lock now takes an additional �hj� ubj} )��}�(h�*count*�h]�h�count�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj� ubh�< argument that can be used to yield the lock more than once.�����}�(h�< argument that can be used to yield the lock more than once.�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM%hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(hX� Changed implementation of global lock. The global lock is no longer a mutex, but a boolean variable protected by a mutex, and changes are tracked with a condition object. This allows lock.yield() to work properly: if there are other threads waiting for the lock, they are guaranteed to run. If there are no other threads waiting for the lock, execution of the active thread continues immediately. The previous implementation using sched_yield() was mostly broken: threads trying to acquire the global lock were calling pthread_mutex_lock, so they got removed from the kernels runqueue. However, calls to sched_yield() would just put the active thread into the expired runqueue, and calls to pthread_mutex_unlock apparently do not synchronously move the threads waiting for the lock back to a runqueue. Therefore, most of the time the active thread would be the only thread in any runqueue and thus continue to run. �h]�(h-)��}�(hX� Changed implementation of global lock. The global lock is no longer a mutex, but a boolean variable protected by a mutex, and changes are tracked with a condition object. This allows lock.yield() to work properly: if there are other threads waiting for the lock, they are guaranteed to run. If there are no other threads waiting for the lock, execution of the active thread continues immediately.�h]�hX� Changed implementation of global lock. The global lock is no longer a mutex, but a boolean variable protected by a mutex, and changes are tracked with a condition object. This allows lock.yield() to work properly: if there are other threads waiting for the lock, they are guaranteed to run. If there are no other threads waiting for the lock, execution of the active thread continues immediately.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM)hj� ubh-)��}�(hX The previous implementation using sched_yield() was mostly broken: threads trying to acquire the global lock were calling pthread_mutex_lock, so they got removed from the kernels runqueue. However, calls to sched_yield() would just put the active thread into the expired runqueue, and calls to pthread_mutex_unlock apparently do not synchronously move the threads waiting for the lock back to a runqueue. Therefore, most of the time the active thread would be the only thread in any runqueue and thus continue to run.�h]�hX The previous implementation using sched_yield() was mostly broken: threads trying to acquire the global lock were calling pthread_mutex_lock, so they got removed from the kernels runqueue. However, calls to sched_yield() would just put the active thread into the expired runqueue, and calls to pthread_mutex_unlock apparently do not synchronously move the threads waiting for the lock back to a runqueue. Therefore, most of the time the active thread would be the only thread in any runqueue and thus continue to run.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM1hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(h�oThe Operations.forget() method now receives a list of (inode, nlookup) tuples rather than just one such tuple. �h]�h-)��}�(h�nThe Operations.forget() method now receives a list of (inode, nlookup) tuples rather than just one such tuple.�h]�h�nThe Operations.forget() method now receives a list of (inode, nlookup) tuples rather than just one such tuple.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM;hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(h��invalidate_entry() and invalidate_inode() no longer work synchronously. Instead, the message is put in a queue and send by a background thread. �h]�h-)��}�(h��invalidate_entry() and invalidate_inode() no longer work synchronously. Instead, the message is put in a queue and send by a background thread.�h]�h��invalidate_entry() and invalidate_inode() no longer work synchronously. Instead, the message is put in a queue and send by a background thread.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM>hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(h�QThe acquire() method of the global lock now has an optional *timeout* parameter. �h]�h-)��}�(h�PThe acquire() method of the global lock now has an optional *timeout* parameter.�h]�(h�<The acquire() method of the global lock now has an optional �����}�(h�<The acquire() method of the global lock now has an optional �hj3 ubj} )��}�(h� *timeout*�h]�h�timeout�����}�(hhhj< ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j| hj3 ubh� parameter.�����}�(h� parameter.�hj3 ubeh��8 }�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMBhj/ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubh|)��}�(h�UThe create() request handler now receives the open flags as an additional parameter. �h]�h-)��}�(h�TThe create() request handler now receives the open flags as an additional parameter.�h]�h�TThe create() request handler now receives the open flags as an additional parameter.�����}�(hja hj_ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMEhj[ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjz hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMhji hhubeh}�(h ]��release-0-37-2011-12-05�ah"]�h$]��release 0.37 (2011-12-05)�ah&]�h(]�uh*h hhhhhh+hMubh)��}�(hhh]�(h)��}�(h�Release 0.36 (2011-09-20)�h]�h�Release 0.36 (2011-09-20)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hMIubhw)��}�(hhh]�(h|)��}�(h��Don't send SIGHUP if exception is encountered in destroy() handler (since at that point, main loop has already terminated and signal handling been reset). �h]�h-)��}�(h��Don't send SIGHUP if exception is encountered in destroy() handler (since at that point, main loop has already terminated and signal handling been reset).�h]�h��Don’t send SIGHUP if exception is encountered in destroy() handler (since at that point, main loop has already terminated and signal handling been reset).�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMKhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��Fix a problem with request handler exceptions being re-raised not only in llfuse.main(), but also in llfuse.close() when running single threaded. �h]�h-)��}�(h��Fix a problem with request handler exceptions being re-raised not only in llfuse.main(), but also in llfuse.close() when running single threaded.�h]�h��Fix a problem with request handler exceptions being re-raised not only in llfuse.main(), but also in llfuse.close() when running single threaded.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMOhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMKhj� hhubeh}�(h ]��release-0-36-2011-09-20�ah"]�h$]��release 0.36 (2011-09-20)�ah&]�h(]�uh*h hhhhhh+hMIubh)��}�(hhh]�(h)��}�(h�Release 0.35 (2011-09-14)�h]�h�Release 0.35 (2011-09-14)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hMTubhw)��}�(hhh]�(h|)��}�(h��Explicitly initialize Python thread support. Previously, calling llfuse.main() resulted in a crash if no Python threads were used before the call. �h]�h-)��}�(h��Explicitly initialize Python thread support. Previously, calling llfuse.main() resulted in a crash if no Python threads were used before the call.�h]�h��Explicitly initialize Python thread support. Previously, calling llfuse.main() resulted in a crash if no Python threads were used before the call.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMVhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��Removed handle_exc() method. If request handle raise an exception, the main loop now terminates and the exception is re-raised and passed to the caller of llfuse.main(). �h]�h-)��}�(h��Removed handle_exc() method. If request handle raise an exception, the main loop now terminates and the exception is re-raised and passed to the caller of llfuse.main().�h]�h��Removed handle_exc() method. If request handle raise an exception, the main loop now terminates and the exception is re-raised and passed to the caller of llfuse.main().�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMZhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��llfuse.close() can now leave the mountpoint in an inaccessible state to signal a shutdown due to an internal file system error. �h]�h-)��}�(h�llfuse.close() can now leave the mountpoint in an inaccessible state to signal a shutdown due to an internal file system error.�h]�h�llfuse.close() can now leave the mountpoint in an inaccessible state to signal a shutdown due to an internal file system error.�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM^hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h��The destroy() request handler is now called without the global lock acquired. This makes sense, because it's not called as part of the main loop but by llfuse.close(). �h]�h-)��}�(h��The destroy() request handler is now called without the global lock acquired. This makes sense, because it's not called as part of the main loop but by llfuse.close().�h]�h��The destroy() request handler is now called without the global lock acquired. This makes sense, because it’s not called as part of the main loop but by llfuse.close().�����}�(hj5 hj3 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMbhj/ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMVhj� hhubeh}�(h ]��release-0-35-2011-09-14�ah"]�h$]��release 0.35 (2011-09-14)�ah&]�h(]�uh*h hhhhhh+hMTubh)��}�(hhh]�(h)��}�(h�Release 0.34 (2011-08-10)�h]�h�Release 0.34 (2011-08-10)�����}�(hjZ hjX hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhjU hhhh+hMgubhw)��}�(hhh]�(h|)��}�(h�QExplicitly cast S_* constants to mode_t to prevent compiler warnings on FreeBSD. �h]�h-)��}�(h�PExplicitly cast S_* constants to mode_t to prevent compiler warnings on FreeBSD.�h]�h�PExplicitly cast S_* constants to mode_t to prevent compiler warnings on FreeBSD.�����}�(hjo hjm ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMihji ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjf hhhh+hNubh|)��}�(h�+Fixed initialization error under Python 3. �h]�h-)��}�(h�*Fixed initialization error under Python 3.�h]�h�*Fixed initialization error under Python 3.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMlhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjf hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMihjU hhubeh}�(h ]��release-0-34-2011-08-10�ah"]�h$]��release 0.34 (2011-08-10)�ah&]�h(]�uh*h hhhhhh+hMgubh)��}�(hhh]�(h)��}�(h�Release 0.33 (2011-07-03)�h]�h�Release 0.33 (2011-07-03)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hMoubhw)��}�(hhh]�h|)��}�(h�Various small bugfixes. �h]�h-)��}�(h�Various small bugfixes.�h]�h�Various small bugfixes.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMqhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMqhj� hhubeh}�(h ]��release-0-33-2011-07-03�ah"]�h$]��release 0.33 (2011-07-03)�ah&]�h(]�uh*h hhhhhh+hMoubh)��}�(hhh]�(h)��}�(h�Release 0.32 (2011-06-04)�h]�h�Release 0.32 (2011-06-04)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hMtubhw)��}�(hhh]�(h|)��}�(h�)Fixed unlink() bug in contrib/example.py �h]�h-)��}�(h�(Fixed unlink() bug in contrib/example.py�h]�h�(Fixed unlink() bug in contrib/example.py�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMvhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�cInclude :file:`src/*.pxi` files in release tarball. Were accidentally omitted in previous version. �h]�h-)��}�(h�bInclude :file:`src/*.pxi` files in release tarball. Were accidentally omitted in previous version.�h]�(h�Include �����}�(h�Include �hj ubj� )��}�(h�:file:`src/*.pxi`�h]�h� src/*.pxi�����}�(h� src/*.pxi�hj ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*j� hj ubh�I files in release tarball. Were accidentally omitted in previous version.�����}�(h�I files in release tarball. Were accidentally omitted in previous version.�hj ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hMxhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�2Moved debian/ directory into separate repository. �h]�h-)��}�(h�1Moved debian/ directory into separate repository.�h]�h�1Moved debian/ directory into separate repository.�����}�(hjC hjA ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM{hj= ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hMvhj� hhubeh}�(h ]��release-0-32-2011-06-04�ah"]�h$]��release 0.32 (2011-06-04)�ah&]�h(]�uh*h hhhhhh+hMtubh)��}�(hhh]�(h)��}�(h�Release 0.31 (2011-05-12)�h]�h�Release 0.31 (2011-05-12)�����}�(hjh hjf hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhjc hhhh+hM~ubhw)��}�(hhh]�h|)��}�(h�>Use long for storing nanoseconds in file [amc]times, not int. �h]�h-)��}�(h�=Use long for storing nanoseconds in file [amc]times, not int.�h]�h�=Use long for storing nanoseconds in file [amc]times, not int.�����}�(hj} hj{ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM�hjw ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hjt hhhh+hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hM�hjc hhubeh}�(h ]��release-0-31-2011-05-12�ah"]�h$]��release 0.31 (2011-05-12)�ah&]�h(]�uh*h hhhhhh+hM~ubh)��}�(hhh]�(h)��}�(h�Release 0.30 (2011-03-08)�h]�h�Release 0.30 (2011-03-08)�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj� hhhh+hM�ubhw)��}�(hhh]�(h|)��}�(h�-Fixed compile errors with Python 3.0 and 3.1.�h]�h-)��}�(hj� h]�h�-Fixed compile errors with Python 3.0 and 3.1.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�2Fixed error handling, errno is now read correctly.�h]�h-)��}�(hj� h]�h�2Fixed error handling, errno is now read correctly.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubh|)��}�(h�SDocumentation is now shipped in tarball rather than generated during installation. �h]�h-)��}�(h�RDocumentation is now shipped in tarball rather than generated during installation.�h]�h�RDocumentation is now shipped in tarball rather than generated during installation.�����}�(hj� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj� hhhh+hNubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hM�hj� hhubeh}�(h ]��release-0-30-2011-03-08�ah"]�h$]��release 0.30 (2011-03-08)�ah&]�h(]�uh*h hhhhhh+hM�ubh)��}�(hhh]�(h)��}�(h�Release 0.29 (2010-12-30)�h]�h�Release 0.29 (2010-12-30)�����}�(hj hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*hhj hhhh+hM�ubhw)��}�(hhh]�h|)��}�(h�Initial release �h]�h-)��}�(h�Initial release�h]�h�Initial release�����}�(hj hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hM�hj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h{hj hhh�"internal padding after Changes.rst�hNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*hvhh+hM�hj hhubeh}�(h ]��release-0-29-2010-12-30�ah"]�h$]��release 0.29 (2010-12-30)�ah&]�h(]�uh*h hhhhhh+hM�ubeh}�(h ]�� changelog�ah"]�h$]�� changelog�ah&]�h(]�uh*h hhhhhh+hKubah}�(h ]�h"]�h$]�h&]�h(]��source��*/home/user/w/python-llfuse/rst/changes.rst�uh*h�current_source�N�current_line�N�settings��docutils.frontend��Values���)��}�(hN� generator�N� datestamp�N�source_link�N� source_url�N� toc_backlinks��entry��footnote_backlinks�K� sectnum_xform�K�strip_comments�N�strip_elements_with_classes�N� strip_classes�N�report_level�K� halt_level�K�exit_status_level�K�debug�N�warning_stream�N� traceback���input_encoding��utf-8��input_encoding_error_handler��strict��output_encoding��utf-8��output_encoding_error_handler�jl �error_encoding��UTF-8��error_encoding_error_handler��backslashreplace�� language_code��en��record_dependencies�N�config�N� id_prefix�h�auto_id_prefix��id�� dump_settings�N�dump_internals�N�dump_transforms�N�dump_pseudo_xml�N�expose_internals�N�strict_visitor�N�_disable_config�N�_source�jO �_destination�N� _config_files�]��pep_references�N�pep_base_url�� https://www.python.org/dev/peps/��pep_file_url_template��pep-%04d��rfc_references�N�rfc_base_url��https://tools.ietf.org/html/�� tab_width�K�trim_footnote_reference_space���file_insertion_enabled���raw_enabled�K�syntax_highlight��long��smart_quotes���smartquotes_locales�]��character_level_inline_markup���doctitle_xform��� docinfo_xform�K�sectsubtitle_xform���embed_stylesheet���cloak_email_addresses���env�Nub�reporter�N�indirect_targets�]��substitution_defs�}��substitution_names�}��refnames�}��pyfuse3�]�(j= )��}�(hhKh]�h�pyfuse3�����}�(h�pyfuse3�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��name�j� �refname�j� uh*j< hh.ubj= )��}�(hj� h]�h�pyfuse3�����}�(h�pyfuse3�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��name�j� j� �pyfuse3�uh*j< hjw ubes�refids�}��nameids�}�(jE jB h�h�j� j� j j jD jA j� j� j� j� j� j� j j jK jH j� j� jX jU j� j� j� j� j j j� j� j� j� j� j� j* j' j� j� j j� j� j� j� j� j, j) jf jc j~ j{ j� j� jR jO j� j� j� j� j` j] j� j� j j� j= j: u� nametypes�}�(jE Nh�Nj� Nj NjD Nj� Nj� Nj� Nj NjK Nj� NjX Nj� Nj� Nj Nj� Nj� Nj� Nj* Nj� Nj Nj� Nj� Nj, Njf Nj~ Nj� NjR Nj� Nj� Nj` Nj� Nj Nj= Nuh }�(jB hh�hej� h�j j� jA j j� jG j� j� j� j� j j� jH j j� jN jU j� j� j[ j� j� j j� j� j j� j� j� j� j' j� j� j- j� j� j� j j� j� j) j� jc j/ j{ ji j� j� jO j� j� jU j� j� j] j� j� jc j� j� j: j hYh �system_message���)��}�(hhh]�h-)��}�(hhh]�h�Unknown target name: "pyfuse3".�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� ubah}�(h ]�hYah"]�h$]�h&]�h(]�hSa�level�K�type��ERROR��source�h+�line�Kuh*j� ubhShIj� j� )��}�(hhh]�h-)��}�(hhh]�h�Unknown target name: "pyfuse3".�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� ubah}�(h ]�j� ah"]�h$]�h&]�h(]�j� a�level�K�type�j� �source�h+�line�K3uh*j� ubj� j� u� footnote_refs�}�� citation_refs�}�� autofootnotes�]��autofootnote_refs�]��symbol_footnotes�]��symbol_footnote_refs�]�� footnotes�]�� citations�]��autofootnote_start�K�symbol_footnote_start�K � id_counter��collections��Counter���}�jz Ks��R��parse_messages�]��transform_messages�]�(j� j� e�transformer�N� decoration�Nhhub.