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
��{Q �sphinx.addnodes��document���)��}�(� rawsource�� ��children�]��docutils.nodes��section���)��}�(hhh]�(h �title���)��}�(h�Utility Functions�h]�h �Text����Utility Functions�����}�(hh�parent�hhh�source�N�line�Nuba� attributes�}�(�ids�]��classes�]��names�]��dupnames�]��backrefs�]�u�tagname�hhhhhh�'/home/user/w/python-llfuse/rst/util.rst�hKubh � paragraph���)��}�(h��The following functions do not necessarily translate to calls to the FUSE library. They are provided because they're potentially useful when implementing file systems in Python.�h]�h��The following functions do not necessarily translate to calls to the FUSE library. They are provided because they’re potentially useful when implementing file systems in Python.�����}�(hh0hh.hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhhhhubh �index���)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(�single��setxattr() (in module llfuse)��llfuse.setxattr�hNt�auh*h<hhhhh�docstring of llfuse.setxattr�hNubh �desc���)��}�(hhh]�(h �desc_signature���)��}�(h�.setxattr(path, name, value, namespace=u'user')�h]�(h �desc_addname���)��}�(h�llfuse.�h]�h�llfuse.�����}�(hhhh[hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�� xml:space��preserve�uh*hYhhUhhh�docstring of llfuse.setxattr�hNubh � desc_name���)��}�(h�setxattr�h]�h�setxattr�����}�(hhhhnhhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hlhhUhhhhkhNubh �desc_parameterlist���)��}�(h�$path, name, value, namespace=u'user'�h]�(h �desc_parameter���)��}�(h�path�h]�h � desc_sig_name���)��}�(h�path�h]�h�path�����}�(hhhh�ubah}�(h ]�h"]��n�ah$]�h&]�h(]�uh*h�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hh~ubh�)��}�(h�name�h]�h�)��}�(h�name�h]�h�name�����}�(hhhh�ubah}�(h ]�h"]�h�ah$]�h&]�h(]�uh*h�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hh~ubh�)��}�(h�value�h]�h�)��}�(h�value�h]�h�value�����}�(hhhh�ubah}�(h ]�h"]�h�ah$]�h&]�h(]�uh*h�hh�ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hh~ubh�)��}�(h�namespace='user'�h]�(h�)��}�(h� namespace�h]�h� namespace�����}�(hhhh�ubah}�(h ]�h"]�h�ah$]�h&]�h(]�uh*h�hh�ubh �desc_sig_operator���)��}�(h�=�h]�h�=�����}�(hhhh�ubah}�(h ]�h"]��o�ah$]�h&]�h(]�uh*h�hh�ubh �inline���)��}�(h�'user'�h]�h�'user'�����}�(hhhh�ubah}�(h ]�h"]�� default_value�ah$]�h&]�h(]��support_smartquotes��uh*h�hh�ubeh}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hh~ubeh}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h|hhUhhhhkhNubeh}�(h ]�hKah"]�h$]�h&]�h(]��module��llfuse��class�h�fullname�hpuh*hShhkhKhhPhhubh �desc_content���)��}�(hhh]�(h-)��}�(h�Set extended attribute�h]�h�Set extended attribute�����}�(hj! hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hhMhKhj hhubh-)��}�(h�z*path* and *name* have to be of type `str`. In Python 3.x, they may contain surrogates. *value* has to be of type `bytes`.�h]�(h �emphasis���)��}�(h�*path*�h]�h�path�����}�(hhhj3 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj- ubh� and �����}�(h� and �hj- hhhNhNubj2 )��}�(h�*name*�h]�h�name�����}�(hhhjF ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj- ubh� have to be of type �����}�(h� have to be of type �hj- hhhNhNubh �pending_xref���)��}�(h�`str`�h]�h �literal���)��}�(hj] h]�h�str�����}�(hhhja ubah}�(h ]�h"]�(�xref��py��py-obj�eh$]�h&]�h(]�uh*j_ hj[ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc��util�� refdomain�jl �reftype��obj��refexplicit���refwarn��� py:module�j �py:class�N� reftarget��str�uh*jY hhMhKhj- ubh�.. In Python 3.x, they may contain surrogates. �����}�(h�.. In Python 3.x, they may contain surrogates. �hj- hhhNhNubj2 )��}�(h�*value*�h]�h�value�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj- ubh� has to be of type �����}�(h� has to be of type �hj- hhhNhNubjZ )��}�(h�`bytes`�h]�j` )��}�(hj� h]�h�bytes�����}�(hhhj� ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j� �reftype��obj��refexplicit���refwarn��j~ j j Nj� �bytes�uh*jY hhMhKhj- ubh�.�����}�(h�.�hj- hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hhMhKhj hhubh-)��}�(h��Under FreeBSD, the *namespace* parameter may be set to *system* or *user* to select the namespace for the extended attribute. For other platforms, this parameter is ignored.�h]�(h�Under FreeBSD, the �����}�(h�Under FreeBSD, the �hj� hhhNhNubj2 )��}�(h�*namespace*�h]�h� namespace�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubh� parameter may be set to �����}�(h� parameter may be set to �hj� hhhNhNubj2 )��}�(h�*system*�h]�h�system�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubh� or �����}�(h� or �hj� hhhNhNubj2 )��}�(h�*user*�h]�h�user�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubh�d to select the namespace for the extended attribute. For other platforms, this parameter is ignored.�����}�(h�d to select the namespace for the extended attribute. For other platforms, this parameter is ignored.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hhMhKhj hhubh-)��}�(h��In contrast to the `os.setxattr` function from the standard library, the method provided by Python-LLFUSE is also available for non-Linux systems.�h]�(h�In contrast to the �����}�(h�In contrast to the �hj hhhNhNubjZ )��}�(h� `os.setxattr`�h]�j` )��}�(hj h]�h�os.setxattr�����}�(hhhj ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j$ �reftype��obj��refexplicit���refwarn��j~ j j Nj� �os.setxattr�uh*jY hhMhK hj ubh�r function from the standard library, the method provided by Python-LLFUSE is also available for non-Linux systems.�����}�(h�r function from the standard library, the method provided by Python-LLFUSE is also available for non-Linux systems.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hhMhK hj hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*j hhPhhhhkhNubeh}�(h ]�h"]��py�ah$]�h&]�h(]��domain�jJ �objtype��function��desctype�jP �noindex��uh*hNhhhhhhMhNubh=)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hI�getxattr() (in module llfuse)��llfuse.getxattr�hNt�auh*h<hhhhh�docstring of llfuse.getxattr�hNubhO)��}�(hhh]�(hT)��}�(h�>getxattr(path, name, size_t size_guess=128, namespace=u'user')�h]�(hZ)��}�(h�llfuse.�h]�h�llfuse.�����}�(hhhji hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hYhje hhh�docstring of llfuse.getxattr�hNubhm)��}�(h�getxattr�h]�h�getxattr�����}�(hhhjx hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hlhje hhhjw hNubh})��}�(h�6(path, name, size_t size_guess=128, namespace=u'user')�h]�(h�)��}�(h�path�h]�h�path�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hj� ubh�)��}�(h�name�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hj� ubh�)��}�(h�size_t size_guess=128�h]�h�size_t size_guess=128�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hj� ubh�)��}�(h�namespace=u'user'�h]�h�namespace=u'user'�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h|hje hhhjw hNubeh}�(h ]�j_ ah"]�h$]�h&]�h(]�j �llfuse�j hj jz uh*hShjw hKhjb hhubj )��}�(hhh]�(h-)��}�(h�Get extended attribute�h]�h�Get extended attribute�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hja hKhj� hhubh-)��}�(h�x*path* and *name* have to be of type `str`. In Python 3.x, they may contain surrogates. Returns a value of type `bytes`.�h]�(j2 )��}�(h�*path*�h]�h�path�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubh� and �����}�(h� and �hj� hhhNhNubj2 )��}�(h�*name*�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubh� have to be of type �����}�(h� have to be of type �hj� hhhNhNubjZ )��}�(h�`str`�h]�j` )��}�(hj h]�h�str�����}�(hhhj ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j �reftype��obj��refexplicit���refwarn��j~ j� j Nj� �str�uh*jY hja hKhj� ubh�F. In Python 3.x, they may contain surrogates. Returns a value of type �����}�(h�F. In Python 3.x, they may contain surrogates. Returns a value of type �hj� hhhNhNubjZ )��}�(h�`bytes`�h]�j` )��}�(hj1 h]�h�bytes�����}�(hhhj3 ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hj/ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j= �reftype��obj��refexplicit���refwarn��j~ j� j Nj� �bytes�uh*jY hja hKhj� ubh�.�����}�(hj� hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hja hKhj� hhubh-)��}�(hX If the caller knows the approximate size of the attribute value, it should be supplied in *size_guess*. If the guess turns out to be wrong, the system call has to be carried out three times (the first call will fail, the second determines the size and the third finally gets the value).�h]�(h�ZIf the caller knows the approximate size of the attribute value, it should be supplied in �����}�(h�ZIf the caller knows the approximate size of the attribute value, it should be supplied in �hjY hhhNhNubj2 )��}�(h�*size_guess*�h]�h� size_guess�����}�(hhhjb ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hjY ubh��. If the guess turns out to be wrong, the system call has to be carried out three times (the first call will fail, the second determines the size and the third finally gets the value).�����}�(h��. If the guess turns out to be wrong, the system call has to be carried out three times (the first call will fail, the second determines the size and the third finally gets the value).�hjY hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hja hKhj� hhubh-)��}�(h��Under FreeBSD, the *namespace* parameter may be set to *system* or *user* to select the namespace for the extended attribute. For other platforms, this parameter is ignored.�h]�(h�Under FreeBSD, the �����}�(h�Under FreeBSD, the �hj{ hhhNhNubj2 )��}�(h�*namespace*�h]�h� namespace�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj{ ubh� parameter may be set to �����}�(h� parameter may be set to �hj{ hhhNhNubj2 )��}�(h�*system*�h]�h�system�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj{ ubh� or �����}�(h� or �hj{ hhhNhNubj2 )��}�(h�*user*�h]�h�user�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj{ ubh�d to select the namespace for the extended attribute. For other platforms, this parameter is ignored.�����}�(h�d to select the namespace for the extended attribute. For other platforms, this parameter is ignored.�hj{ hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hja hKhj� hhubh-)��}�(h��In contrast to the `os.getxattr` function from the standard library, the method provided by Python-LLFUSE is also available for non-Linux systems.�h]�(h�In contrast to the �����}�(h�In contrast to the �hj� hhhNhNubjZ )��}�(h� `os.getxattr`�h]�j` )��}�(hj� h]�h�os.getxattr�����}�(hhhj� ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j� �reftype��obj��refexplicit���refwarn��j~ j� j Nj� �os.getxattr�uh*jY hja hKhj� ubh�r function from the standard library, the method provided by Python-LLFUSE is also available for non-Linux systems.�����}�(h�r function from the standard library, the method provided by Python-LLFUSE is also available for non-Linux systems.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hja hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*j hjb hhhjw hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�jN j jO �function�jQ j jR �uh*hNhhhhhja hNubh=)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hI�listdir() (in module llfuse)��llfuse.listdir�hNt�auh*h<hhhhh�docstring of llfuse.listdir�hNubhO)��}�(hhh]�(hT)��}�(h� listdir(path)�h]�(hZ)��}�(h�llfuse.�h]�h�llfuse.�����}�(hhhj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hYhj hhh�docstring of llfuse.listdir�hNubhm)��}�(h�listdir�h]�h�listdir�����}�(hhhj* hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hlhj hhhj) hNubh})��}�(h�path�h]�h�)��}�(h�path�h]�h�)��}�(h�path�h]�h�path�����}�(hhhj@ ubah}�(h ]�h"]�h�ah$]�h&]�h(]�uh*h�hj< ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hj8 ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h|hj hhhj) hNubeh}�(h ]�j ah"]�h$]�h&]�h(]�j �llfuse�j hj j, uh*hShj) hKhj hhubj )��}�(hhh]�(h-)��}�(h�(Like `os.listdir`, but releases the GIL.�h]�(h�Like �����}�(h�Like �hjd hhhNhNubjZ )��}�(h�`os.listdir`�h]�j` )��}�(hjo h]�h� os.listdir�����}�(hhhjq ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hjm ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j{ �reftype��obj��refexplicit���refwarn��j~ j` j Nj� � os.listdir�uh*jY hj hKhjd ubh�, but releases the GIL.�����}�(h�, but releases the GIL.�hjd hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhja hhubh-)��}�(h��This function returns an iterator over the directory entries in *path*. The returned values are of type :ref:`str <python:textseq>` in both Python 2.x and 3.x.�h]�(h�@This function returns an iterator over the directory entries in �����}�(h�@This function returns an iterator over the directory entries in �hj� hhhNhNubj2 )��}�(h�*path*�h]�h�path�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubh�". The returned values are of type �����}�(h�". The returned values are of type �hj� hhhNhNubjZ )��}�(h�:ref:`str <python:textseq>`�h]�h�)��}�(hj� h]�h�str�����}�(hhhj� ubah}�(h ]�h"]�(jk �std��std-ref�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j� �reftype��ref��refexplicit���refwarn��j� �python:textseq�uh*jY hj hKhj� ubh� in both Python 2.x and 3.x.�����}�(h� in both Python 2.x and 3.x.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhja hhubh-)��}�(h��In Python 2.x :class:`str` is equivalent to `bytes` so all names can be represented. In Python 3.x, surrogate escape coding (cf. `PEP 383 <http://www.python.org/dev/peps/pep-0383/>`_) is used for directory names that do not have a string representation.�h]�(h�In Python 2.x �����}�(h�In Python 2.x �hj� hhhNhNubjZ )��}�(h�:class:`str`�h]�j` )��}�(hj� h]�h�str�����}�(hhhj� ubah}�(h ]�h"]�(jk �py��py-class�eh$]�h&]�h(]�uh*j_ hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j� �reftype��class��refexplicit���refwarn��j~ j` j Nj� �str�uh*jY hj hKhj� ubh� is equivalent to �����}�(h� is equivalent to �hj� hhhNhNubjZ )��}�(h�`bytes`�h]�j` )��}�(hj h]�h�bytes�����}�(hhhj ubah}�(h ]�h"]�(jk �py��py-obj�eh$]�h&]�h(]�uh*j_ hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�jx � refdomain�j �reftype��obj��refexplicit���refwarn��j~ j` j Nj� �bytes�uh*jY hj hKhj� ubh�N so all names can be represented. In Python 3.x, surrogate escape coding (cf. �����}�(h�N so all names can be represented. In Python 3.x, surrogate escape coding (cf. �hj� hhhNhNubh � reference���)��}�(h�5`PEP 383 <http://www.python.org/dev/peps/pep-0383/>`_�h]�h�PEP 383�����}�(h�PEP 383�hj4 ubah}�(h ]�h"]�h$]�h&]�h(]��name��PEP 383��refuri��(http://www.python.org/dev/peps/pep-0383/�uh*j2 hj� ubh �target���)��}�(h�+ <http://www.python.org/dev/peps/pep-0383/>�h]�h}�(h ]��pep-383�ah"]�h$]��pep 383�ah&]�h(]��refuri�jF uh*jG � referenced�Khj� ubh�G) is used for directory names that do not have a string representation.�����}�(h�G) is used for directory names that do not have a string representation.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhja hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*j hj hhhj) hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�jN jk jO �function�jQ jo jR �uh*hNhhhhhj hNubh=)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hI�#get_sup_groups() (in module llfuse)��llfuse.get_sup_groups�hNt�auh*h<hhhhh�"docstring of llfuse.get_sup_groups�hNubhO)��}�(hhh]�(hT)��}�(h�get_sup_groups(pid)�h]�(hZ)��}�(h�llfuse.�h]�h�llfuse.�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hYhj� hhh�"docstring of llfuse.get_sup_groups�hNubhm)��}�(h�get_sup_groups�h]�h�get_sup_groups�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*hlhj� hhhj� hNubh})��}�(h�pid�h]�h�)��}�(h�pid�h]�h�)��}�(h�pid�h]�h�pid�����}�(hhhj� ubah}�(h ]�h"]�h�ah$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]�hihjuh*h|hj� hhhj� hNubeh}�(h ]�j| ah"]�h$]�h&]�h(]�j �llfuse�j hj j� uh*hShj� hKhj hhubj )��}�(hhh]�(h-)��}�(h�'Return supplementary group ids of *pid*�h]�(h�"Return supplementary group ids of �����}�(h�"Return supplementary group ids of �hj� hhhNhNubj2 )��}�(h�*pid*�h]�h�pid�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j1 hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj~ hKhj� hhubh-)��}�(h��This function is relatively expensive because it has to read the group ids from ``/proc/[pid]/status``. For the same reason, it will also not work on systems that do not provide a ``/proc`` file system.�h]�(h�PThis function is relatively expensive because it has to read the group ids from �����}�(h�PThis function is relatively expensive because it has to read the group ids from �hj� hhhNhNubj` )��}�(h�``/proc/[pid]/status``�h]�h�/proc/[pid]/status�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j_ hj� ubh�N. For the same reason, it will also not work on systems that do not provide a �����}�(h�N. For the same reason, it will also not work on systems that do not provide a �hj� hhhNhNubj` )��}�(h� ``/proc``�h]�h�/proc�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j_ hj� ubh� file system.�����}�(h� file system.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj~ hKhj� hhubh-)��}�(h�Returns a set.�h]�h�Returns a set.�����}�(hj# hj! hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj~ hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*j hj hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�jN j8 jO �function�jQ j< jR �uh*hNhhhhhj~ hNubeh}�(h ]��utility-functions�ah"]�h$]��utility functions�ah&]�h(]�uh*h hhhhhh+hKubah}�(h ]�h"]�h$]�h&]�h(]��source�h+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�jh �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�h+�_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�}��refids�}��nameids�}�(jB j? jR jO u� nametypes�}�(jB NjR �uh }�(j? hhKhUj_ je j j jO jI j| 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���}���R��parse_messages�]��transform_messages�]��transformer�N� decoration�Nhhub.