pyfuse3-3.4.0/0000755000175000017500000000000014663711152013100 5ustar useruser00000000000000pyfuse3-3.4.0/Changes.rst0000644000175000017500000001101114663705776015213 0ustar useruser00000000000000=========== Changelog =========== .. currentmodule:: pyfuse3 Release 3.4.0 (2024-08-28) ========================== * Cythonized with latest Cython 3.0.11 to support Python 3.13. * CI: also test python 3.13, run mypy. * Move ``_pyfuse3`` to ``pyfuse3._pyfuse3`` and add a compatibility wrapper for the old name. * Move ``pyfuse3_asyncio`` to ``pyfuse3.asyncio`` and add a compatibility wrapper for the old name. * Add `bytes` subclass `XAttrNameT` as the type of extended attribute names. * Various fixes to type annotations. * Add ``py.typed`` marker to enable external use of type annotations. Release 3.3.0 (2023-08-06) ========================== * Note: This is the first pyfuse3 release compatible with Cython 3.0.0 release. Cython 0.29.x is also still supported. * Cythonized with latest Cython 3.0.0. * Drop Python 3.6 and 3.7 support and testing, #71. * CI: also test python 3.12. test on cython 0.29 and cython 3.0. * Tell Cython that callbacks may raise exceptions, #80. * Fix lookup in examples/hello.py, similar to #16. * Misc. CI, testing, build and sphinx related fixes. Release 3.2.3 (2023-05-09) ========================== * cythonize with latest Cython 0.29.34 (brings Python 3.12 support) * add a minimal pyproject.toml, require setuptools * tests: fix integer overflow on 32-bit arches, fixes #47 * test: Use shutil.which() instead of external which(1) program * setup.py: catch more generic OSError when searching Cython, fixes #63 * setup.py: require Cython >= 0.29 * fix basedir computation in setup.py (fix pip install -e .) * use sphinx < 6.0 due to compatibility issues with more recent versions Release 3.2.2 (2022-09-28) ========================== * remove support for python 3.5 (broken, out of support by python devs) * cythonize with latest Cython 0.29.x (brings Python 3.11 support) * use github actions for CI, remove travis-ci * update README: minimal maintenance, not developed * update setup.py with tested python versions * examples/tmpfs.py: work around strange kernel behaviour (calling SETATTR after UNLINK of a (not open) file): respond with ENOENT instead of crashing. Release 3.2.1 (2021-09-17) ========================== * Add type annotations * Passing a XATTR_CREATE or XATTR_REPLACE to `setxattr` is now working correctly. Release 3.2.0 (2020-12-30) ========================== * Fix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500. * There is a new `pyfuse3.terminate()` function to gracefully end the main loop. Release 3.1.1 (2020-10-06) ========================== * No source changes. Regenerated Cython files with Cython 0.29.21 for Python 3.9 compatibility. Release 3.1.0 (2020-05-31) ========================== * Made compatible with newest Trio module. Release 3.0.0 (2020-05-08) ========================== * Changed `~Operations.create` handler to return a `FileInfo` struct to allow for modification of certain kernel file attributes, e.g. ``direct_io``. Note that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed. Release 2.0.0 ============= * Changed `~Operations.open` handler to return the new `FileInfo` struct to allow for modification of certain kernel file attributes, e.g. ``direct_io``. Note that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed. Release 1.3.1 (2019-07-17) ========================== * Fixed a bug in the :file:`hello_asyncio.py` example. Release 1.3 (2019-06-02) ======================== * Fixed a bug in the :file:`tmpfs.py` and :file:`passthroughfs.py` example file systems (so rename operations no longer fail). Release 1.2 (2018-12-22) ======================== * Clarified that `invalidate_inode` may block in some circumstances. * Added support for using the asyncio module instead of Trio. Release 1.1 (2018-11-02) ======================== * Fixed :file:`examples/passthroughfs.py` - was not handling readdir() correctly. * `invalidate_entry_async` now accepts an additional *ignore_enoent* parameter. When this is set, no errors are logged if the kernel is not actually aware of the entry that should have been removed. Release 1.0 (2018-10-08) ======================== * Added a new `syncfs` function. Release 0.9 (2018-09-27) ======================== * First release * pyfuse3 was forked from python-llfuse - thanks for all the work! * If you need compatibility with Python 2.x or libfuse 2.x, you may want to take a look at python-llfuse instead. pyfuse3-3.4.0/Include/0000755000175000017500000000000014663711152014463 5ustar useruser00000000000000pyfuse3-3.4.0/Include/fuse_common.pxd0000644000175000017500000000516414245446437017527 0ustar useruser00000000000000''' fuse_common.pxd This file contains Cython definitions for fuse_common.h Copyright © 2010 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' from fuse_opt cimport * from posix.types cimport off_t from libc.stdint cimport uint64_t # Based on fuse sources, revision tag fuse_2_9_4 cdef extern from * nogil: # fuse_common.h should not be included struct fuse_file_info: int flags unsigned int direct_io unsigned int keep_cache unsigned int nonseekable uint64_t fh uint64_t lock_owner struct fuse_conn_info: unsigned proto_major unsigned proto_minor unsigned max_write unsigned max_read unsigned max_readahead unsigned capable unsigned want unsigned max_background unsigned congestion_threshold unsigned time_gran struct fuse_session: pass struct fuse_chan: pass struct fuse_loop_config: int clone_fd unsigned max_idle_threads # Capability bits for fuse_conn_info.{capable,want} enum: FUSE_CAP_ASYNC_READ FUSE_CAP_POSIX_LOCKS FUSE_CAP_ATOMIC_O_TRUNC FUSE_CAP_EXPORT_SUPPORT FUSE_CAP_DONT_MASK FUSE_CAP_SPLICE_WRITE FUSE_CAP_SPLICE_MOVE FUSE_CAP_SPLICE_READ FUSE_CAP_FLOCK_LOCKS FUSE_CAP_IOCTL_DIR FUSE_CAP_AUTO_INVAL_DATA FUSE_CAP_READDIRPLUS FUSE_CAP_READDIRPLUS_AUTO FUSE_CAP_ASYNC_DIO FUSE_CAP_WRITEBACK_CACHE FUSE_CAP_NO_OPEN_SUPPORT FUSE_CAP_PARALLEL_DIROPS FUSE_CAP_POSIX_ACL FUSE_CAP_HANDLE_KILLPRIV int fuse_set_signal_handlers(fuse_session *se) void fuse_remove_signal_handlers(fuse_session *se) # fuse_common.h declares these as enums, but they are # actually flags (i.e., FUSE_BUF_IS_FD|FUSE_BUF_FD_SEEK) # is a valid variable. Therefore, we declare the type # as integer instead. ctypedef int fuse_buf_flags enum: FUSE_BUF_IS_FD FUSE_BUF_FD_SEEK FUSE_BUF_FD_RETRY ctypedef int fuse_buf_copy_flags enum: FUSE_BUF_NO_SPLICE FUSE_BUF_FORCE_SPLICE FUSE_BUF_SPLICE_MOVE FUSE_BUF_SPLICE_NONBLOCK struct fuse_buf: size_t size fuse_buf_flags flags void *mem int fd off_t pos struct fuse_bufvec: size_t count size_t idx size_t off fuse_buf buf[1] size_t fuse_buf_size(fuse_bufvec *bufv) ssize_t fuse_buf_copy(fuse_bufvec *dst, fuse_bufvec *src, fuse_buf_copy_flags flags) pyfuse3-3.4.0/Include/fuse_lowlevel.pxd0000644000175000017500000002107114663705673020067 0ustar useruser00000000000000''' fuse_lowlevel.pxd This file contains Cython definitions for fuse_lowlevel.h Copyright © 2010 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' from fuse_common cimport * from posix.stat cimport * from posix.types cimport * from libc_extra cimport statvfs from libc.stdlib cimport const_char from libc.stdint cimport uint32_t # Based on fuse sources, revision tag fuse-3.2.6 cdef extern from "" nogil: enum: FUSE_ROOT_ID ctypedef unsigned fuse_ino_t ctypedef struct fuse_req: pass ctypedef fuse_req* fuse_req_t struct fuse_entry_param: fuse_ino_t ino uint64_t generation struct_stat attr double attr_timeout double entry_timeout struct fuse_ctx: uid_t uid gid_t gid pid_t pid mode_t umask struct fuse_forget_data: fuse_ino_t ino uint64_t nlookup ctypedef fuse_ctx const_fuse_ctx "const struct fuse_ctx" int FUSE_SET_ATTR_MODE int FUSE_SET_ATTR_UID int FUSE_SET_ATTR_GID int FUSE_SET_ATTR_SIZE int FUSE_SET_ATTR_ATIME int FUSE_SET_ATTR_MTIME int FUSE_SET_ATTR_ATIME_NOW int FUSE_SET_ATTR_MTIME_NOW int FUSE_SET_ATTR_CTIME # Request handlers # We allow these functions to raise exceptions because we will catch them # when checking exception status on return from fuse_session_process_buf(). struct fuse_lowlevel_ops: void (*init) (void *userdata, fuse_conn_info *conn) except * void (*destroy) (void *userdata) except * void (*lookup) (fuse_req_t req, fuse_ino_t parent, const_char *name) except * void (*forget) (fuse_req_t req, fuse_ino_t ino, uint64_t nlookup) except * void (*getattr) (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) except * void (*setattr) (fuse_req_t req, fuse_ino_t ino, struct_stat *attr, int to_set, fuse_file_info *fi) except * void (*readlink) (fuse_req_t req, fuse_ino_t ino) except * void (*mknod) (fuse_req_t req, fuse_ino_t parent, const_char *name, mode_t mode, dev_t rdev) except * void (*mkdir) (fuse_req_t req, fuse_ino_t parent, const_char *name, mode_t mode) except * void (*unlink) (fuse_req_t req, fuse_ino_t parent, const_char *name) except * void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const_char *name) except * void (*symlink) (fuse_req_t req, const_char *link, fuse_ino_t parent, const_char *name) except * void (*rename) (fuse_req_t req, fuse_ino_t parent, const_char *name, fuse_ino_t newparent, const_char *newname, unsigned flags) except * void (*link) (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const_char *newname) except * void (*open) (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) except * void (*read) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, fuse_file_info *fi) except * void (*write) (fuse_req_t req, fuse_ino_t ino, const_char *buf, size_t size, off_t off, fuse_file_info *fi) except * void (*flush) (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) except * void (*release) (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) except * void (*fsync) (fuse_req_t req, fuse_ino_t ino, int datasync, fuse_file_info *fi) except * void (*opendir) (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) except * void (*readdir) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, fuse_file_info *fi) except * void (*releasedir) (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) except * void (*fsyncdir) (fuse_req_t req, fuse_ino_t ino, int datasync, fuse_file_info *fi) except * void (*statfs) (fuse_req_t req, fuse_ino_t ino) except * void (*setxattr) (fuse_req_t req, fuse_ino_t ino, const_char *name, const_char *value, size_t size, int flags) except * void (*getxattr) (fuse_req_t req, fuse_ino_t ino, const_char *name, size_t size) except * void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size) except * void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const_char *name) except * void (*access) (fuse_req_t req, fuse_ino_t ino, int mask) except * void (*create) (fuse_req_t req, fuse_ino_t parent, const_char *name, mode_t mode, fuse_file_info *fi) except * void (*write_buf) (fuse_req_t req, fuse_ino_t ino, fuse_bufvec *bufv, off_t off, fuse_file_info *fi) except * void (*retrieve_reply) (fuse_req_t req, void *cookie, fuse_ino_t ino, off_t offset, fuse_bufvec *bufv) except * void (*forget_multi) (fuse_req_t req, size_t count, fuse_forget_data *forgets) except * void (*fallocate) (fuse_req_t req, fuse_ino_t ino, int mode, off_t offset, off_t length, fuse_file_info *fi) except * void (*readdirplus) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, fuse_file_info *fi) except * # Reply functions int fuse_reply_err(fuse_req_t req, int err) void fuse_reply_none(fuse_req_t req) int fuse_reply_entry(fuse_req_t req, fuse_entry_param *e) int fuse_reply_create(fuse_req_t req, fuse_entry_param *e, fuse_file_info *fi) int fuse_reply_attr(fuse_req_t req, struct_stat *attr, double attr_timeout) int fuse_reply_readlink(fuse_req_t req, const_char *link) int fuse_reply_open(fuse_req_t req, fuse_file_info *fi) int fuse_reply_write(fuse_req_t req, size_t count) int fuse_reply_buf(fuse_req_t req, const_char *buf, size_t size) int fuse_reply_data(fuse_req_t req, fuse_bufvec *bufv, fuse_buf_copy_flags flags) int fuse_reply_statfs(fuse_req_t req, statvfs *stbuf) int fuse_reply_xattr(fuse_req_t req, size_t count) size_t fuse_add_direntry(fuse_req_t req, const_char *buf, size_t bufsize, const_char *name, struct_stat *stbuf, off_t off) size_t fuse_add_direntry_plus(fuse_req_t req, char *buf, size_t bufsize, char *name, fuse_entry_param *e, off_t off) # Notification int fuse_lowlevel_notify_inval_inode(fuse_session *se, fuse_ino_t ino, off_t off, off_t len) int fuse_lowlevel_notify_inval_entry(fuse_session *se, fuse_ino_t parent, const_char *name, size_t namelen) int fuse_lowlevel_notify_delete(fuse_session *se, fuse_ino_t parent, fuse_ino_t child, const_char *name, size_t namelen) int fuse_lowlevel_notify_store(fuse_session *se, fuse_ino_t ino, off_t offset, fuse_bufvec *bufv, fuse_buf_copy_flags flags) int fuse_lowlevel_notify_retrieve(fuse_session *se, fuse_ino_t ino, size_t size, off_t offset, void *cookie) # Utility functions void *fuse_req_userdata(fuse_req_t req) fuse_ctx *fuse_req_ctx(fuse_req_t req) int fuse_req_getgroups(fuse_req_t req, size_t size, gid_t list[]) # Inquiry functions void fuse_lowlevel_version() void fuse_lowlevel_help() # Filesystem setup & teardown fuse_session *fuse_session_new(fuse_args *args, fuse_lowlevel_ops *op, size_t op_size, void *userdata) int fuse_session_mount(fuse_session *se, char *mountpoint) int fuse_session_loop(fuse_session *se) int fuse_session_loop_mt(fuse_session *se, fuse_loop_config *config); void fuse_session_exit(fuse_session *se) void fuse_session_reset(fuse_session *se) bint fuse_session_exited(fuse_session *se) void fuse_session_unmount(fuse_session *se) void fuse_session_destroy(fuse_session *se) # Custom event loop support int fuse_session_fd(fuse_session *se) int fuse_session_receive_buf(fuse_session *se, fuse_buf *buf) void fuse_session_process_buf(fuse_session *se, fuse_buf *buf) except * pyfuse3-3.4.0/Include/fuse_opt.pxd0000644000175000017500000000060314245446437017032 0ustar useruser00000000000000''' fuse_opt.pxd This file contains Cython definitions for fuse_opt.h Copyright © 2010 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' # Based on fuse sources, revision tag fuse_2_8_3 cdef extern from "" nogil: struct fuse_args: int argc char **argv int allocated pyfuse3-3.4.0/Include/libc_extra.pxd0000644000175000017500000000310314245446437017320 0ustar useruser00000000000000''' libc_extra.pxd This file contains Cython definitions libc functions that are not included in the pxd files shipped with Cython. Copyright © 2010 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' from posix.time cimport timespec cdef extern from "" nogil: ctypedef struct DIR: pass cdef struct dirent: char* d_name dirent* readdir(DIR* dirp) int readdir_r(DIR *dirp, dirent *entry, dirent **result) cdef extern from "" nogil: DIR *opendir(char *name) int closedir(DIR* dirp) cdef extern from "" nogil: ctypedef int fsblkcnt_t ctypedef int fsfilcnt_t struct statvfs: unsigned long f_bsize unsigned long f_frsize fsblkcnt_t f_blocks fsblkcnt_t f_bfree fsblkcnt_t f_bavail fsfilcnt_t f_files fsfilcnt_t f_ffree fsfilcnt_t f_favail unsigned long f_namemax cdef extern from "xattr.h" nogil: int setxattr_p (char *path, char *name, void *value, int size, int namespace) ssize_t getxattr_p (char *path, char *name, void *value, int size, int namespace) enum: EXTATTR_NAMESPACE_SYSTEM EXTATTR_NAMESPACE_USER XATTR_CREATE XATTR_REPLACE XATTR_NOFOLLOW XATTR_NODEFAULT XATTR_NOSECURITY cdef extern from "gettime.h" nogil: int gettime_realtime(timespec *tp) cdef extern from "" nogil: int syncfs(int fd) pyfuse3-3.4.0/LICENSE0000644000175000017500000006255014245446437014124 0ustar useruser00000000000000This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. For reference, the full text of the GNU Lesser General Public License Version 2 is included below: GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! pyfuse3-3.4.0/PKG-INFO0000644000175000017500000000576714663711152014214 0ustar useruser00000000000000Metadata-Version: 2.1 Name: pyfuse3 Version: 3.4.0 Summary: Python 3 bindings for libfuse 3 with async I/O support Home-page: https://github.com/libfuse/pyfuse3 Author: Nikolaus Rath Author-email: Nikolaus@rath.org License: LGPL Keywords: FUSE,python Platform: Linux Platform: FreeBSD Platform: OS X Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Filesystems Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: POSIX :: Linux Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: POSIX :: BSD :: FreeBSD Classifier: Typing :: Typed Provides: pyfuse3 Requires-Python: >=3.8 License-File: LICENSE .. NOTE: We cannot use sophisticated ReST syntax (like e.g. :file:`foo`) here because this isn't rendered correctly by PyPi and/or BitBucket. Warning - no longer developed! ============================== pyfuse3 is no longer actively developed and just receiving community-contributed maintenance to keep it alive for some time. The pyfuse3 Module ================== .. start-intro pyfuse3 is a set of Python 3 bindings for `libfuse 3`_. It provides an asynchronous API compatible with Trio_ and asyncio_, and enables you to easily write a full-featured Linux filesystem in Python. pyfuse3 releases can be downloaded from PyPi_. The documentation can be `read online`__ and is also included in the ``doc/html`` directory of the pyfuse3 tarball. Getting Help ------------ Please report any bugs on the `issue tracker`_. For discussion and questions, please use the general `FUSE mailing list`_. A searchable `mailing list archive`_ is kindly provided by Gmane_. Development Status ------------------ pyfuse3 is in beta. Bugs are likely. pyfuse3 uses semantic versioning. This means backwards incompatible changes in the API will be reflected in an increase of the major version number. Contributing ------------ The pyfuse3 source code is available on GitHub_. .. __: https://pyfuse3.readthedocs.io/ .. _libfuse 3: http://github.com/libfuse/libfuse .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel .. _issue tracker: https://github.com/libfuse/pyfuse3/issues .. _mailing list archive: http://dir.gmane.org/gmane.comp.file-systems.fuse.devel .. _Gmane: http://www.gmane.org/ .. _PyPi: https://pypi.python.org/pypi/pyfuse3/ .. _GitHub: https://github.com/libfuse/pyfuse3 .. _Trio: https://github.com/python-trio/trio .. _asyncio: https://docs.python.org/3/library/asyncio.html pyfuse3-3.4.0/README.rst0000644000175000017500000000344614663705673014611 0ustar useruser00000000000000.. NOTE: We cannot use sophisticated ReST syntax (like e.g. :file:`foo`) here because this isn't rendered correctly by PyPi and/or BitBucket. Warning - no longer developed! ============================== pyfuse3 is no longer actively developed and just receiving community-contributed maintenance to keep it alive for some time. The pyfuse3 Module ================== .. start-intro pyfuse3 is a set of Python 3 bindings for `libfuse 3`_. It provides an asynchronous API compatible with Trio_ and asyncio_, and enables you to easily write a full-featured Linux filesystem in Python. pyfuse3 releases can be downloaded from PyPi_. The documentation can be `read online`__ and is also included in the ``doc/html`` directory of the pyfuse3 tarball. Getting Help ------------ Please report any bugs on the `issue tracker`_. For discussion and questions, please use the general `FUSE mailing list`_. A searchable `mailing list archive`_ is kindly provided by Gmane_. Development Status ------------------ pyfuse3 is in beta. Bugs are likely. pyfuse3 uses semantic versioning. This means backwards incompatible changes in the API will be reflected in an increase of the major version number. Contributing ------------ The pyfuse3 source code is available on GitHub_. .. __: https://pyfuse3.readthedocs.io/ .. _libfuse 3: http://github.com/libfuse/libfuse .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel .. _issue tracker: https://github.com/libfuse/pyfuse3/issues .. _mailing list archive: http://dir.gmane.org/gmane.comp.file-systems.fuse.devel .. _Gmane: http://www.gmane.org/ .. _PyPi: https://pypi.python.org/pypi/pyfuse3/ .. _GitHub: https://github.com/libfuse/pyfuse3 .. _Trio: https://github.com/python-trio/trio .. _asyncio: https://docs.python.org/3/library/asyncio.html pyfuse3-3.4.0/doc/0000755000175000017500000000000014663711152013645 5ustar useruser00000000000000pyfuse3-3.4.0/doc/html/0000755000175000017500000000000014663711152014611 5ustar useruser00000000000000pyfuse3-3.4.0/doc/html/.buildinfo0000644000175000017500000000034614663711065016573 0ustar useruser00000000000000# Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. config: aa7b4d08f062aa5751b1fb4569cb4f03 tags: 645f666f9bcd5a90fca523b33c5a78b7 pyfuse3-3.4.0/doc/html/.doctrees/0000755000175000017500000000000014663711152016477 5ustar useruser00000000000000pyfuse3-3.4.0/doc/html/.doctrees/about.doctree0000644000175000017500000002234414663707215021172 0ustar useruser00000000000000$sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(hAbouth]h TextAbout}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh"/home/user/w/pyfuse3/rst/about.rsthKubh paragraph)}(hpyfuse3 is a set of Python 3 bindings for `libfuse 3`_. It provides an asynchronous API compatible with Trio_ and asyncio_, and enables you to easily write a full-featured Linux filesystem in Python.h](h*pyfuse3 is a set of Python 3 bindings for }(hh/hhhNhNubh reference)}(h `libfuse 3`_h]h libfuse 3}(hh9hhhNhNubah}(h!]h#]h%]h']h)]name libfuse 3refuri!http://github.com/libfuse/libfuseuh+h7hh/resolvedKubh2. It provides an asynchronous API compatible with }(hh/hhhNhNubh8)}(hTrio_h]hTrio}(hhPhhhNhNubah}(h!]h#]h%]h']h)]nameTriohI#https://github.com/python-trio/triouh+h7hh/hKKubh and }(hh/hhhNhNubh8)}(hasyncio_h]hasyncio}(hhehhhNhNubah}(h!]h#]h%]h']h)]nameasynciohI.https://docs.python.org/3/library/asyncio.htmluh+h7hh/hKKubhM, and enables you to easily write a full-featured Linux filesystem in Python.}(hh/hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-h README.rsthKhh hhubh.)}(hpyfuse3 releases can be downloaded from PyPi_. The documentation can be `read online`__ and is also included in the ``doc/html`` directory of the pyfuse3 tarball.h](h(pyfuse3 releases can be downloaded from }(hhhhhNhNubh8)}(hPyPi_h]hPyPi}(hhhhhNhNubah}(h!]h#]h%]h']h)]namePyPihI%https://pypi.python.org/pypi/pyfuse3/uh+h7hhhKKubh. The documentation can be }(hhhhhNhNubh8)}(h`read online`__h]h read online}(hhhhhNhNubah}(h!]h#]h%]h']h)]name read online anonymousKhIhttps://pyfuse3.readthedocs.io/uh+h7hhhKKubh and is also included in the }(hhhhhNhNubh literal)}(h ``doc/html``h]hdoc/html}(hhhhhNhNubah}(h!]h#]h%]h']h)]uh+hhhubh" directory of the pyfuse3 tarball.}(hhhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hhhKhh hhubh )}(hhh](h)}(h Getting Helph]h Getting Help}(hhhhhNhNubah}(h!]h#]h%]h']h)]uh+hhhhhhhhK ubh.)}(hPlease report any bugs on the `issue tracker`_. For discussion and questions, please use the general `FUSE mailing list`_. A searchable `mailing list archive`_ is kindly provided by Gmane_.h](hPlease report any bugs on the }(hhhhhNhNubh8)}(h`issue tracker`_h]h issue tracker}(hhhhhNhNubah}(h!]h#]h%]h']h)]name issue trackerhI)https://github.com/libfuse/pyfuse3/issuesuh+h7hhhKKubh7. For discussion and questions, please use the general }(hhhhhNhNubh8)}(h`FUSE mailing list`_h]hFUSE mailing list}(hhhhhNhNubah}(h!]h#]h%]h']h)]nameFUSE mailing listhI7https://lists.sourceforge.net/lists/listinfo/fuse-develuh+h7hhhKKubh. A searchable }(hhhhhNhNubh8)}(h`mailing list archive`_h]hmailing list archive}(hjhhhNhNubah}(h!]h#]h%]h']h)]namemailing list archivehI7http://dir.gmane.org/gmane.comp.file-systems.fuse.develuh+h7hhhKKubh is kindly provided by }(hhhhhNhNubh8)}(hGmane_h]hGmane}(hj&hhhNhNubah}(h!]h#]h%]h']h)]nameGmanehIhttp://www.gmane.org/uh+h7hhhKKubh.}(hhhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hhhKhhhhubeh}(h!] getting-helpah#]h%] getting helpah']h)]uh+h hh hhhhhK ubh )}(hhh](h)}(hDevelopment Statush]hDevelopment Status}(hjLhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjIhhhhhKubh.)}(h$pyfuse3 is in beta. Bugs are likely.h]h$pyfuse3 is in beta. Bugs are likely.}(hjZhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hhhKhjIhhubh.)}(hpyfuse3 uses semantic versioning. This means backwards incompatible changes in the API will be reflected in an increase of the major version number.h]hpyfuse3 uses semantic versioning. This means backwards incompatible changes in the API will be reflected in an increase of the major version number.}(hjhhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hhhKhjIhhubeh}(h!]development-statusah#]h%]development statusah']h)]uh+h hh hhhhhKubh )}(hhh](h)}(h Contributingh]h Contributing}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj~hhhhhKubh.)}(h0The pyfuse3 source code is available on GitHub_.h](h(The pyfuse3 source code is available on }(hjhhhNhNubh8)}(hGitHub_h]hGitHub}(hjhhhNhNubah}(h!]h#]h%]h']h)]nameGitHubhI"https://github.com/libfuse/pyfuse3uh+h7hjhKKubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hhhK!hj~hhubh target)}(h&.. __: https://pyfuse3.readthedocs.io/h]h}(h!]id1ah#]h%]h']h)]hIhhKuh+jhK+hj~hhhh referencedKubj)}(h0.. _libfuse 3: http://github.com/libfuse/libfuseh]h}(h!] libfuse-3ah#]h%] libfuse 3ah']h)]hIhJuh+jhK,hj~hhhhjKubj)}(hN.. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-develh]h}(h!]fuse-mailing-listah#]h%]fuse mailing listah']h)]hIj uh+jhK-hj~hhhhjKubj)}(h<.. _issue tracker: https://github.com/libfuse/pyfuse3/issuesh]h}(h!] issue-trackerah#]h%] issue trackerah']h)]hIhuh+jhK.hj~hhhhjKubj)}(hQ.. _mailing list archive: http://dir.gmane.org/gmane.comp.file-systems.fuse.develh]h}(h!]mailing-list-archiveah#]h%]mailing list archiveah']h)]hIj!uh+jhK/hj~hhhhjKubj)}(h .. _Gmane: http://www.gmane.org/h]h}(h!]gmaneah#]h%]gmaneah']h)]hIj6uh+jhK0hj~hhhhjKubj)}(h/.. _PyPi: https://pypi.python.org/pypi/pyfuse3/h]h}(h!]pypiah#]h%]pypiah']h)]hIhuh+jhK1hj~hhhhjKubj)}(h... _GitHub: https://github.com/libfuse/pyfuse3h]h}(h!]githubah#]h%]githubah']h)]hIjuh+jhK2hj~hhhhjKubj)}(h-.. _Trio: https://github.com/python-trio/trioh]h}(h!]trioah#]h%]trioah']h)]hIh`uh+jhK3hj~hhhhjKubj)}(h;.. _asyncio: https://docs.python.org/3/library/asyncio.htmlh]h}(h!]asyncioah#]h%]asyncioah']h)]hIhuuh+jhK4hj~hhhhjKubeh}(h!] contributingah#]h%] contributingah']h)]uh+h hh hhhhhKubeh}(h!]aboutah#]h%]aboutah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj_error_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}( libfuse 3]h9atrio]hPaasyncio]heapypi]ha issue tracker]hafuse mailing list]hamailing list archive]jagmane]j&agithub]jaurefids}nameids}(j9j6jFjCj{jxj1j.jjjjjjjjjjjjjjjjj)j&u nametypes}(j9jFj{j1jjjjjjjjj)uh!}(j6h jChjxjIj.j~jjjjjjjjjjjjjjjjjjj&j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jmKsRparse_messages]transform_messages] transformerN include_log] rst/about.rst(NNNNta decorationNhhub.pyfuse3-3.4.0/doc/html/.doctrees/asyncio.doctree0000644000175000017500000001114614663707215021523 0ustar useruser00000000000000[sphinx.addnodesdocument)}( rawsourcechildren](docutils.nodestarget)}(h .. _asyncio:h] attributes}(ids]classes]names]dupnames]backrefs]refidasyncioutagnameh lineKparenth _documenthsource$/home/user/w/pyfuse3/rst/asyncio.rstubh section)}(hhh](h title)}(hasyncio Supporth]h Textasyncio Support}(h h+h!hh"NhNubah}(h]h]h]h]h]uhh)h h&h!hh"h#hKubh paragraph)}(hX'By default, pyfuse3 uses asynchronous I/O using Trio_ (and most of the documentation assumes that you are using Trio). If you'd rather use asyncio, import the *pyfuse3.asyncio* module (*pyfuse3_asyncio* in 3.3.0 and earlier) and call its *enable()* function before using *pyfuse3*. For example::h](h00By default, pyfuse3 uses asynchronous I/O using }(h h=h!hh"NhNubh reference)}(hTrio_h]h0Trio}(h hGh!hh"NhNubah}(h]h]h]h]h]nameTriorefuri#https://github.com/python-trio/triouhhEh h=resolvedKubh0l (and most of the documentation assumes that you are using Trio). If you’d rather use asyncio, import the }(h h=h!hh"NhNubh emphasis)}(h*pyfuse3.asyncio*h]h0pyfuse3.asyncio}(h h`h!hh"NhNubah}(h]h]h]h]h]uhh^h h=ubh0 module (}(h h=h!hh"NhNubh_)}(h*pyfuse3_asyncio*h]h0pyfuse3_asyncio}(h hrh!hh"NhNubah}(h]h]h]h]h]uhh^h h=ubh0$ in 3.3.0 and earlier) and call its }(h h=h!hh"NhNubh_)}(h *enable()*h]h0enable()}(h hh!hh"NhNubah}(h]h]h]h]h]uhh^h h=ubh0 function before using }(h h=h!hh"NhNubh_)}(h *pyfuse3*h]h0pyfuse3}(h hh!hh"NhNubah}(h]h]h]h]h]uhh^h h=ubh0. For example:}(h h=h!hh"NhNubeh}(h]h]h]h]h]uhh;h"h#hKh h&h!hubh literal_block)}(heimport pyfuse3 import pyfuse3.asyncio pyfuse3.asyncio.enable() # Use pyfuse3 as usual from here on.h]h0eimport pyfuse3 import pyfuse3.asyncio pyfuse3.asyncio.enable() # Use pyfuse3 as usual from here on.}h hsbah}(h]h]h]h]h] xml:spacepreserveuhhh"h#hK h h&h!hubh )}(h-.. _Trio: https://github.com/python-trio/trioh]h}(h]trioah]h]trioah]h]hWhXuhh hKh h&h!hh"h# referencedKubeh}(h](asyncio-supportheh]h](asyncio supportasyncioeh]h]uhh$h hh!hh"h#hKexpect_referenced_by_name}hh sexpect_referenced_by_id}hh subeh}(h]h]h]h]h]sourceh#uhhcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(h)N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerherror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh# _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}trio]hGasrefids}h]h asnameids}(hhhhhhu nametypes}(hӈh҉hɈuh}(hh&hh&hhu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages]h system_message)}(hhh]h<)}(hhh]h0-Hyperlink target "asyncio" is not referenced.}h jhsbah}(h]h]h]h]h]uhh;h jeubah}(h]h]h]h]h]levelKtypeINFOsourceh#lineKuhjcuba transformerN include_log] decorationNh!hub.pyfuse3-3.4.0/doc/html/.doctrees/changes.doctree0000644000175000017500000007604214663707215021474 0ustar useruser00000000000000|sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(h Changelogh]h Text Changelog}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh Changes.rsthKubh )}(hhh](h)}(hRelease 3.4.0 (2024-08-28)h]hRelease 3.4.0 (2024-08-28)}(hh0hhhNhNubah}(h!]h#]h%]h']h)]uh+hhh-hhhh,hKubh bullet_list)}(hhh](h list_item)}(h=Cythonized with latest Cython 3.0.11 to support Python 3.13. h]h paragraph)}(hhh,hK hh-hhubeh}(h!]release-3-4-0-2024-08-28ah#]h%]release 3.4.0 (2024-08-28)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 3.3.0 (2023-08-06)h]hRelease 3.3.0 (2023-08-06)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKubh?)}(hhh](hD)}(huNote: This is the first pyfuse3 release compatible with Cython 3.0.0 release. Cython 0.29.x is also still supported. h]hJ)}(htNote: This is the first pyfuse3 release compatible with Cython 3.0.0 release. Cython 0.29.x is also still supported.h]htNote: This is the first pyfuse3 release compatible with Cython 3.0.0 release. Cython 0.29.x is also still supported.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h%Cythonized with latest Cython 3.0.0. h]hJ)}(h$Cythonized with latest Cython 3.0.0.h]h$Cythonized with latest Cython 3.0.0.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK!hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h2Drop Python 3.6 and 3.7 support and testing, #71. h]hJ)}(h1Drop Python 3.6 and 3.7 support and testing, #71.h]h1Drop Python 3.6 and 3.7 support and testing, #71.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK#hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h?CI: also test python 3.12. test on cython 0.29 and cython 3.0. h]hJ)}(h>CI: also test python 3.12. test on cython 0.29 and cython 3.0.h]h>CI: also test python 3.12. test on cython 0.29 and cython 3.0.}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK%hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h6Tell Cython that callbacks may raise exceptions, #80. h]hJ)}(h5Tell Cython that callbacks may raise exceptions, #80.h]h5Tell Cython that callbacks may raise exceptions, #80.}(hj#hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK'hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h1Fix lookup in examples/hello.py, similar to #16. h]hJ)}(h0Fix lookup in examples/hello.py, similar to #16.h]h0Fix lookup in examples/hello.py, similar to #16.}(hj;hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK)hj7ubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h7Misc. CI, testing, build and sphinx related fixes. h]hJ)}(h2Misc. CI, testing, build and sphinx related fixes.h]h2Misc. CI, testing, build and sphinx related fixes.}(hjShhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK+hjOubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hKhjhhubeh}(h!]release-3-3-0-2023-08-06ah#]h%]release 3.3.0 (2023-08-06)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 3.2.3 (2023-05-09)h]hRelease 3.2.3 (2023-05-09)}(hjxhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjuhhhh,hK2ubh?)}(hhh](hD)}(hBcythonize with latest Cython 0.29.34 (brings Python 3.12 support) h]hJ)}(hAcythonize with latest Cython 0.29.34 (brings Python 3.12 support)h]hAcythonize with latest Cython 0.29.34 (brings Python 3.12 support)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK4hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h1add a minimal pyproject.toml, require setuptools h]hJ)}(h0add a minimal pyproject.toml, require setuptoolsh]h0add a minimal pyproject.toml, require setuptools}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK6hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h8tests: fix integer overflow on 32-bit arches, fixes #47 h]hJ)}(h7tests: fix integer overflow on 32-bit arches, fixes #47h]h7tests: fix integer overflow on 32-bit arches, fixes #47}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK8hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h>test: Use shutil.which() instead of external which(1) program h]hJ)}(h=test: Use shutil.which() instead of external which(1) programh]h=test: Use shutil.which() instead of external which(1) program}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK:hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(hFsetup.py: catch more generic OSError when searching Cython, fixes #63 h]hJ)}(hEsetup.py: catch more generic OSError when searching Cython, fixes #63h]hEsetup.py: catch more generic OSError when searching Cython, fixes #63}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK= 0.29 h]hJ)}(h setup.py: require Cython >= 0.29h]h setup.py: require Cython >= 0.29}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK>hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h;fix basedir computation in setup.py (fix pip install -e .) h]hJ)}(h:fix basedir computation in setup.py (fix pip install -e .)h]h:fix basedir computation in setup.py (fix pip install -e .)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK@hjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(hHuse sphinx < 6.0 due to compatibility issues with more recent versions h]hJ)}(hFuse sphinx < 6.0 due to compatibility issues with more recent versionsh]hFuse sphinx < 6.0 due to compatibility issues with more recent versions}(hj5hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKBhj1ubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hK4hjuhhubeh}(h!]release-3-2-3-2023-05-09ah#]h%]release 3.2.3 (2023-05-09)ah']h)]uh+h hh hhhh,hK2ubh )}(hhh](h)}(hRelease 3.2.2 (2022-09-28)h]hRelease 3.2.2 (2022-09-28)}(hjZhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjWhhhh,hKFubh?)}(hhh](hD)}(hFremove support for python 3.5 (broken, out of support by python devs) h]hJ)}(hEremove support for python 3.5 (broken, out of support by python devs)h]hEremove support for python 3.5 (broken, out of support by python devs)}(hjohhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKHhjkubah}(h!]h#]h%]h']h)]uh+hChjhhhhh,hNubhD)}(hAcythonize with latest Cython 0.29.x (brings Python 3.11 support) h]hJ)}(h@cythonize with latest Cython 0.29.x (brings Python 3.11 support)h]h@cythonize with latest Cython 0.29.x (brings Python 3.11 support)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKJhjubah}(h!]h#]h%]h']h)]uh+hChjhhhhh,hNubhD)}(h,use github actions for CI, remove travis-ci h]hJ)}(h+use github actions for CI, remove travis-cih]h+use github actions for CI, remove travis-ci}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKLhjubah}(h!]h#]h%]h']h)]uh+hChjhhhhh,hNubhD)}(h2update README: minimal maintenance, not developed h]hJ)}(h1update README: minimal maintenance, not developedh]h1update README: minimal maintenance, not developed}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKNhjubah}(h!]h#]h%]h']h)]uh+hChjhhhhh,hNubhD)}(h,update setup.py with tested python versions h]hJ)}(h+update setup.py with tested python versionsh]h+update setup.py with tested python versions}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKPhjubah}(h!]h#]h%]h']h)]uh+hChjhhhhh,hNubhD)}(hexamples/tmpfs.py: work around strange kernel behaviour (calling SETATTR after UNLINK of a (not open) file): respond with ENOENT instead of crashing. h]hJ)}(hexamples/tmpfs.py: work around strange kernel behaviour (calling SETATTR after UNLINK of a (not open) file): respond with ENOENT instead of crashing.h]hexamples/tmpfs.py: work around strange kernel behaviour (calling SETATTR after UNLINK of a (not open) file): respond with ENOENT instead of crashing.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKRhjubah}(h!]h#]h%]h']h)]uh+hChjhhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hKHhjWhhubeh}(h!]release-3-2-2-2022-09-28ah#]h%]release 3.2.2 (2022-09-28)ah']h)]uh+h hh hhhh,hKFubh )}(hhh](h)}(hRelease 3.2.1 (2021-09-17)h]hRelease 3.2.1 (2021-09-17)}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj hhhh,hKWubh?)}(hhh](hD)}(hAdd type annotations h]hJ)}(hAdd type annotationsh]hAdd type annotations}(hj!hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKYhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(hPPassing a XATTR_CREATE or XATTR_REPLACE to `setxattr` is now working correctly. h]hJ)}(hOPassing a XATTR_CREATE or XATTR_REPLACE to `setxattr` is now working correctly.h](h+Passing a XATTR_CREATE or XATTR_REPLACE to }(hj9hhhNhNubh)}(h `setxattr`h]h)}(hjCh]hsetxattr}(hjEhhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjAubah}(h!]h#]h%]h']h)]refdocj refdomainjOreftypeobj refexplicitrefwarnj j!j"Nj#setxattruh+hhh,hK[hj9ubh is now working correctly.}(hj9hhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hK[hj5ubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hKYhj hhubeh}(h!]release-3-2-1-2021-09-17ah#]h%]release 3.2.1 (2021-09-17)ah']h)]uh+h hh hhhh,hKWubh )}(hhh](h)}(hRelease 3.2.0 (2020-12-30)h]hRelease 3.2.0 (2020-12-30)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hK_ubh?)}(hhh](hD)}(hpFix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500. h]hJ)}(hoFix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500.h]hoFix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKahjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(hPThere is a new `pyfuse3.terminate()` function to gracefully end the main loop. h]hJ)}(hNThere is a new `pyfuse3.terminate()` function to gracefully end the main loop.h](hThere is a new }(hjhhhNhNubh)}(h`pyfuse3.terminate()`h]h)}(hjh]hpyfuse3.terminate()}(hjhhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnj j!j"Nj#pyfuse3.terminate()uh+hhh,hKdhjubh* function to gracefully end the main loop.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKdhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hKahjhhubeh}(h!]release-3-2-0-2020-12-30ah#]h%]release 3.2.0 (2020-12-30)ah']h)]uh+h hh hhhh,hK_ubh )}(hhh](h)}(hRelease 3.1.1 (2020-10-06)h]hRelease 3.1.1 (2020-10-06)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKiubh?)}(hhh]hD)}(h_No source changes. Regenerated Cython files with Cython 0.29.21 for Python 3.9 compatibility. h]hJ)}(h]No source changes. Regenerated Cython files with Cython 0.29.21 for Python 3.9 compatibility.h]h]No source changes. Regenerated Cython files with Cython 0.29.21 for Python 3.9 compatibility.}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKkhj ubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKkhjhhubeh}(h!]release-3-1-1-2020-10-06ah#]h%]release 3.1.1 (2020-10-06)ah']h)]uh+h hh hhhh,hKiubh )}(hhh](h)}(hRelease 3.1.0 (2020-05-31)h]hRelease 3.1.0 (2020-05-31)}(hj2hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj/hhhh,hKpubh?)}(hhh]hD)}(h*Made compatible with newest Trio module. h]hJ)}(h(Made compatible with newest Trio module.h]h(Made compatible with newest Trio module.}(hjGhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKrhjCubah}(h!]h#]h%]h']h)]uh+hChj@hhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKrhj/hhubeh}(h!]release-3-1-0-2020-05-31ah#]h%]release 3.1.0 (2020-05-31)ah']h)]uh+h hh hhhh,hKpubh )}(hhh](h)}(hRelease 3.0.0 (2020-05-08)h]hRelease 3.0.0 (2020-05-08)}(hjlhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjihhhh,hKvubh?)}(hhh]hD)}(hXChanged `~Operations.create` handler to return a `FileInfo` struct to allow for modification of certain kernel file attributes, e.g. ``direct_io``. Note that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed. h](hJ)}(hChanged `~Operations.create` handler to return a `FileInfo` struct to allow for modification of certain kernel file attributes, e.g. ``direct_io``.h](hChanged }(hjhhhNhNubh)}(h`~Operations.create`h]h)}(hjh]hcreate}(hjhhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnj j!j"Nj#Operations.createuh+hhh,hKxhjubh handler to return a }(hjhhhNhNubh)}(h `FileInfo`h]h)}(hjh]hFileInfo}(hjhhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnj j!j"Nj#FileInfouh+hhh,hKxhjubhJ struct to allow for modification of certain kernel file attributes, e.g. }(hjhhhNhNubh)}(h ``direct_io``h]h direct_io}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKxhj}ubhJ)}(hpNote that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed.h]hpNote that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hK{hj}ubeh}(h!]h#]h%]h']h)]uh+hChjzhhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKxhjihhubeh}(h!]release-3-0-0-2020-05-08ah#]h%]release 3.0.0 (2020-05-08)ah']h)]uh+h hh hhhh,hKvubh )}(hhh](h)}(h Release 2.0.0h]h Release 2.0.0}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj hhhh,hKubh?)}(hhh]hD)}(hX Changed `~Operations.open` handler to return the new `FileInfo` struct to allow for modification of certain kernel file attributes, e.g. ``direct_io``. Note that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed. h](hJ)}(hChanged `~Operations.open` handler to return the new `FileInfo` struct to allow for modification of certain kernel file attributes, e.g. ``direct_io``.h](hChanged }(hj#hhhNhNubh)}(h`~Operations.open`h]h)}(hj-h]hopen}(hj/hhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhj+ubah}(h!]h#]h%]h']h)]refdocj refdomainj9reftypeobj refexplicitrefwarnj j!j"Nj#Operations.openuh+hhh,hKhj#ubh handler to return the new }(hj#hhhNhNubh)}(h `FileInfo`h]h)}(hjQh]hFileInfo}(hjShhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjOubah}(h!]h#]h%]h']h)]refdocj refdomainj]reftypeobj refexplicitrefwarnj j!j"Nj#FileInfouh+hhh,hKhj#ubhJ struct to allow for modification of certain kernel file attributes, e.g. }(hj#hhhNhNubh)}(h ``direct_io``h]h direct_io}(hjshhhNhNubah}(h!]h#]h%]h']h)]uh+hhj#ubh.}(hj#hhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjubhJ)}(hpNote that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed.h]hpNote that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKhjubeh}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKhj hhubeh}(h!] release-2-0-0ah#]h%] release 2.0.0ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 1.3.1 (2019-07-17)h]hRelease 1.3.1 (2019-07-17)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKubh?)}(hhh]hD)}(h5Fixed a bug in the :file:`hello_asyncio.py` example. h]hJ)}(h4Fixed a bug in the :file:`hello_asyncio.py` example.h](hFixed a bug in the }(hjhhhNhNubh)}(h:file:`hello_asyncio.py`h]hhello_asyncio.py}(hjhhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhjubh example.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKhjhhubeh}(h!]release-1-3-1-2019-07-17ah#]h%]release 1.3.1 (2019-07-17)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 1.3 (2019-06-02)h]hRelease 1.3 (2019-06-02)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKubh?)}(hhh]hD)}(h}Fixed a bug in the :file:`tmpfs.py` and :file:`passthroughfs.py` example file systems (so rename operations no longer fail). h]hJ)}(h|Fixed a bug in the :file:`tmpfs.py` and :file:`passthroughfs.py` example file systems (so rename operations no longer fail).h](hFixed a bug in the }(hjhhhNhNubh)}(h:file:`tmpfs.py`h]htmpfs.py}(hjhhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhjubh and }(hjhhhNhNubh)}(h:file:`passthroughfs.py`h]hpassthroughfs.py}(hj1hhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhjubh< example file systems (so rename operations no longer fail).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChj hhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKhjhhubeh}(h!]release-1-3-2019-06-02ah#]h%]release 1.3 (2019-06-02)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 1.2 (2018-12-22)h]hRelease 1.2 (2018-12-22)}(hjchhhNhNubah}(h!]h#]h%]h']h)]uh+hhj`hhhh,hKubh?)}(hhh](hD)}(hBClarified that `invalidate_inode` may block in some circumstances.h]hJ)}(hjvh](hClarified that }(hjxhhhNhNubh)}(h`invalidate_inode`h]h)}(hjh]hinvalidate_inode}(hjhhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnj j!j"Nj#invalidate_inodeuh+hhh,hKhjxubh! may block in some circumstances.}(hjxhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjtubah}(h!]h#]h%]h']h)]uh+hChjqhhhh,hNubhD)}(hhh,hKhj`hhubeh}(h!]release-1-2-2018-12-22ah#]h%]release 1.2 (2018-12-22)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 1.1 (2018-11-02)h]hRelease 1.1 (2018-11-02)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKubh?)}(hhh](hD)}(hOFixed :file:`examples/passthroughfs.py` - was not handling readdir() correctly.h]hJ)}(hOFixed :file:`examples/passthroughfs.py` - was not handling readdir() correctly.h](hFixed }(hjhhhNhNubh)}(h!:file:`examples/passthroughfs.py`h]hexamples/passthroughfs.py}(hjhhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhjubh( - was not handling readdir() correctly.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h`invalidate_entry_async` now accepts an additional *ignore_enoent* parameter. When this is set, no errors are logged if the kernel is not actually aware of the entry that should have been removed. h]hJ)}(h`invalidate_entry_async` now accepts an additional *ignore_enoent* parameter. When this is set, no errors are logged if the kernel is not actually aware of the entry that should have been removed.h](h)}(h`invalidate_entry_async`h]h)}(hj h]hinvalidate_entry_async}(hj"hhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainj,reftypeobj refexplicitrefwarnj j!j"Nj#invalidate_entry_asyncuh+hhh,hKhjubh now accepts an additional }(hjhhhNhNubh emphasis)}(h*ignore_enoent*h]h ignore_enoent}(hjDhhhNhNubah}(h!]h#]h%]h']h)]uh+jBhjubh parameter. When this is set, no errors are logged if the kernel is not actually aware of the entry that should have been removed.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hKhjhhubeh}(h!]release-1-1-2018-11-02ah#]h%]release 1.1 (2018-11-02)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 1.0 (2018-10-08)h]hRelease 1.0 (2018-10-08)}(hjshhhNhNubah}(h!]h#]h%]h']h)]uh+hhjphhhh,hKubh?)}(hhh]hD)}(h Added a new `syncfs` function. h]hJ)}(hAdded a new `syncfs` function.h](h Added a new }(hjhhhNhNubh)}(h`syncfs`h]h)}(hjh]hsyncfs}(hjhhhNhNubah}(h!]h#](j pypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnj j!j"Nj#syncfsuh+hhh,hKhjubh function.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubah}(h!]h#]h%]h']h)]jjuh+h>hh,hKhjphhubeh}(h!]release-1-0-2018-10-08ah#]h%]release 1.0 (2018-10-08)ah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hRelease 0.9 (2018-09-27)h]hRelease 0.9 (2018-09-27)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKubh?)}(hhh](hD)}(h First releaseh]hJ)}(hjh]h First release}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(h@pyfuse3 was forked from python-llfuse - thanks for all the work!h]hJ)}(hjh]h@pyfuse3 was forked from python-llfuse - thanks for all the work!}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKhjubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubhD)}(hpIf you need compatibility with Python 2.x or libfuse 2.x, you may want to take a look at python-llfuse instead. h]hJ)}(hoIf you need compatibility with Python 2.x or libfuse 2.x, you may want to take a look at python-llfuse instead.h]hoIf you need compatibility with Python 2.x or libfuse 2.x, you may want to take a look at python-llfuse instead.}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hIhh,hKhj ubah}(h!]h#]h%]h']h)]uh+hChjhhhh,hNubeh}(h!]h#]h%]h']h)]jjuh+h>hh,hKhjhhubeh}(h!]release-0-9-2018-09-27ah#]h%]release 0.9 (2018-09-27)ah']h)]uh+h hh hhhh,hKubeh}(h!] changelogah#]h%] changelogah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]source$/home/user/w/pyfuse3/rst/changes.rstuh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjb error_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcejE _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j; j8 jjjrjojTjQjjj|jyjjj,j)jfjcjjjjjjj]jZjjjmjjjjj3 j0 u nametypes}(j; jjrjTjj|jj,jfjjjj]jjmjj3 uh!}(j8 h jh-jojjQjujjWjyj jjj)jjcj/jjijj jjjZjjj`jjjjjpj0 ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log]rst/changes.rst(NNNNta decorationNhhub.pyfuse3-3.4.0/doc/html/.doctrees/data.doctree0000644000175000017500000021340414663711064020765 0ustar useruser00000000000000sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(hData Structuresh]h TextData Structures}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh!/home/user/w/pyfuse3/rst/data.rsthKubhindex)}(hhh]h}(h!]h#]h%]h']h)]entries](singleENOATTR (in module pyfuse3)pyfuse3.ENOATTRhNtauh+h-hh hhhh,hNubhdesc)}(hhh](hdesc_signature)}(hENOATTRh](h desc_addname)}(hpyfuse3.h]hpyfuse3.}(hhKhhhNhNubah}(h!]h#]( sig-prename descclassnameeh%]h']h)] xml:spacepreserveuh+hIhhEhhhh,hKubh desc_name)}(hhGh]hENOATTR}(hh_hhhNhNubah}(h!]h#](sig-namedescnameeh%]h']h)]h[h\uh+h]hhEhhhh,hKubeh}(h!]hhhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:ROOT_INODE (in module pyfuse3)pyfuse3.ROOT_INODEhNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(h ROOT_INODEh](hJ)}(hpyfuse3.h]hpyfuse3.}(hhhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhhhhhh,hK ubh^)}(hhh]h ROOT_INODE}(hhhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hhhhhh,hK ubeh}(h!]hah#](hqhreh%]h']h)]hvhwhxhhyhhzhwh憔h|huh+hChh,hK hhhhubh~)}(hhh]h)}(hIThe inode of the root directory, i.e. the mount point of the file system.h]hIThe inode of the root directory, i.e. the mount point of the file system.}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhh,hKhj hhubah}(h!]h#]h%]h']h)]uh+h}hhhhhh,hK ubeh}(h!]h#](pydataeh%]h']h)]hj$hj%hj%hЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:#RENAME_EXCHANGE (in module pyfuse3)pyfuse3.RENAME_EXCHANGEhNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(hRENAME_EXCHANGEh](hJ)}(hpyfuse3.h]hpyfuse3.}(hj>hhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhj:hhhh,hKubh^)}(hj<h]hRENAME_EXCHANGE}(hjLhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj:hhhh,hKubeh}(h!]j5ah#](hqhreh%]h']h)]hvhwhxhhyj<hzhwj<h|j<uh+hChh,hKhj7hhubh~)}(hhh]h)}(hA flag that may be passed to the `~Operations.rename` handler. When passed, the handler must atomically exchange the two paths (which must both exist).h](h!A flag that may be passed to the }(hjchhhNhNubh)}(h`~Operations.rename`h]h)}(hjmh]hrename}(hjohhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjkubah}(h!]h#]h%]h']h)]refdoch refdomainjyreftypeobj refexplicitrefwarnhhwhNhOperations.renameuh+hhh,hKhjcubhb handler. When passed, the handler must atomically exchange the two paths (which must both exist).}(hjchhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhj`hhubah}(h!]h#]h%]h']h)]uh+h}hj7hhhh,hKubeh}(h!]h#](pydataeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:$RENAME_NOREPLACE (in module pyfuse3)pyfuse3.RENAME_NOREPLACEhNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(hRENAME_NOREPLACEh](hJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhh,hKubh^)}(hjh]hRENAME_NOREPLACE}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKubeh}(h!]jah#](hqhreh%]h']h)]hvhwhxhhyjhzhwjh|juh+hChh,hKhjhhubh~)}(hhh]h)}(h|A flag that may be passed to the `~Operations.rename` handler. When passed, the handler must not replace an existing target.h](h!A flag that may be passed to the }(hjhhhNhNubh)}(h`~Operations.rename`h]h)}(hjh]hrename}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhNhOperations.renameuh+hhh,hKhjubhG handler. When passed, the handler must not replace an existing target.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKubeh}(h!]h#](pydataeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:#default_options (in module pyfuse3)pyfuse3.default_optionshNtauh+h-hh hhhNhNubh?)}(hhh](hD)}(hdefault_optionsh](hJ)}(hpyfuse3.h]hpyfuse3.}(hj2hhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhj.hhhh,hKubh^)}(hj0h]hdefault_options}(hj@hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj.hhhh,hKubeh}(h!]j)ah#](hqhreh%]h']h)]hvhwhxhhyj0hzhwj0h|j0uh+hChh,hKhj+hhubh~)}(hhh](h)}(hThis is a recommended set of options that should be passed to `pyfuse3.init` to get reasonable behavior and performance. pyfuse3 is compatible with any other combination of options as well, but you should only deviate from the defaults with good reason.h](h>This is a recommended set of options that should be passed to }(hjWhhhNhNubh)}(h`pyfuse3.init`h]h)}(hjah]h pyfuse3.init}(hjchhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhj_ubah}(h!]h#]h%]h']h)]refdoch refdomainjmreftypeobj refexplicitrefwarnhhwhNh pyfuse3.inituh+hhh,hKhjWubh to get reasonable behavior and performance. pyfuse3 is compatible with any other combination of options as well, but you should only deviate from the defaults with good reason.}(hjWhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjThhubh)}(h(The :samp:`fsname=` option is guaranteed never to be included in the default options, so you can always safely add it to the set).h](h(The }(hjhhhNhNubh)}(h:samp:`fsname=`h]h fsname=}(hjhhhNhNubah}(h!]h#]sampah%]h']h)]rolesampuh+hhjubho option is guaranteed never to be included in the default options, so you can always safely add it to the set).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hK$hjThhubh)}(hThe default options are:h]hThe default options are:}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhh,hK'hjThhubh bullet_list)}(hhh]h list_item)}(h|``default_permissions`` enables permission checking by kernel. Without this any umask (or uid/gid) would not have an effect.h]h)}(h|``default_permissions`` enables permission checking by kernel. Without this any umask (or uid/gid) would not have an effect.h](h)}(h``default_permissions``h]hdefault_permissions}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubhe enables permission checking by kernel. Without this any umask (or uid/gid) would not have an effect.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hK)hjubah}(h!]h#]h%]h']h)]uh+jhjhhhh,hNubah}(h!]h#]h%]h']h)]bullet*uh+jhh,hK)hjThhubeh}(h!]h#]h%]h']h)]uh+h}hj+hhhh,hKubeh}(h!]h#](pydataeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h: FUSEErrorpyfuse3.FUSEErrorhNtauh+h-hh hhh'docstring of pyfuse3.__init__.FUSEErrorhNubh?)}(hhh](hD)}(hjh](hdesc_annotation)}(h6[<#text: 'exception'>, >]h](h exception}(hjhhhNhNubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h!]h#]wah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhh'docstring of pyfuse3.__init__.FUSEErrorhKubhJ)}(hpyfuse3.h]hpyfuse3.}(hj4hhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhj3hKubh^)}(hjh]h FUSEError}(hjBhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhj3hKubeh}(h!]j ah#](hqhreh%]h']h)]hvpyfuse3hxhhyjhzjUjh|juh+hChj3hKhj hhubh~)}(hhh]h)}(hThis exception may be raised by request handlers to indicate that the requested operation could not be carried out. The system call that resulted in the request (if any) will then fail with error code *errno_*.h](hThis exception may be raised by request handlers to indicate that the requested operation could not be carried out. The system call that resulted in the request (if any) will then fail with error code }(hjZhhhNhNubh emphasis)}(h*errno_*h]herrno_}(hjdhhhNhNubah}(h!]h#]h%]h']h)]uh+jbhjZubh.}(hjZhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhj hKhjWhhubah}(h!]h#]h%]h']h)]uh+h}hj hhhj3hKubeh}(h!]h#](py exceptioneh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hj hNubh comment)}(h-autoclass currently doesn't work for NewTypesh]h-autoclass currently doesn't work for NewTypes}hjsbah}(h!]h#]h%]h']h)]h[h\uh+jhh hhhh,hK.ubj)}(h1https://github.com/sphinx-doc/sphinx/issues/11552h]h1https://github.com/sphinx-doc/sphinx/issues/11552}hjsbah}(h!]h#]h%]h']h)]h[h\uh+jhh hhhh,hK0ubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:FileHandleT (class in pyfuse3)pyfuse3.FileHandleThNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(h FileHandleTh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhhh,hK1ubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhh,hK1ubh^)}(hjh]h FileHandleT}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hK1ubeh}(h!]jah#](hqhreh%]h']h)]hvhwhxhhyjhzhwjh|juh+hChh,hK1hjhhubh~)}(hhh]h)}(hA subclass of `int`, representing an integer file handle produced by a `~Operations.create`, `~Operations.open`, or `~Operations.opendir` call.h](hA subclass of }(hjhhhNhNubh)}(h`int`h]h)}(hjh]hint}(hj hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhjhintuh+hhh,hKhjubh4, representing an integer file handle produced by a }(hjhhhNhNubh)}(h`~Operations.create`h]h)}(hj,h]hcreate}(hj.hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhj*ubah}(h!]h#]h%]h']h)]refdoch refdomainj8reftypeobj refexplicitrefwarnhhwhjhOperations.createuh+hhh,hKhjubh, }(hjhhhNhNubh)}(h`~Operations.open`h]h)}(hjPh]hopen}(hjRhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjNubah}(h!]h#]h%]h']h)]refdoch refdomainj\reftypeobj refexplicitrefwarnhhwhjhOperations.openuh+hhh,hKhjubh, or }(hjhhhNhNubh)}(h`~Operations.opendir`h]h)}(hjth]hopendir}(hjvhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjrubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhjhOperations.opendiruh+hhh,hKhjubh call.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hK3hjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hK1ubeh}(h!]h#](pyclasseh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:FileNameT (class in pyfuse3)pyfuse3.FileNameThNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(h FileNameTh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhhh,hK6ubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhh,hK6ubh^)}(hjh]h FileNameT}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hK6ubeh}(h!]jah#](hqhreh%]h']h)]hvhwhxhhyjhzhwjh|juh+hChh,hK6hjhhubh~)}(hhh]h)}(hVA subclass of `bytes`, representing a file name, with no embedded zero-bytes (``\0``).h](hA subclass of }(hjhhhNhNubh)}(h`bytes`h]h)}(hj h]hbytes}(hj hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhjhbytesuh+hhh,hKhjubh9, representing a file name, with no embedded zero-bytes (}(hjhhhNhNubh)}(h``\0``h]h\0}(hj,hhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hK8hjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hK6ubeh}(h!]h#](pyclasseh%]h']h)]hjMhjNhjNhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:FlagT (class in pyfuse3) pyfuse3.FlagThNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(hFlagTh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjghhhNhNubj)}(h h]h }(hjohhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjgubeh}(h!]h#]h%]h']h)]h[h\uh+jhjchhhh,hK;ubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjchhhh,hK;ubh^)}(hjeh]hFlagT}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjchhhh,hK;ubeh}(h!]j^ah#](hqhreh%]h']h)]hvhwhxhhyjehzhwjeh|jeuh+hChh,hK;hj`hhubh~)}(hhh]h)}(hOA subclass of `int`, representing flags modifying the behavior of an operation.h](hA subclass of }(hjhhhNhNubh)}(h`int`h]h)}(hjh]hint}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhjehintuh+hhh,hKhjubh<, representing flags modifying the behavior of an operation.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hK=hjhhubah}(h!]h#]h%]h']h)]uh+h}hj`hhhh,hK;ubeh}(h!]h#](pyclasseh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:InodeT (class in pyfuse3)pyfuse3.InodeThNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(hInodeTh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhhh,hK@ubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhh,hK@ubh^)}(hjh]hInodeT}(hj'hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hK@ubeh}(h!]jah#](hqhreh%]h']h)]hvhwhxhhyjhzhwjh|juh+hChh,hK@hjhhubh~)}(hhh]h)}(h2A subclass of `int`, representing an inode number.h](hA subclass of }(hj>hhhNhNubh)}(h`int`h]h)}(hjHh]hint}(hjJhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjFubah}(h!]h#]h%]h']h)]refdoch refdomainjTreftypeobj refexplicitrefwarnhhwhjhintuh+hhh,hKhj>ubh, representing an inode number.}(hj>hhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKBhj;hhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hK@ubeh}(h!]h#](pyclasseh%]h']h)]hjyhjzhjzhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:ModeT (class in pyfuse3) pyfuse3.ModeThNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(hModeTh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhhh,hKDubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhh,hKDubh^)}(hjh]hModeT}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKDubeh}(h!]jah#](hqhreh%]h']h)]hvhwhxhhyjhzhwjh|juh+hChh,hKDhjhhubh~)}(hhh]h)}(h.A subclass of `int`, representing a file mode.h](hA subclass of }(hjhhhNhNubh)}(h`int`h]h)}(hjh]hint}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhjhintuh+hhh,hKhjubh, representing a file mode.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKFhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKDubeh}(h!]h#](pyclasseh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:XAttrNameT (class in pyfuse3)pyfuse3.XAttrNameThNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(h XAttrNameTh](j)}(h2[<#text: 'class'>, >]h](hclass}(hj)hhhNhNubj)}(h h]h }(hj1hhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhj)ubeh}(h!]h#]h%]h']h)]h[h\uh+jhj%hhhh,hKHubhJ)}(hpyfuse3.h]hpyfuse3.}(hjEhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhj%hhhh,hKHubh^)}(hj'h]h XAttrNameT}(hjShhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj%hhhh,hKHubeh}(h!]j ah#](hqhreh%]h']h)]hvhwhxhhyj'hzhwj'h|j'uh+hChh,hKHhj"hhubh~)}(hhh]h)}(heA subclass of `bytes`, representing an extended attribute name, with no embedded zero-bytes (``\0``).h](hA subclass of }(hjjhhhNhNubh)}(h`bytes`h]h)}(hjth]hbytes}(hjvhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjrubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhhwhj'hbytesuh+hhh,hKhjjubhH, representing an extended attribute name, with no embedded zero-bytes (}(hjjhhhNhNubh)}(h``\0``h]h\0}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjjubh).}(hjjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKJhjghhubah}(h!]h#]h%]h']h)]uh+h}hj"hhhh,hKHubeh}(h!]h#](pyclasseh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:!RequestContext (class in pyfuse3)pyfuse3.RequestContexthNtauh+h-hh hhhNhNubh?)}(hhh](hD)}(hRequestContexth](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhh,docstring of pyfuse3.__init__.RequestContexthKubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhjhKubh^)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhjhKubeh}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxhhyjhzjjh|juh+hChjhKhjhhubh~)}(hhh](h)}(hInstances of this class are passed to some `Operations` methods to provide information about the caller of the syscall that initiated the request.h](h+Instances of this class are passed to some }(hjhhhNhNubh)}(h `Operations`h]h)}(hjh]h Operations}(hj hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainj*reftypeobj refexplicitrefwarnhjhjh Operationsuh+hh,docstring of pyfuse3.__init__.RequestContexthKhjubh[ methods to provide information about the caller of the syscall that initiated the request.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hh,docstring of pyfuse3.__init__.RequestContexthKhjhhubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:&pid (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.pidhNtauh+h-hjhhhNhNubh?)}(hhh](hD)}(hpidh]h^)}(hj[h]hpid}(hj]hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjYhhhh,hKOubah}(h!]jTah#](hqhreh%]h']h)]hvjhxjhyRequestContext.pidhzjRequestContextpidh|jpuh+hChh,hKOhjVhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjVhhhh,hKOubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:&uid (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.uidhNtauh+h-hjhhhNhNubh?)}(hhh](hD)}(huidh]h^)}(hjh]huid}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKQubah}(h!]jah#](hqhreh%]h']h)]hvjhxjhyRequestContext.uidhzjRequestContextuidh|juh+hChh,hKQhjhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKQubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:&gid (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.gidhNtauh+h-hjhhhNhNubh?)}(hhh](hD)}(hgidh]h^)}(hjh]hgid}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKSubah}(h!]jah#](hqhreh%]h']h)]hvjhxjhyRequestContext.gidhzjRequestContextgidh|juh+hChh,hKShjhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKSubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:(umask (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.umaskhNtauh+h-hjhhhNhNubh?)}(hhh](hD)}(humaskh]h^)}(hj h]humask}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hKUubah}(h!]j ah#](hqhreh%]h']h)]hvjhxjhyRequestContext.umaskhzjRequestContextumaskh|j' uh+hChh,hKUhj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hKUubeh}(h!]h#](py attributeeh%]h']h)]hj7 hj8 hj8 hЉhщh҉uh+h>hhhjhNhNubeh}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](pyclasseh%]h']h)]hjE hjF hjF hЉhщh҉uh+h>hhhh hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:StatvfsData (class in pyfuse3)pyfuse3.StatvfsDatahNtauh+h-hh hhhNhNubh?)}(hhh](hD)}(h StatvfsDatah](j)}(h2[<#text: 'class'>, >]h](hclass}(hj_ hhhNhNubj)}(h h]h }(hjg hhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhj_ ubeh}(h!]h#]h%]h']h)]h[h\uh+jhj[ hhh)docstring of pyfuse3.__init__.StatvfsDatahKubhJ)}(hpyfuse3.h]hpyfuse3.}(hj| hhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhj[ hhhj{ hKubh^)}(hj] h]h StatvfsData}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj[ hhhj{ hKubeh}(h!]jV ah#](hqhreh%]h']h)]hvpyfuse3hxhhyj] hzj j] h|j] uh+hChj{ hKhjX hhubh~)}(hhh](h)}(hInstances of this class store information about the file system. The attributes correspond to the elements of the ``statvfs`` struct, see :manpage:`statvfs(2)` for details.h](hrInstances of this class store information about the file system. The attributes correspond to the elements of the }(hj hhhNhNubh)}(h ``statvfs``h]hstatvfs}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj ubh struct, see }(hj hhhNhNubhmanpage)}(h:manpage:`statvfs(2)`h]h statvfs(2)}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]h[h\path statvfs(2)pagestatvfssection2uh+j hj ubh for details.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+hh)docstring of pyfuse3.__init__.StatvfsDatahKhj hhubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:'f_bsize (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_bsizehNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_bsizeh]h^)}(hj h]hf_bsize}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hKYubah}(h!]j ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_bsizehzj StatvfsDataf_bsizeh|j uh+hChh,hKYhj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hKYubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:(f_frsize (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_frsizehNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_frsizeh]h^)}(hj- h]hf_frsize}(hj/ hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj+ hhhh,hK[ubah}(h!]j& ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_frsizehzj StatvfsDataf_frsizeh|jB uh+hChh,hK[hj( hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj( hhhh,hK[ubeh}(h!]h#](py attributeeh%]h']h)]hjR hjS hjS hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:(f_blocks (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_blockshNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_blocksh]h^)}(hjj h]hf_blocks}(hjl hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjh hhhh,hK]ubah}(h!]jc ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_blockshzj StatvfsDataf_blocksh|j uh+hChh,hK]hje hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hje hhhh,hK]ubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:'f_bfree (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_bfreehNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_bfreeh]h^)}(hj h]hf_bfree}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hK_ubah}(h!]j ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_bfreehzj StatvfsDataf_bfreeh|j uh+hChh,hK_hj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hK_ubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:(f_bavail (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_bavailhNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_bavailh]h^)}(hj h]hf_bavail}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hKaubah}(h!]j ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_bavailhzj StatvfsDataf_bavailh|j uh+hChh,hKahj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hKaubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:'f_files (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_fileshNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_filesh]h^)}(hj! h]hf_files}(hj# hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hKcubah}(h!]j ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_fileshzj StatvfsDataf_filesh|j6 uh+hChh,hKchj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hKcubeh}(h!]h#](py attributeeh%]h']h)]hjF hjG hjG hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:'f_ffree (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_ffreehNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_ffreeh]h^)}(hj^ h]hf_ffree}(hj` hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj\ hhhh,hKeubah}(h!]jW ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_ffreehzj StatvfsDataf_ffreeh|js uh+hChh,hKehjY hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjY hhhh,hKeubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:(f_favail (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_favailhNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(hf_favailh]h^)}(hj h]hf_favail}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hKgubah}(h!]j ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_favailhzj StatvfsDataf_favailh|j uh+hChh,hKghj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hKgubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:)f_namemax (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_namemaxhNtauh+h-hj hhhNhNubh?)}(hhh](hD)}(h f_namemaxh]h^)}(hj h]h f_namemax}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhhh,hKiubah}(h!]j ah#](hqhreh%]h']h)]hvj hxj] hyStatvfsData.f_namemaxhzj StatvfsData f_namemaxh|j uh+hChh,hKihj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhh,hKiubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhj hNhNubeh}(h!]h#]h%]h']h)]uh+h}hjX hhhj{ hKubeh}(h!]h#](pyclasseh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhh hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:"EntryAttributes (class in pyfuse3)pyfuse3.EntryAttributeshNtauh+h-hh hhhNhNubh?)}(hhh](hD)}(hEntryAttributesh](j)}(h2[<#text: 'class'>, >]h](hclass}(hj% hhhNhNubj)}(h h]h }(hj- hhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhj% ubeh}(h!]h#]h%]h']h)]h[h\uh+jhj! hhh-docstring of pyfuse3.__init__.EntryAttributeshKubhJ)}(hpyfuse3.h]hpyfuse3.}(hjB hhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhj! hhhjA hKubh^)}(hj# h]hEntryAttributes}(hjP hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj! hhhjA hKubeh}(h!]j ah#](hqhreh%]h']h)]hvpyfuse3hxhhyj# hzjc j# h|j# uh+hChjA hKhj hhubh~)}(hhh](h)}(hInstances of this class store attributes of directory entries. Most of the attributes correspond to the elements of the ``stat`` C struct as returned by e.g. ``fstat`` and should be self-explanatory.h](hxInstances of this class store attributes of directory entries. Most of the attributes correspond to the elements of the }(hjh hhhNhNubh)}(h``stat``h]hstat}(hjp hhhNhNubah}(h!]h#]h%]h']h)]uh+hhjh ubh C struct as returned by e.g. }(hjh hhhNhNubh)}(h ``fstat``h]hfstat}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhjh ubh and should be self-explanatory.}(hjh hhhNhNubeh}(h!]h#]h%]h']h)]uh+hh-docstring of pyfuse3.__init__.EntryAttributeshKhje hhubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:*st_ino (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_inohNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_inoh]h^)}(hst_inoh]hst_ino}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhh+docstring of pyfuse3.EntryAttributes.st_inohKubah}(h!]j ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_inohzj EntryAttributesst_inoh|j uh+hChj hKhj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhj hKubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:.generation (pyfuse3.EntryAttributes attribute)"pyfuse3.EntryAttributes.generationhNtauh+h-hje hhh/docstring of pyfuse3.EntryAttributes.generationhNubh?)}(hhh](hD)}(hEntryAttributes.generationh]h^)}(h generationh]h generation}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhh/docstring of pyfuse3.EntryAttributes.generationhKubah}(h!]j ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.generationhzj EntryAttributes generationh|j uh+hChj hKhj hhubh~)}(hhh]h)}(hThe inode generation numberh]hThe inode generation number}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj hKhj hhubah}(h!]h#]h%]h']h)]uh+h}hj hhhj hKubeh}(h!]h#](py attributeeh%]h']h)]hj% hj& hj& hЉhщh҉uh+h>hhhje hj hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:1entry_timeout (pyfuse3.EntryAttributes attribute)%pyfuse3.EntryAttributes.entry_timeouthNtauh+h-hje hhh2docstring of pyfuse3.EntryAttributes.entry_timeouthNubh?)}(hhh](hD)}(hEntryAttributes.entry_timeouth]h^)}(h entry_timeouth]h entry_timeout}(hj@ hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj< hhh2docstring of pyfuse3.EntryAttributes.entry_timeouthKubah}(h!]j6 ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.entry_timeouthzjU EntryAttributes entry_timeouth|jV uh+hChjN hKhj9 hhubh~)}(hhh](h)}(h>Validity timeout for the name/existence of the directory entryh]h>Validity timeout for the name/existence of the directory entry}(hj] hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj8 hKhjZ hhubh)}(h6Floating point numbers may be used. Units are seconds.h]h6Floating point numbers may be used. Units are seconds.}(hjk hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj8 hKhjZ hhubeh}(h!]h#]h%]h']h)]uh+h}hj9 hhhjN hKubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhje hj8 hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:0attr_timeout (pyfuse3.EntryAttributes attribute)$pyfuse3.EntryAttributes.attr_timeouthNtauh+h-hje hhh1docstring of pyfuse3.EntryAttributes.attr_timeouthNubh?)}(hhh](hD)}(hEntryAttributes.attr_timeouth]h^)}(h attr_timeouth]h attr_timeout}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhh1docstring of pyfuse3.EntryAttributes.attr_timeouthKubah}(h!]j ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.attr_timeouthzj EntryAttributes attr_timeouth|j uh+hChj hKhj hhubh~)}(hhh](h)}(h:Validity timeout for the attributes of the directory entryh]h:Validity timeout for the attributes of the directory entry}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj hKhj hhubh)}(h6Floating point numbers may be used. Units are seconds.h]h6Floating point numbers may be used. Units are seconds.}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj hKhj hhubeh}(h!]h#]h%]h']h)]uh+h}hj hhhj hKubeh}(h!]h#](py attributeeh%]h']h)]hj hj hj hЉhщh҉uh+h>hhhje hj hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:+st_mode (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_modehNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_modeh]h^)}(hst_modeh]hst_mode}(hj hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj hhh,docstring of pyfuse3.EntryAttributes.st_modehKubah}(h!]j ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_modehzjEntryAttributesst_modeh|juh+hChjhKhj hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj hhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhj hj hЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:,st_nlink (pyfuse3.EntryAttributes attribute) pyfuse3.EntryAttributes.st_nlinkhNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_nlinkh]h^)}(hst_nlinkh]hst_nlink}(hj9hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj5hhh-docstring of pyfuse3.EntryAttributes.st_nlinkhKubah}(h!]j0ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_nlinkhzjNEntryAttributesst_nlinkh|jOuh+hChjGhKhj2hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj2hhhjGhKubeh}(h!]h#](py attributeeh%]h']h)]hj_hj`hj`hЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:*st_uid (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_uidhNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_uidh]h^)}(hst_uidh]hst_uid}(hjyhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjuhhh+docstring of pyfuse3.EntryAttributes.st_uidhKubah}(h!]jpah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_uidhzjEntryAttributesst_uidh|juh+hChjhKhjrhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjrhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:*st_gid (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_gidhNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_gidh]h^)}(hst_gidh]hst_gid}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh+docstring of pyfuse3.EntryAttributes.st_gidhKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_gidhzjEntryAttributesst_gidh|juh+hChjhKhjhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:+st_rdev (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_rdevhNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_rdevh]h^)}(hst_rdevh]hst_rdev}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh,docstring of pyfuse3.EntryAttributes.st_rdevhKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_rdevhzjEntryAttributesst_rdevh|juh+hChjhKhjhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhj hj hЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:+st_size (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_sizehNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_sizeh]h^)}(hst_sizeh]hst_size}(hj9hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj5hhh,docstring of pyfuse3.EntryAttributes.st_sizehKubah}(h!]j0ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_sizehzjNEntryAttributesst_sizeh|jOuh+hChjGhKhj2hhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hj2hhhjGhKubeh}(h!]h#](py attributeeh%]h']h)]hj_hj`hj`hЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:.st_blksize (pyfuse3.EntryAttributes attribute)"pyfuse3.EntryAttributes.st_blksizehNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_blksizeh]h^)}(h st_blksizeh]h st_blksize}(hjyhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjuhhh/docstring of pyfuse3.EntryAttributes.st_blksizehKubah}(h!]jpah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_blksizehzjEntryAttributes st_blksizeh|juh+hChjhKhjrhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjrhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:-st_blocks (pyfuse3.EntryAttributes attribute)!pyfuse3.EntryAttributes.st_blockshNtauh+h-hje hhhNhNubh?)}(hhh](hD)}(hEntryAttributes.st_blocksh]h^)}(h st_blocksh]h st_blocks}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh.docstring of pyfuse3.EntryAttributes.st_blockshKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_blockshzjEntryAttributes st_blocksh|juh+hChjhKhjhhubh~)}(hhh]h}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhje hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:/st_atime_ns (pyfuse3.EntryAttributes attribute)#pyfuse3.EntryAttributes.st_atime_nshNtauh+h-hje hhh0docstring of pyfuse3.EntryAttributes.st_atime_nshNubh?)}(hhh](hD)}(hEntryAttributes.st_atime_nsh]h^)}(h st_atime_nsh]h st_atime_ns}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh0docstring of pyfuse3.EntryAttributes.st_atime_nshKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_atime_nshzjEntryAttributes st_atime_nsh|juh+hChjhKhjhhubh~)}(hhh]h)}(h,Time of last access in (integer) nanosecondsh]h,Time of last access in (integer) nanoseconds}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hj.hj/hj/hЉhщh҉uh+h>hhhje hjhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:/st_ctime_ns (pyfuse3.EntryAttributes attribute)#pyfuse3.EntryAttributes.st_ctime_nshNtauh+h-hje hhh0docstring of pyfuse3.EntryAttributes.st_ctime_nshNubh?)}(hhh](hD)}(hEntryAttributes.st_ctime_nsh]h^)}(h st_ctime_nsh]h st_ctime_ns}(hjIhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjEhhh0docstring of pyfuse3.EntryAttributes.st_ctime_nshKubah}(h!]j?ah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_ctime_nshzj^EntryAttributes st_ctime_nsh|j_uh+hChjWhKhjBhhubh~)}(hhh]h)}(h8Time of last inode modification in (integer) nanosecondsh]h8Time of last inode modification in (integer) nanoseconds}(hjfhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjAhKhjchhubah}(h!]h#]h%]h']h)]uh+h}hjBhhhjWhKubeh}(h!]h#](py attributeeh%]h']h)]hj}hj~hj~hЉhщh҉uh+h>hhhje hjAhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:/st_mtime_ns (pyfuse3.EntryAttributes attribute)#pyfuse3.EntryAttributes.st_mtime_nshNtauh+h-hje hhh0docstring of pyfuse3.EntryAttributes.st_mtime_nshNubh?)}(hhh](hD)}(hEntryAttributes.st_mtime_nsh]h^)}(h st_mtime_nsh]h st_mtime_ns}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh0docstring of pyfuse3.EntryAttributes.st_mtime_nshKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxj# hyEntryAttributes.st_mtime_nshzjEntryAttributes st_mtime_nsh|juh+hChjhKhjhhubh~)}(hhh]h)}(h2Time of last modification in (integer) nanosecondsh]h2Time of last modification in (integer) nanoseconds}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhje hjhNubeh}(h!]h#]h%]h']h)]uh+h}hj hhhjA hKubeh}(h!]h#](pyclasseh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:FileInfo (class in pyfuse3)pyfuse3.FileInfohNtauh+h-hh hhhNhNubh?)}(hhh](hD)}(hFileInfoh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhh&docstring of pyfuse3.__init__.FileInfohKubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhjhKubh^)}(hjh]hFileInfo}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhjhKubeh}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxhhyjhzj2jh|juh+hChjhKhjhhubh~)}(hhh](h)}(hInstances of this class store options and data that `Operations.open` returns. The attributes correspond to the elements of the ``fuse_file_info`` struct that are relevant to the `Operations.open` function.h](h4Instances of this class store options and data that }(hj7hhhNhNubh)}(h`Operations.open`h]h)}(hjAh]hOperations.open}(hjChhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhj?ubah}(h!]h#]h%]h']h)]refdoch refdomainjMreftypeobj refexplicitrefwarnhj2hjhOperations.openuh+hh&docstring of pyfuse3.__init__.FileInfohKhj7ubh; returns. The attributes correspond to the elements of the }(hj7hhhNhNubh)}(h``fuse_file_info``h]hfuse_file_info}(hjdhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj7ubh! struct that are relevant to the }(hj7hhhNhNubh)}(h`Operations.open`h]h)}(hjxh]hOperations.open}(hjzhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjvubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhj2hjhOperations.openuh+hhj_hKhj7ubh function.}(hj7hhhNhNubeh}(h!]h#]h%]h']h)]uh+hh&docstring of pyfuse3.__init__.FileInfohKhj4hhubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:fh (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.fhhNtauh+h-hj4hhhh,hNubh?)}(hhh](hD)}(h FileInfo.fhh]h^)}(hfhh]hfh}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh docstring of pyfuse3.FileInfo.fhhKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxjhy FileInfo.fhhzjFileInfofhh|juh+hChjhKhjhhubh~)}(hhh](h)}(hfh: 'uint64_t'h]hfh: ‘uint64_t’}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hh docstring of pyfuse3.FileInfo.fhhKhjhhubh)}(hTThis attribute must be set to the file handle to be returned from `Operations.open`.h](hBThis attribute must be set to the file handle to be returned from }(hjhhhNhNubh)}(h`Operations.open`h]h)}(hjh]hOperations.open}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjhOperations.openuh+hhjhKhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubeh}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhj4hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:&direct_io (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.direct_iohNtauh+h-hj4hhhh,hNubh?)}(hhh](hD)}(hFileInfo.direct_ioh]h^)}(h direct_ioh]h direct_io}(hj7hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj3hhh'docstring of pyfuse3.FileInfo.direct_iohKubah}(h!]j.ah#](hqhreh%]h']h)]hvpyfuse3hxjhyFileInfo.direct_iohzjLFileInfo direct_ioh|jMuh+hChjEhKhj0hhubh~)}(hhh](h)}(hdirect_io: 'bool'h]hdirect_io: ‘bool’}(hjThhhNhNubah}(h!]h#]h%]h']h)]uh+hh'docstring of pyfuse3.FileInfo.direct_iohKhjQhhubh)}(hOIf true, signals to the kernel that this file should not be cached or buffered.h]hOIf true, signals to the kernel that this file should not be cached or buffered.}(hjchhhNhNubah}(h!]h#]h%]h']h)]uh+hhh,hKhjQhhubeh}(h!]h#]h%]h']h)]uh+h}hj0hhhjEhKubeh}(h!]h#](py attributeeh%]h']h)]hjzhj{hj{hЉhщh҉uh+h>hhhj4hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:'keep_cache (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.keep_cachehNtauh+h-hj4hhhh,hNubh?)}(hhh](hD)}(hFileInfo.keep_cacheh]h^)}(h keep_cacheh]h keep_cache}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh(docstring of pyfuse3.FileInfo.keep_cachehKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxjhyFileInfo.keep_cachehzjFileInfo keep_cacheh|juh+hChjhKhjhhubh~)}(hhh](h)}(hkeep_cache: 'bool'h]hkeep_cache: ‘bool’}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hh(docstring of pyfuse3.FileInfo.keep_cachehKhjhhubh)}(hxIf true, signals to the kernel that previously cached data for this inode is still valid, and should not be invalidated.h]hxIf true, signals to the kernel that previously cached data for this inode is still valid, and should not be invalidated.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubeh}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhj4hh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:(nonseekable (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.nonseekablehNtauh+h-hj4hhhh,hNubh?)}(hhh](hD)}(hFileInfo.nonseekableh]h^)}(h nonseekableh]h nonseekable}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhh)docstring of pyfuse3.FileInfo.nonseekablehKubah}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxjhyFileInfo.nonseekablehzjFileInfo nonseekableh|juh+hChjhKhjhhubh~)}(hhh](h)}(hnonseekable: 'bool'h]hnonseekable: ‘bool’}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hh)docstring of pyfuse3.FileInfo.nonseekablehKhj hhubh)}(h:If true, indicates that the file does not support seeking.h]h:If true, indicates that the file does not support seeking.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhh,hKhj hhubeh}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](py attributeeh%]h']h)]hj4hj5hj5hЉhщh҉uh+h>hhhj4hh,hNubeh}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](pyclasseh%]h']h)]hjBhjChjChЉhщh҉uh+h>hhhh hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h: SetattrFields (class in pyfuse3)pyfuse3.SetattrFieldshNtauh+h-hh hhhNhNubh?)}(hhh](hD)}(h SetattrFieldsh](j)}(h2[<#text: 'class'>, >]h](hclass}(hj\hhhNhNubj)}(h h]h }(hjdhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhj\ubeh}(h!]h#]h%]h']h)]h[h\uh+jhjXhhh+docstring of pyfuse3.__init__.SetattrFieldshKubhJ)}(hpyfuse3.h]hpyfuse3.}(hjyhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjXhhhjxhKubh^)}(hjZh]h SetattrFields}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjXhhhjxhKubeh}(h!]jSah#](hqhreh%]h']h)]hvpyfuse3hxhhyjZhzjjZh|jZuh+hChjxhKhjUhhubh~)}(hhh](h)}(hx`SetattrFields` instances are passed to the `~Operations.setattr` handler to specify which attributes should be updated.h](h)}(h`SetattrFields`h]h)}(hjh]h SetattrFields}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZh SetattrFieldsuh+hh+docstring of pyfuse3.__init__.SetattrFieldshKhjubh instances are passed to the }(hjhhhNhNubh)}(h`~Operations.setattr`h]h)}(hjh]hsetattr}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhjubh7 handler to specify which attributes should be updated.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hh+docstring of pyfuse3.__init__.SetattrFieldshKhjhhubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:.update_atime (pyfuse3.SetattrFields attribute)"pyfuse3.SetattrFields.update_atimehNtauh+h-hjhhhh,hNubh?)}(hhh](hD)}(h update_atimeh]h^)}(hjh]h update_atime}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKubah}(h!]jah#](hqhreh%]h']h)]hvjhxjZhySetattrFields.update_atimehzj SetattrFields update_atimeh|juh+hChh,hKhjhhubh~)}(hhh]h)}(hIf this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_atime_ns` field contains an updated value.h](h*If this attribute is true, it signals the }(hj"hhhNhNubh)}(h`Operations.setattr`h]h)}(hj,h]hOperations.setattr}(hj.hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhj*ubah}(h!]h#]h%]h']h)]refdoch refdomainj8reftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhj"ubh method that the }(hj"hhhNhNubh)}(h`~EntryAttributes.st_atime_ns`h]h)}(hjPh]h st_atime_ns}(hjRhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjNubah}(h!]h#]h%]h']h)]refdoch refdomainj\reftypeobj refexplicitrefwarnhjhjZhEntryAttributes.st_atime_nsuh+hhjhKhj"ubh! field contains an updated value.}(hj"hhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:.update_mtime (pyfuse3.SetattrFields attribute)"pyfuse3.SetattrFields.update_mtimehNtauh+h-hjhhhh,hNubh?)}(hhh](hD)}(h update_mtimeh]h^)}(hjh]h update_mtime}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKubah}(h!]jah#](hqhreh%]h']h)]hvjhxjZhySetattrFields.update_mtimehzj SetattrFields update_mtimeh|juh+hChh,hKhjhhubh~)}(hhh]h)}(hIf this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_mtime_ns` field contains an updated value.h](h*If this attribute is true, it signals the }(hjhhhNhNubh)}(h`Operations.setattr`h]h)}(hjh]hOperations.setattr}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhjubh method that the }(hjhhhNhNubh)}(h`~EntryAttributes.st_mtime_ns`h]h)}(hjh]h st_mtime_ns}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhEntryAttributes.st_mtime_nsuh+hhjhKhjubh! field contains an updated value.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:-update_mode (pyfuse3.SetattrFields attribute)!pyfuse3.SetattrFields.update_modehNtauh+h-hjhhhh,hNubh?)}(hhh](hD)}(h update_modeh]h^)}(hj,h]h update_mode}(hj.hhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hj*hhhh,hKubah}(h!]j%ah#](hqhreh%]h']h)]hvjhxjZhySetattrFields.update_modehzj SetattrFields update_modeh|jAuh+hChh,hKhj'hhubh~)}(hhh]h)}(hIf this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_mode` field contains an updated value.h](h*If this attribute is true, it signals the }(hjHhhhNhNubh)}(h`Operations.setattr`h]h)}(hjRh]hOperations.setattr}(hjThhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjPubah}(h!]h#]h%]h']h)]refdoch refdomainj^reftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhjHubh method that the }(hjHhhhNhNubh)}(h`~EntryAttributes.st_mode`h]h)}(hjvh]hst_mode}(hjxhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjtubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhEntryAttributes.st_modeuh+hhjhKhjHubh! field contains an updated value.}(hjHhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjEhhubah}(h!]h#]h%]h']h)]uh+h}hj'hhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:,update_uid (pyfuse3.SetattrFields attribute) pyfuse3.SetattrFields.update_uidhNtauh+h-hjhhhh,hNubh?)}(hhh](hD)}(h update_uidh]h^)}(hjh]h update_uid}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKubah}(h!]jah#](hqhreh%]h']h)]hvjhxjZhySetattrFields.update_uidhzj SetattrFields update_uidh|juh+hChh,hKhjhhubh~)}(hhh]h)}(hIf this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_uid` field contains an updated value.h](h*If this attribute is true, it signals the }(hjhhhNhNubh)}(h`Operations.setattr`h]h)}(hjh]hOperations.setattr}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhjubh method that the }(hjhhhNhNubh)}(h`~EntryAttributes.st_uid`h]h)}(hj h]hst_uid}(hj hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhEntryAttributes.st_uiduh+hhjhKhjubh! field contains an updated value.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]hj:hj;hj;hЉhщh҉uh+h>hhhjhh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:,update_gid (pyfuse3.SetattrFields attribute) pyfuse3.SetattrFields.update_gidhNtauh+h-hjhhhh,hNubh?)}(hhh](hD)}(h update_gidh]h^)}(hjRh]h update_gid}(hjThhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjPhhhh,hKubah}(h!]jKah#](hqhreh%]h']h)]hvjhxjZhySetattrFields.update_gidhzj SetattrFields update_gidh|jguh+hChh,hKhjMhhubh~)}(hhh]h)}(hIf this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_gid` field contains an updated value.h](h*If this attribute is true, it signals the }(hjnhhhNhNubh)}(h`Operations.setattr`h]h)}(hjxh]hOperations.setattr}(hjzhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjvubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhjnubh method that the }(hjnhhhNhNubh)}(h`~EntryAttributes.st_gid`h]h)}(hjh]hst_gid}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhEntryAttributes.st_giduh+hhjhKhjnubh! field contains an updated value.}(hjnhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjkhhubah}(h!]h#]h%]h']h)]uh+h}hjMhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhjhh,hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:-update_size (pyfuse3.SetattrFields attribute)!pyfuse3.SetattrFields.update_sizehNtauh+h-hjhhhh,hNubh?)}(hhh](hD)}(h update_sizeh]h^)}(hjh]h update_size}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhh,hKubah}(h!]jah#](hqhreh%]h']h)]hvjhxjZhySetattrFields.update_sizehzj SetattrFields update_sizeh|juh+hChh,hKhjhhubh~)}(hhh]h)}(hIf this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_size` field contains an updated value.h](h*If this attribute is true, it signals the }(hjhhhNhNubh)}(h`Operations.setattr`h]h)}(hj h]hOperations.setattr}(hj hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjZhOperations.setattruh+hhjhKhjubh method that the }(hjhhhNhNubh)}(h`~EntryAttributes.st_size`h]h)}(hj/h]hst_size}(hj1hhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhj-ubah}(h!]h#]h%]h']h)]refdoch refdomainj;reftypeobj refexplicitrefwarnhjhjZhEntryAttributes.st_sizeuh+hhjhKhjubh! field contains an updated value.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]hj`hjahjahЉhщh҉uh+h>hhhjhh,hNubeh}(h!]h#]h%]h']h)]uh+h}hjUhhhjxhKubeh}(h!]h#](pyclasseh%]h']h)]hjnhjohjohЉhщh҉uh+h>hhhh hNhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:ReaddirToken (class in pyfuse3)pyfuse3.ReaddirTokenhNtauh+h-hh hhhh,hNubh?)}(hhh](hD)}(h ReaddirTokenh](j)}(h2[<#text: 'class'>, >]h](hclass}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h!]h#]j)ah%]h']h)]uh+jhjubeh}(h!]h#]h%]h']h)]h[h\uh+jhjhhh*docstring of pyfuse3.__init__.ReaddirTokenhKubhJ)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hVhWeh%]h']h)]h[h\uh+hIhjhhhjhKubh^)}(hjh]h ReaddirToken}(hjhhhNhNubah}(h!]h#](hihjeh%]h']h)]h[h\uh+h]hjhhhjhKubeh}(h!]jah#](hqhreh%]h']h)]hvpyfuse3hxhhyjhzjjh|juh+hChjhKhjhhubh~)}(hhh]h)}(h@An identifier for a particular `~Operations.readdir` invocation.h](hAn identifier for a particular }(hjhhhNhNubh)}(h`~Operations.readdir`h]h)}(hjh]hreaddir}(hjhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdoch refdomainjreftypeobj refexplicitrefwarnhjhjhOperations.readdiruh+hh*docstring of pyfuse3.__init__.ReaddirTokenhKhjubh invocation.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+h}hjhhhjhKubeh}(h!]h#](pyclasseh%]h']h)]hjhjhjhЉhщh҉uh+h>hhhh hh,hNubeh}(h!]data-structuresah#]h%]data structuresah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj7error_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jjs nametypes}jsh!}(jh hhgNtoc_object_entrieshgNtoc_object_entries_show_parentsdomainhgNtrim_footnote_reference_spacehgNh?hgNh@hAhnNhBhhgNhighlight_options}hgNh#h$hnNtemplate_bridgeNhnN keep_warningshgNsuppress_warnings]hgNmodindex_common_prefix]hnN rst_epilogNhgN rst_prologNhgNtrim_doctest_flagshgNh;hhNgettext_language_teamLANGUAGE hN latex_enginepdflatexhmNhMhNhmN latex_logoNhmNlatex_appendices]hmNlatex_use_latex_multicolumnhmNlatex_use_xindyhmNlatex_toplevel_sectioningNhmNlatex_domain_indiceshmNlatex_show_urlsnohmNlatex_show_pagerefshmNlatex_elements}hmNlatex_additional_files]hmNlatex_table_style]hmN latex_themehRhmNlatex_theme_options}hmNlatex_theme_path]hmNlatex_docclass}hmNlinkcheck_ignore]hmNlinkcheck_exclude_documents]hmNlinkcheck_allowed_redirects}hmNlinkcheck_auth]hmNlinkcheck_request_headers}hmNlinkcheck_retriesKhmNlinkcheck_timeoutNhmNlinkcheck_workersKhmNlinkcheck_anchorshmNlinkcheck_anchors_ignore]^!ahmNlinkcheck_rate_limit_timeoutG@rhmN man_pages](h0pyfuse3 pyfuse3 3.4.0]hjaKtahmN man_show_urlshmNman_make_section_directoryhmNsinglehtml_sidebarsj<hnNtexinfo_documents](h0pyfuse3h3hjjOne line description of project MiscellaneoustahmNtexinfo_appendices]hmNtexinfo_elements}hmNtexinfo_domain_indiceshmNtexinfo_show_urlsfootnotehmNtexinfo_no_detailmenuhmNtexinfo_cross_referenceshmNtext_sectionchars*=-~"+`hgN text_newlinesunixhgNtext_add_secnumbershgNtext_secnumber_suffix. hgN xml_prettyhgNc_id_attributes]hgNc_paren_attributes]hgNc_extra_keywords](alignasalignofboolcomplex imaginarynoreturn static_assert thread_localehgNc_allow_pre_v3hgNc_warn_on_allowed_pre_v3hgNcpp_index_common_prefix]hgNcpp_id_attributes]hgNcpp_paren_attributes]hgNcpp_debug_lookuphmNcpp_debug_show_treehmNstrip_signature_backslashhgN!python_use_unqualified_type_nameshgNapplehelp_bundle_nameh3 applehelpNapplehelp_bundle_idNjCNapplehelp_dev_regionen-usjCNapplehelp_bundle_version1jCNapplehelp_iconNjCNapplehelp_kb_product pyfuse3-3.4.0jCNapplehelp_kb_urlNjCNapplehelp_remote_urlNjCNapplehelp_index_anchorsjCNapplehelp_min_term_lengthNjCNapplehelp_stopwordshxjCNapplehelp_localehxjCNapplehelp_title pyfuse3 HelpjCNapplehelp_codesign_identityNjCNapplehelp_codesign_flags]jCNapplehelp_indexer_path/usr/bin/hiutiljCNapplehelp_codesign_path/usr/bin/codesignjCN applehelp_disable_external_toolsjCNdevhelp_basenameh3devhelpNhKhLhmNhtmlhelp_file_suffixNhnNhtmlhelp_link_suffixNhnNqthelp_basenameh3hnNqthelp_namespaceNhnN qthelp_themenonavhnNqthelp_theme_options}hnNautoclass_contentclasshgNautodoc_member_order alphabeticalhgNautodoc_class_signaturemixedhgNautodoc_default_options}hgNh,hgNautodoc_mock_imports]hgNautodoc_typehints signaturehgN$autodoc_typehints_description_targetallhgNautodoc_type_aliases}hgNautodoc_typehints_formatshorthgNautodoc_warningiserrorhgNhdhgNautodoc_preserve_defaultshgNhhhgNintersphinx_cache_limitKhmNintersphinx_timeoutNhmNintersphinx_disabled_reftypes]std:docahgNuub config_statusKconfig_status_extrahmeventsNprojectsphinx.projectProject)}(srcdirh h&h*docnames(gotchasindexaboutdatautilasyncioexamplefuse_api operationschangesgeneralinstallubversion}(sphinx.domains.cKsphinx.domains.changesetKsphinx.domains.citationKsphinx.domains.cppKsphinx.domains.indexKsphinx.domains.javascriptKsphinx.domains.mathKsphinx.domains.pythonKsphinx.domains.rstKsphinx.domains.stdKhKhAK9uversioning_conditionversioning_comparedomains}settings}(auto_id_prefixid image_loadinglinkembed_stylesheetcloak_email_addresses pep_base_urlhttps://peps.python.org/pep_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/rfc_referencesNinput_encodingh.doctitle_xformsectsubtitle_xformsection_self_link halt_levelKfile_insertion_enabledsmartquotes_locales]envhtrim_footnote_reference_space language_codehx smart_quotesuall_docs}(aboutGAٳIڌasyncioGAٳKGchangesGAٳMexampleGAٳY֌generalGAٳ`3@gotchasGAٳ`=indexGAٳainstallGAٳb@p operationsGAٳsjGAٳ*injGAٳ.jGAٳ1Nu dependenciesh' defaultdictbuiltinssetR(j( ../README.rstj(../Changes.rstj(../examples/hello.py../examples/tmpfs.py../examples/passthroughfs.pyj(../src/pyfuse3/_pyfuse3.pyjjjjjj(7../src/pyfuse3/__init__.cpython-37m-x86_64-linux-gnu.soj(7../src/pyfuse3/__init__.cpython-37m-x86_64-linux-gnu.soj(7../src/pyfuse3/__init__.cpython-37m-x86_64-linux-gnu.souincludedjjR(j(/home/user/w/pyfuse3/READMEj(/home/user/w/pyfuse3/Changesu reread_alwaysmetadatajjdictRtitles}(jdocutils.nodestitle)}( rawsourcehmchildren]j$TextAbout}parentj'sba attributes}(ids]classes]names]dupnames]backrefs]utagnametitleubjj&)}(j)hmj*]j-asyncio Support}j2jAsbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j- Changelog}j2jNsbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j-Example File Systems}j2j[sbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j-General Information}j2jhsbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j-Common Gotchas}j2jusbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j-pyfuse3 Documentation}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j- Installation}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j-Request Handlers}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j@ubjj&)}(j)hmj*]j-Data Structures}j2jsbaj3}(ids]classes]names]dupnames]backrefs]uj?j%ubjj&)}(j)hmj*]j-FUSE API Functions}j2jsbaj3}(j]j]j]j]j]uj?j%ubjj&)}(j)hmj*]j-Utility Functions}j2jsbaj3}(j]j]j]j]j]uj?j%ubu longtitles}(jj'jjAjjNjj[jjhjjujjjjjjjjjjjjutocs}(jj$ bullet_list)}(j)hmj*]j$ list_item)}(j)hmj*](sphinx.addnodescompact_paragraph)}(j)hmj*]j$ reference)}(j)hmj*]j-About}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj? referencej2jubaj3}(j5]j7]j9]j;]j=]uj?compact_paragraphj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j- Getting Help}j2j sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname #getting-helpuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj? list_itemj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Development Status}j2j0sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#development-statusuj?jj2j-ubaj3}(j5]j7]j9]j;]j=]uj?jj2j*ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j- Contributing}j2jSsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname #contributinguj?jj2jPubaj3}(j5]j7]j9]j;]j=]uj?jj2jMubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubej3}(j5]j7]j9]j;]j=]uj? bullet_listj2jubej3}(j5]j7]j9]j;]j=]uj?j)j2jubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-asyncio Support}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j- Changelog}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.4.0 (2024-08-28)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-4-0-2024-08-28uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.3.0 (2023-08-06)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-3-0-2023-08-06uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.2.3 (2023-05-09)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-2-3-2023-05-09uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.2.2 (2022-09-28)}j2j?sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-2-2-2022-09-28uj?jj2j<ubaj3}(j5]j7]j9]j;]j=]uj?jj2j9ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.2.1 (2021-09-17)}j2jbsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-2-1-2021-09-17uj?jj2j_ubaj3}(j5]j7]j9]j;]j=]uj?jj2j\ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.2.0 (2020-12-30)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-2-0-2020-12-30uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.1.1 (2020-10-06)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-1-1-2020-10-06uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.1.0 (2020-05-31)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-1-0-2020-05-31uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 3.0.0 (2020-05-08)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-3-0-0-2020-05-08uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j- Release 2.0.0}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-2-0-0uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 1.3.1 (2019-07-17)}j2j4sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-1-3-1-2019-07-17uj?jj2j1ubaj3}(j5]j7]j9]j;]j=]uj?jj2j.ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 1.3 (2019-06-02)}j2jWsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-1-3-2019-06-02uj?jj2jTubaj3}(j5]j7]j9]j;]j=]uj?jj2jQubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 1.2 (2018-12-22)}j2jzsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-1-2-2018-12-22uj?jj2jwubaj3}(j5]j7]j9]j;]j=]uj?jj2jtubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 1.1 (2018-11-02)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-1-1-2018-11-02uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 1.0 (2018-10-08)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-1-0-2018-10-08uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Release 0.9 (2018-09-27)}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#release-0-9-2018-09-27uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubej3}(j5]j7]j9]j;]j=]uj?jvj2jubej3}(j5]j7]j9]j;]j=]uj?j)j2jubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-Example File Systems}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-"Single-file, Read-only File System}j2j:sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname"#single-file-read-only-file-systemuj?jj2j7ubaj3}(j5]j7]j9]j;]j=]uj?jj2j4ubaj3}(j5]j7]j9]j;]j=]uj?j)j2j1ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-In-memory File System}j2j]sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#in-memory-file-systemuj?jj2jZubaj3}(j5]j7]j9]j;]j=]uj?jj2jWubaj3}(j5]j7]j9]j;]j=]uj?j)j2j1ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-!Passthrough / Overlay File System}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname #passthrough-overlay-file-systemuj?jj2j}ubaj3}(j5]j7]j9]j;]j=]uj?jj2jzubaj3}(j5]j7]j9]j;]j=]uj?j)j2j1ubej3}(j5]j7]j9]j;]j=]uj?jvj2jubej3}(j5]j7]j9]j;]j=]uj?j)j2jubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-General Information}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Getting started}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#getting-starteduj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j- Lookup Counts}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#lookup-countsuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-FUSE and VFS Locking}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#fuse-and-vfs-lockinguj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubej3}(j5]j7]j9]j;]j=]uj?jvj2jubej3}(j5]j7]j9]j;]j=]uj?j)j2jubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-Common Gotchas}j2jUsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2jRubaj3}(j5]j7]j9]j;]j=]uj?jj2jOubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-!Removing inodes in unlink handler}j2jtsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname"#removing-inodes-in-unlink-handleruj?jj2jqubaj3}(j5]j7]j9]j;]j=]uj?jj2jnubaj3}(j5]j7]j9]j;]j=]uj?j)j2jkubaj3}(j5]j7]j9]j;]j=]uj?jvj2jOubej3}(j5]j7]j9]j;]j=]uj?j)j2jLubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-pyfuse3 Documentation}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-Table of Contents}j2jsbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#module-pyfuse3uj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?jj2jubj)}(j)hmj*]jtoctree)}(j)hmj*]j3}(j5]j7]j9]j;]j=]parentjentries](NaboutNinstallNgeneralNasyncioNfuse_apiNdataN operationsNutilNgotchasNexampleNchangese includefiles](jjjjjjjj j j j emaxdepthKcaptionNglobhidden includehiddennumberedK titlesonly rawentries]uj?toctreesource"/home/user/w/pyfuse3/rst/index.rstlineK j2jubaj3}(j5]j7]j9]j;]j=]uj?jvj2jubej3}(j5]j7]j9]j;]j=]uj?j)j2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Indices and tables}j2j* sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#indices-and-tablesuj?jj2j' ubaj3}(j5]j7]j9]j;]j=]uj?jj2j$ ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jubej3}(j5]j7]j9]j;]j=]uj?jvj2jubej3}(j5]j7]j9]j;]j=]uj?j)j2jubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j- Installation}j2jb sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2j_ ubaj3}(j5]j7]j9]j;]j=]uj?jj2j\ ubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j- Dependencies}j2j sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname #dependenciesuj?jj2j~ ubaj3}(j5]j7]j9]j;]j=]uj?jj2j{ ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jx ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Stable releases}j2j sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#stable-releasesuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jx ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j-Development Version}j2j sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#development-versionuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jx ubej3}(j5]j7]j9]j;]j=]uj?jvj2j\ ubej3}(j5]j7]j9]j;]j=]uj?j)j2jY ubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-Request Handlers}j2j sbaj3}(j5]j7]j9]j;]j=]internalrefurij anchornamehmuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?jj2j ubj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j$literal)}(j)hmj*]j- Operations}j2j# sbaj3}(j5]j7]j9]j;]j=]uj?literalj2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operationsuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.access()}j2jN sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jK ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.accessuj?jj2jH ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jE ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.create()}j2j{ sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jx ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.createuj?jj2ju ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jr ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.flush()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.flushuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.forget()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.forgetuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.fsync()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.fsyncuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.fsyncdir()}j2j/ sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j, ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.fsyncdiruj?jj2j) ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j& ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.getattr()}j2j\ sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jY ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.getattruj?jj2jV ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jS ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.getxattr()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.getxattruj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.init()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.inituj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.link()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.linkuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.listxattr()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.listxattruj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.lookup()}j2j= sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j: ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.lookupuj?jj2j7 ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j4 ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.mkdir()}j2jj sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jg ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.mkdiruj?jj2jd ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2ja ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.mknod()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.mknoduj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.open()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.openuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.opendir()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.opendiruj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.read()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.readuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.readdir()}j2jK sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jH ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.readdiruj?jj2jE ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jB ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.readlink()}j2jx sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2ju ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.readlinkuj?jj2jr ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jo ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.release()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.releaseuj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.releasedir()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.releasediruj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.removexattr()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.removexattruj?jj2j ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.rename()}j2j,sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j)ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.renameuj?jj2j&ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j#ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.rmdir()}j2jYsbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jVubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.rmdiruj?jj2jSubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jPubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.setattr()}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.setattruj?jj2jubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j}ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.setxattr()}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.setxattruj?jj2jubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.stacktrace()}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.stacktraceuj?jj2jubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.statfs()}j2j sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.statfsuj?jj2jubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.symlink()}j2j:sbaj3}(j5]j7]j9]j;]j=]uj?j0 j2j7ubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.symlinkuj?jj2j4ubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j1ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.unlink()}j2jgsbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jdubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.unlinkuj?jj2jaubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2j^ubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-Operations.write()}j2jsbaj3}(j5]j7]j9]j;]j=]uj?j0 j2jubaj3}(j5]j7]j9]j;]j=]internalrefurij anchorname#pyfuse3.Operations.writeuj?jj2jubaj3}(j5]j7]j9]j;]j=]skip_section_numberuj?jj2jubaj3}(j5]j7]j9]j;]j=]uj?j)j2jB ubej3}(j5]j7]j9]j;]j=]uj?jvj2j ubej3}(j5]j7]j9]j;]j=]uj?j)j2j ubaj3}(j5]j7]j9]j;]j=]uj?jvj2j ubej3}(j5]j7]j9]j;]j=]uj?j)j2j ubaj3}(j5]j7]j9]j;]j=]uj?jvubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-Data Structures}j2jsbaj3}(j]j]j]j]j]internalrefurij anchornamehmuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-ENOATTR}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.ENOATTRuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- ROOT_INODE}j2j.sbaj3}(j]j]j]j]j]uj?j! j2j+ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.ROOT_INODEuj?jj2j(ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j%ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RENAME_EXCHANGE}j2j[sbaj3}(j]j]j]j]j]uj?j! j2jXubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RENAME_EXCHANGEuj?jj2jUubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jRubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RENAME_NOREPLACE}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RENAME_NOREPLACEuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-default_options}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.default_optionsuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- FUSEError}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FUSEErroruj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- FileHandleT}j2jsbaj3}(j]j]j]j]j]uj?j! j2j ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileHandleTuj?jj2j ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- FileNameT}j2j<sbaj3}(j]j]j]j]j]uj?j! j2j9ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileNameTuj?jj2j6ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j3ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-FlagT}j2jisbaj3}(j]j]j]j]j]uj?j! j2jfubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FlagTuj?jj2jcubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j`ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-InodeT}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.InodeTuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-ModeT}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.ModeTuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- XAttrNameT}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.XAttrNameTuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RequestContext}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RequestContextuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RequestContext.pid}j2jGsbaj3}(j]j]j]j]j]uj?j! j2jDubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RequestContext.piduj?jj2jAubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j>ubaj3}(j]j]j]j]j]uj?jj2j;ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RequestContext.uid}j2jtsbaj3}(j]j]j]j]j]uj?j! j2jqubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RequestContext.uiduj?jj2jnubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jkubaj3}(j]j]j]j]j]uj?jj2j;ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RequestContext.gid}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RequestContext.giduj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j;ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-RequestContext.umask}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.RequestContext.umaskuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j;ubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- StatvfsData}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsDatauj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_bsize}j2j1sbaj3}(j]j]j]j]j]uj?j! j2j.ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_bsizeuj?jj2j+ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j(ubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_frsize}j2j^sbaj3}(j]j]j]j]j]uj?j! j2j[ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_frsizeuj?jj2jXubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jUubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_blocks}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_blocksuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_bfree}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_bfreeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_bavail}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_bavailuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_files}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_filesuj?jj2j ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j ubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_ffree}j2j?sbaj3}(j]j]j]j]j]uj?j! j2j<ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_ffreeuj?jj2j9ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j6ubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_favail}j2jlsbaj3}(j]j]j]j]j]uj?j! j2jiubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_favailuj?jj2jfubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jcubaj3}(j]j]j]j]j]uj?jj2j%ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-StatvfsData.f_namemax}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.StatvfsData.f_namemaxuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j%ubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.EntryAttributesuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_ino}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.EntryAttributes.st_inouj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.generation}j2j)sbaj3}(j]j]j]j]j]uj?j! j2j&ubaj3}(j]j]j]j]j]internalrefurij anchorname##pyfuse3.EntryAttributes.generationuj?jj2j#ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.entry_timeout}j2jVsbaj3}(j]j]j]j]j]uj?j! j2jSubaj3}(j]j]j]j]j]internalrefurij anchorname&#pyfuse3.EntryAttributes.entry_timeoutuj?jj2jPubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jMubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.attr_timeout}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname%#pyfuse3.EntryAttributes.attr_timeoutuj?jj2j}ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jzubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_mode}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname #pyfuse3.EntryAttributes.st_modeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_nlink}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname!#pyfuse3.EntryAttributes.st_nlinkuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_uid}j2j sbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.EntryAttributes.st_uiduj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_gid}j2j7sbaj3}(j]j]j]j]j]uj?j! j2j4ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.EntryAttributes.st_giduj?jj2j1ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j.ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_rdev}j2jdsbaj3}(j]j]j]j]j]uj?j! j2jaubaj3}(j]j]j]j]j]internalrefurij anchorname #pyfuse3.EntryAttributes.st_rdevuj?jj2j^ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j[ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_size}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname #pyfuse3.EntryAttributes.st_sizeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_blksize}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname##pyfuse3.EntryAttributes.st_blksizeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2juba'j3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_blocks}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname"#pyfuse3.EntryAttributes.st_blocksuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_atime_ns}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname$#pyfuse3.EntryAttributes.st_atime_nsuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_ctime_ns}j2jEsbaj3}(j]j]j]j]j]uj?j! j2jBubaj3}(j]j]j]j]j]internalrefurij anchorname$#pyfuse3.EntryAttributes.st_ctime_nsuj?jj2j?ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j<ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-EntryAttributes.st_mtime_ns}j2jrsbaj3}(j]j]j]j]j]uj?j! j2joubaj3}(j]j]j]j]j]internalrefurij anchorname$#pyfuse3.EntryAttributes.st_mtime_nsuj?jj2jlubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jiubaj3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-FileInfo}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileInfouj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- FileInfo.fh}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileInfo.fhuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-FileInfo.direct_io}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileInfo.direct_iouj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-FileInfo.keep_cache}j2j/sbaj3}(j]j]j]j]j]uj?j! j2j,ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileInfo.keep_cacheuj?jj2j)ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j&ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-FileInfo.nonseekable}j2j\sbaj3}(j]j]j]j]j]uj?j! j2jYubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.FileInfo.nonseekableuj?jj2jVubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jSubaj3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- SetattrFields}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.SetattrFieldsuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-SetattrFields.update_atime}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname##pyfuse3.SetattrFields.update_atimeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-SetattrFields.update_mtime}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname##pyfuse3.SetattrFields.update_mtimeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-SetattrFields.update_mode}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname"#pyfuse3.SetattrFields.update_modeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-SetattrFields.update_uid}j2jFsbaj3}(j]j]j]j]j]uj?j! j2jCubaj3}(j]j]j]j]j]internalrefurij anchorname!#pyfuse3.SetattrFields.update_uiduj?jj2j@ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j=ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-SetattrFields.update_gid}j2jssbaj3}(j]j]j]j]j]uj?j! j2jpubaj3}(j]j]j]j]j]internalrefurij anchorname!#pyfuse3.SetattrFields.update_giduj?jj2jmubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jjubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-SetattrFields.update_size}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname"#pyfuse3.SetattrFields.update_sizeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- ReaddirToken}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.ReaddirTokenuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubaj3}(j]j]j]j]j]uj?jubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-FUSE API Functions}j2jsbaj3}(j]j]j]j]j]internalrefurij anchornamehmuj?jj2jubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-init()}j2j:sbaj3}(j]j]j]j]j]uj?j! j2j7ubaj3}(j]j]j]j]j]internalrefurij anchorname #pyfuse3.inituj?jj2j4ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j1ubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-main()}j2jgsbaj3}(j]j]j]j]j]uj?j! j2jdubaj3}(j]j]j]j]j]internalrefurij anchorname #pyfuse3.mainuj?jj2jaubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j^ubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- terminate()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.terminateuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-close()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.closeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-invalidate_inode()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.invalidate_inodeuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-invalidate_entry()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.invalidate_entryuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-invalidate_entry_async()}j2jHsbaj3}(j]j]j]j]j]uj?j! j2jEubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.invalidate_entry_asyncuj?jj2jBubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j?ubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-notify_store()}j2jusbaj3}(j]j]j]j]j]uj?j! j2jrubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.notify_storeuj?jj2joubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jlubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-readdir_reply()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.readdir_replyuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j.ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- trio_token}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.trio_tokenuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j.ubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubaj3}(j]j]j]j]j]uj?jubjj)}(j)hmj*]j)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j-Utility Functions}j2jsbaj3}(j]j]j]j]j]internalrefurij anchornamehmuj?jj2j ubaj3}(j]j]j]j]j]uj?jj2jubj)}(j)hmj*](j)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- setxattr()}j2j0sbaj3}(j]j]j]j]j]uj?j! j2j-ubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.setxattruj?jj2j*ubaj3}(j]j]j]j]j]skip_section_numberuj?jj2j'ubaj3}(j]j]j]j]j]uj?jj2j$ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- getxattr()}j2j]sbaj3}(j]j]j]j]j]uj?j! j2jZubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.getxattruj?jj2jWubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jTubaj3}(j]j]j]j]j]uj?jj2j$ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j- listdir()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.listdiruj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j$ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-get_sup_groups()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.get_sup_groupsuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j$ubj)}(j)hmj*]j)}(j)hmj*]j)}(j)hmj*]j" )}(j)hmj*]j-syncfs()}j2jsbaj3}(j]j]j]j]j]uj?j! j2jubaj3}(j]j]j]j]j]internalrefurij anchorname#pyfuse3.syncfsuj?jj2jubaj3}(j]j]j]j]j]skip_section_numberuj?jj2jubaj3}(j]j]j]j]j]uj?jj2j$ubej3}(j]j]j]j]j]uj?jj2jubej3}(j]j]j]j]j]uj?jj2jubaj3}(j]j]j]j]j]uj?jubutoc_num_entries}(jKjKjKjKjKjKjKjKjK!jK9jK jKutoc_secnumbers}toc_fignumbers}toctree_includes}j](jjjjjjjj j j j esfiles_to_rebuild}(j(jj(jj(jj(jj(jj(jj(jj (jj (jj (jj (ju glob_toctreesnumbered_toctrees domaindata}(c}( root_symboljSymbol)}(j2N siblingAboveN siblingBelowNidentN declarationNdocnameNj NisRedeclaration _children] _anonChildren]ubobjects}jKu changeset}(changes}jKucitation}(jK citations} citation_refs}ucpp}(j8jj9)}(j2Nj=Nj>N identOrOpNtemplateParamsN templateArgsNj@NjANj NjBjC]jE]ubj9}jKuindex}(jKentries}(j]j]j]j]j]j]j](pairmodule; pyfuse3module-pyfuse3hmNtaj]j]((singleOperations (class in pyfuse3)pyfuse3.OperationshmNt(jo$access() (pyfuse3.Operations method)pyfuse3.Operations.accesshmNt(jo$create() (pyfuse3.Operations method)pyfuse3.Operations.createhmNt(jo#flush() (pyfuse3.Operations method)pyfuse3.Operations.flushhmNt(jo$forget() (pyfuse3.Operations method)pyfuse3.Operations.forgethmNt(jo#fsync() (pyfuse3.Operations method)pyfuse3.Operations.fsynchmNt(jo&fsyncdir() (pyfuse3.Operations method)pyfuse3.Operations.fsyncdirhmNt(jo%getattr() (pyfuse3.Operations method)pyfuse3.Operations.getattrhmNt(jo&getxattr() (pyfuse3.Operations method)pyfuse3.Operations.getxattrhmNt(jo"init() (pyfuse3.Operations method)pyfuse3.Operations.inithmNt(jo"link() (pyfuse3.Operations method)pyfuse3.Operations.linkhmNt(jo'listxattr() (pyfuse3.Operations method)pyfuse3.Operations.listxattrhmNt(jo$lookup() (pyfuse3.Operations method)pyfuse3.Operations.lookuphmNt(jo#mkdir() (pyfuse3.Operations method)pyfuse3.Operations.mkdirhmNt(jo#mknod() (pyfuse3.Operations method)pyfuse3.Operations.mknodhmNt(jo"open() (pyfuse3.Operations method)pyfuse3.Operations.openhmNt(jo%opendir() (pyfuse3.Operations method)pyfuse3.Operations.opendirhmNt(jo"read() (pyfuse3.Operations method)pyfuse3.Operations.readhmNt(jo%readdir() (pyfuse3.Operations method)pyfuse3.Operations.readdirhmNt(jo&readlink() (pyfuse3.Operations method)pyfuse3.Operations.readlinkhmNt(jo%release() (pyfuse3.Operations method)pyfuse3.Operations.releasehmNt(jo(releasedir() (pyfuse3.Operations method)pyfuse3.Operations.releasedirhmNt(jo)removexattr() (pyfuse3.Operations method)pyfuse3.Operations.removexattrhmNt(jo$rename() (pyfuse3.Operations method)pyfuse3.Operations.renamehmNt(jo#rmdir() (pyfuse3.Operations method)pyfuse3.Operations.rmdirhmNt(jo%setattr() (pyfuse3.Operations method)pyfuse3.Operations.setattrhmNt(jo&setxattr() (pyfuse3.Operations method)pyfuse3.Operations.setxattrhmNt(jo(stacktrace() (pyfuse3.Operations method)pyfuse3.Operations.stacktracehmNt(jo$statfs() (pyfuse3.Operations method)pyfuse3.Operations.statfshmNt(jo%symlink() (pyfuse3.Operations method)pyfuse3.Operations.symlinkhmNt(jo$unlink() (pyfuse3.Operations method)pyfuse3.Operations.unlinkhmNt(jo#write() (pyfuse3.Operations method)pyfuse3.Operations.writehmNtej]((singleENOATTR (in module pyfuse3)pyfuse3.ENOATTRhmNt(jROOT_INODE (in module pyfuse3)pyfuse3.ROOT_INODEhmNt(j#RENAME_EXCHANGE (in module pyfuse3)pyfuse3.RENAME_EXCHANGEhmNt(j$RENAME_NOREPLACE (in module pyfuse3)pyfuse3.RENAME_NOREPLACEhmNt(j#default_options (in module pyfuse3)pyfuse3.default_optionshmNt(j FUSEErrorpyfuse3.FUSEErrorhmNt(jFileHandleT (class in pyfuse3)pyfuse3.FileHandleThmNt(jFileNameT (class in pyfuse3)pyfuse3.FileNameThmNt(jFlagT (class in pyfuse3) pyfuse3.FlagThmNt(jInodeT (class in pyfuse3)pyfuse3.InodeThmNt(jModeT (class in pyfuse3) pyfuse3.ModeThmNt(jXAttrNameT (class in pyfuse3)pyfuse3.XAttrNameThmNt(j!RequestContext (class in pyfuse3)pyfuse3.RequestContexthmNt(j&pid (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.pidhmNt(j&uid (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.uidhmNt(j&gid (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.gidhmNt(j(umask (pyfuse3.RequestContext attribute)pyfuse3.RequestContext.umaskhmNt(jStatvfsData (class in pyfuse3)pyfuse3.StatvfsDatahmNt(j'f_bsize (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_bsizehmNt(j(f_frsize (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_frsizehmNt(j(f_blocks (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_blockshmNt(j'f_bfree (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_bfreehmNt(j(f_bavail (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_bavailhmNt(j'f_files (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_fileshmNt(j'f_ffree (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_ffreehmNt(j(f_favail (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_favailhmNt(j)f_namemax (pyfuse3.StatvfsData attribute)pyfuse3.StatvfsData.f_namemaxhmNt(j"EntryAttributes (class in pyfuse3)pyfuse3.EntryAttributeshmNt(j*st_ino (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_inohmNt(j.generation (pyfuse3.EntryAttributes attribute)"pyfuse3.EntryAttributes.generationhmNt(j1entry_timeout (pyfuse3.EntryAttributes attribute)%pyfuse3.EntryAttributes.entry_timeouthmNt(j0attr_timeout (pyfuse3.EntryAttributes attribute)$pyfuse3.EntryAttributes.attr_timeouthmNt(j+st_mode (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_modehmNt(j,st_nlink (pyfuse3.EntryAttributes attribute) pyfuse3.EntryAttributes.st_nlinkhmNt(j*st_uid (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_uidhmNt(j*st_gid (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_gidhmNt(j+st_rdev (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_rdevhmNt(j+st_size (pyfuse3.EntryAttributes attribute)pyfuse3.EntryAttributes.st_sizehmNt(j.st_blksize (pyfuse3.EntryAttributes attribute)"pyfuse3.EntryAttributes.st_blksizehmNt(j-st_blocks (pyfuse3.EntryAttributes attribute)!pyfuse3.EntryAttributes.st_blockshmNt(j/st_atime_ns (pyfuse3.EntryAttributes attribute)#pyfuse3.EntryAttributes.st_atime_nshmNt(j/st_ctime_ns (pyfuse3.EntryAttributes attribute)#pyfuse3.EntryAttributes.st_ctime_nshmNt(j/st_mtime_ns (pyfuse3.EntryAttributes attribute)#pyfuse3.EntryAttributes.st_mtime_nshmNt(jFileInfo (class in pyfuse3)pyfuse3.FileInfohmNt(jfh (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.fhhmNt(j&direct_io (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.direct_iohmNt(j'keep_cache (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.keep_cachehmNt(j(nonseekable (pyfuse3.FileInfo attribute)pyfuse3.FileInfo.nonseekablehmNt(j SetattrFields (class in pyfuse3)pyfuse3.SetattrFieldshmNt(j.update_atime (pyfuse3.SetattrFields attribute)"pyfuse3.SetattrFields.update_atimehmNt(j.update_mtime (pyfuse3.SetattrFields attribute)"pyfuse3.SetattrFields.update_mtimehmNt(j-update_mode (pyfuse3.SetattrFields attribute)!pyfuse3.SetattrFields.update_modehmNt(j,update_uid (pyfuse3.SetattrFields attribute) pyfuse3.SetattrFields.update_uidhmNt(j,update_gid (pyfuse3.SetattrFields attribute) pyfuse3.SetattrFields.update_gidhmNt(j-update_size (pyfuse3.SetattrFields attribute)!pyfuse3.SetattrFields.update_sizehmNt(jReaddirToken (class in pyfuse3)pyfuse3.ReaddirTokenhmNtej]((jinit() (in module pyfuse3) pyfuse3.inithmNt(jmain() (in module pyfuse3) pyfuse3.mainhmNt(jterminate() (in module pyfuse3)pyfuse3.terminatehmNt(jclose() (in module pyfuse3) pyfuse3.closehmNt(j&invalidate_inode() (in module pyfuse3)pyfuse3.invalidate_inodehmNt(j&invalidate_entry() (in module pyfuse3)pyfuse3.invalidate_entryhmNt(j,invalidate_entry_async() (in module pyfuse3)pyfuse3.invalidate_entry_asynchmNt(j"notify_store() (in module pyfuse3)pyfuse3.notify_storehmNt(j#readdir_reply() (in module pyfuse3)pyfuse3.readdir_replyhmNt(jtrio_token (in module pyfuse3)pyfuse3.trio_tokenhmNtej]((jsetxattr() (in module pyfuse3)pyfuse3.setxattrhmNt(jgetxattr() (in module pyfuse3)pyfuse3.getxattrhmNt(jlistdir() (in module pyfuse3)pyfuse3.listdirhmNt(j$get_sup_groups() (in module pyfuse3)pyfuse3.get_sup_groupshmNt(jsyncfs() (in module pyfuse3)pyfuse3.syncfshmNteuujs}(jG}modules}jKumath}(jG} has_equations}(jjjjjjjjjjjjujKupy}(jG}(pyfuse3sphinx.domains.python ObjectEntry(jjkmoduletpyfuse3.Operationsj(jjqclasstpyfuse3._pyfuse3.Operationsj(jjqjtpyfuse3.Operations.accessj(jjtmethodtpyfuse3.Operations.createj(jjwmethodtpyfuse3.Operations.flushj(jjzmethodtpyfuse3.Operations.forgetj(jj}methodtpyfuse3.Operations.fsyncj(jjmethodtpyfuse3.Operations.fsyncdirj(jjmethodtpyfuse3.Operations.getattrj(jjmethodtpyfuse3.Operations.getxattrj(jjmethodtpyfuse3.Operations.initj(jjmethodtpyfuse3.Operations.linkj(jjmethodtpyfuse3.Operations.listxattrj(jjmethodtpyfuse3.Operations.lookupj(jjmethodtpyfuse3.Operations.mkdirj(jjmethodtpyfuse3.Operations.mknodj(jjmethodtpyfuse3.Operations.openj(jjmethodtpyfuse3.Operations.opendirj(jjmethodtpyfuse3.Operations.readj(jjmethodtpyfuse3.Operations.readdirj(jjmethodtpyfuse3.Operations.readlinkj(jjmethodtpyfuse3.Operations.releasej(jjmethodtpyfuse3.Operations.releasedirj(jjmethodtpyfuse3.Operations.removexattrj(jjmethodtpyfuse3.Operations.renamej(jjmethodtpyfuse3.Operations.rmdirj(jjmethodtpyfuse3.Operations.setattrj(jjmethodtpyfuse3.Operations.setxattrj(jjmethodtpyfuse3.Operations.stacktracej(jjmethodtpyfuse3.Operations.statfsj(jjmethodtpyfuse3.Operations.symlinkj(jjmethodtpyfuse3.Operations.unlinkj(jjmethodtpyfuse3.Operations.writej(jjmethodtpyfuse3.ENOATTRj(jjdatatpyfuse3.ROOT_INODEj(jjdatatpyfuse3.RENAME_EXCHANGEj(jjdatatpyfuse3.RENAME_NOREPLACEj(jjdatatpyfuse3.default_optionsj(jjdatatpyfuse3.FUSEErrorj(jj exceptiontpyfuse3.__init__.FUSEErrorj(jjjUtpyfuse3.FileHandleTj(jjclasstpyfuse3.FileNameTj(jjclasst pyfuse3.FlagTj(jjclasstpyfuse3.InodeTj(jjclasst pyfuse3.ModeTj(jjclasstpyfuse3.XAttrNameTj(jjclasstpyfuse3.RequestContextj(jjclasstpyfuse3.__init__.RequestContextj(jjjttpyfuse3.RequestContext.pidj(jj attributetpyfuse3.RequestContext.uidj(jj attributetpyfuse3.RequestContext.gidj(jj attributetpyfuse3.RequestContext.umaskj(jj attributetpyfuse3.StatvfsDataj(jjclasstpyfuse3.__init__.StatvfsDataj(jjjtpyfuse3.StatvfsData.f_bsizej(jj  attributetpyfuse3.StatvfsData.f_frsizej(jj  attributetpyfuse3.StatvfsData.f_blocksj(jj attributetpyfuse3.StatvfsData.f_bfreej(jj attributetpyfuse3.StatvfsData.f_bavailj(jj attributetpyfuse3.StatvfsData.f_filesj(jj attributetpyfuse3.StatvfsData.f_ffreej(jj attributetpyfuse3.StatvfsData.f_favailj(jj attributetpyfuse3.StatvfsData.f_namemaxj(jj! attributetpyfuse3.EntryAttributesj(jj$classt pyfuse3.__init__.EntryAttributesj(jj$jtpyfuse3.EntryAttributes.st_inoj(jj' attributet"pyfuse3.EntryAttributes.generationj(jj* attributet%pyfuse3.EntryAttributes.entry_timeoutj(jj- attributet$pyfuse3.EntryAttributes.attr_timeoutj(jj0 attributetpyfuse3.EntryAttributes.st_modej(jj3 attributet pyfuse3.EntryAttributes.st_nlinkj(jj6 attributetpyfuse3.EntryAttributes.st_uidj(jj9 attributetpyfuse3.EntryAttributes.st_gidj(jj< attributetpyfuse3.EntryAttributes.st_rdevj(jj? attributetpyfuse3.EntryAttributes.st_sizej(jjB attributet"pyfuse3.EntryAttributes.st_blksizej(jjE attributet!pyfuse3.EntryAttributes.st_blocksj(jjH attributet#pyfuse3.EntryAttributes.st_atime_nsj(jjK attributet#pyfuse3.EntryAttributes.st_ctime_nsj(jjN attributet#pyfuse3.EntryAttributes.st_mtime_nsj(jjQ attributetpyfuse3.FileInfoj(jjTclasstpyfuse3.__init__.FileInfoj(jjTjtpyfuse3.FileInfo.fhj(jjW attributetpyfuse3.FileInfo.direct_ioj(jjZ attributetpyfuse3.FileInfo.keep_cachej(jj] attributetpyfuse3.FileInfo.nonseekablej(jj` attributetpyfuse3.SetattrFieldsj(jjcclasstpyfuse3.__init__.SetattrFieldsj(jjcj t"pyfuse3.SetattrFields.update_atimej(jjf attributet"pyfuse3.SetattrFields.update_mtimej(jji attributet!pyfuse3.SetattrFields.update_modej(jjl attributet pyfuse3.SetattrFields.update_uidj(jjo attributet pyfuse3.SetattrFields.update_gidj(jjr attributet!pyfuse3.SetattrFields.update_sizej(jju attributetpyfuse3.ReaddirTokenj(jjxclasstpyfuse3.__init__.ReaddirTokenj(jjxj/ t pyfuse3.initj(jj|functiont pyfuse3.mainj(jjfunctiontpyfuse3.terminatej(jjfunctiont pyfuse3.closej(jjfunctiontpyfuse3.invalidate_inodej(jjfunctiontpyfuse3.invalidate_entryj(jjfunctiontpyfuse3.invalidate_entry_asyncj(jjfunctiontpyfuse3.notify_storej(jjfunctiontpyfuse3.readdir_replyj(jjfunctiontpyfuse3.trio_tokenj(jjdatatpyfuse3.setxattrj(jjfunctiontpyfuse3.getxattrj(jjfunctiontpyfuse3.listdirj(jjfunctiontpyfuse3.get_sup_groupsj(jjfunctiontpyfuse3.syncfsj(jjfunctiontuj}jj ModuleEntry(jjkhmhmtsjKurst}(jG}jKustd}( progoptions}jG}labels}(genindexj hm sphinx.locale_TranslationProxy(j _lazy_translatesphinxgeneralIndextj j j j bmodindex py-modindexhmj (j j j Module Indextj j j j bsearchj hmj (j j j Search Pagetj j j j b py-modindex py-modindexhmPython Module Indexasynciojasyncioasyncio Supportexample file systemjexample-file-systemExample File Systemsgetting_startedjgetting-startedGetting startedu anonlabels}(j j hmj py-modindexhmj j hmj j hmj jj j jj j jj ujKterms}uuimages sphinx.utilFilenameUniqDict)bdlfilesj DownloadFiles)original_image_uri} temp_data} ref_context}intersphinx_cache}(&https://trio.readthedocs.io/en/stable/trioJf}( py:module}(trio(Trio0.26.2Ehttps://trio.readthedocs.io/en/stable/reference-core.html#module-trio-ttrio.from_thread(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#module-trio.from_threadj t trio.lowlevel(j j Rhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#module-trio.lowlevelj t trio.socket(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#module-trio.socketj t trio.testing(j j Phttps://trio.readthedocs.io/en/stable/reference-testing.html#module-trio.testingj ttrio.to_thread(j j Ohttps://trio.readthedocs.io/en/stable/reference-core.html#module-trio.to_threadj tu py:interface} trio.Asynchronous file interface(j j Xhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Asynchronous-file-interfacej ts py:attribute}((trio.Asynchronous file interface.wrapped(j j `https://trio.readthedocs.io/en/stable/reference-io.html#trio.Asynchronous-file-interface.wrappedj ttrio.CancelScope.cancel_called(j j Xhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CancelScope.cancel_calledj t!trio.CancelScope.cancelled_caught(j j [https://trio.readthedocs.io/en/stable/reference-core.html#trio.CancelScope.cancelled_caughtj ttrio.CancelScope.deadline(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CancelScope.deadlinej ttrio.CancelScope.shield(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CancelScope.shieldj ttrio.DTLSChannel.endpoint(j j Qhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.endpointj ttrio.DTLSChannel.peer_address(j j Uhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.peer_addressj t)trio.DTLSEndpoint.incoming_packets_buffer(j j ahttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSEndpoint.incoming_packets_bufferj ttrio.DTLSEndpoint.socket(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSEndpoint.socketj ttrio.Nursery.cancel_scope(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery.cancel_scopej ttrio.Process.args(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.argsj ttrio.Process.pid(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.pidj ttrio.Process.returncode(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.returncodej ttrio.Process.stderr(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.stderrj ttrio.Process.stdin(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.stdinj ttrio.Process.stdio(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.stdioj ttrio.Process.stdout(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.stdoutj t#trio.SSLListener.transport_listener(j j [https://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLListener.transport_listenerj ttrio.SSLStream.transport_stream(j j Whttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.transport_streamj ttrio.SocketListener.socket(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketListener.socketj ttrio.SocketStream.socket(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.socketj t!trio.StapledStream.receive_stream(j j Yhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.receive_streamj ttrio.StapledStream.send_stream(j j Vhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.send_streamj ttrio.TASK_STATUS_IGNORED(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.TASK_STATUS_IGNOREDj ttrio._subprocess.StrOrBytesPath(j j Whttps://trio.readthedocs.io/en/stable/reference-io.html#trio._subprocess.StrOrBytesPathj t"trio.lowlevel.Task.child_nurseries(j j `https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.child_nurseriesj ttrio.lowlevel.Task.context(j j Xhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.contextj ttrio.lowlevel.Task.coro(j j Uhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.coroj t$trio.lowlevel.Task.custom_sleep_data(j j bhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.custom_sleep_dataj t*trio.lowlevel.Task.eventual_parent_nursery(j j hhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.eventual_parent_nurseryj ttrio.lowlevel.Task.name(j j Uhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.namej t!trio.lowlevel.Task.parent_nursery(j j _https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.parent_nurseryj t+trio.socket.SocketType.did_shutdown_SHUT_WR(j j chttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.SocketType.did_shutdown_SHUT_WRj t+trio.testing.MemoryReceiveStream.close_hook(j j hhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.close_hookj t2trio.testing.MemoryReceiveStream.receive_some_hook(j j ohttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.receive_some_hookj t(trio.testing.MemorySendStream.close_hook(j j ehttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.close_hookj t+trio.testing.MemorySendStream.send_all_hook(j j hhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.send_all_hookj t@trio.testing.MemorySendStream.wait_send_all_might_not_block_hook(j j }https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.wait_send_all_might_not_block_hookj t)trio.testing.MockClock.autojump_threshold(j j fhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MockClock.autojump_thresholdj ttrio.testing.MockClock.rate(j j Xhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MockClock.ratej tu py:exception}(trio.BrokenResourceError(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.BrokenResourceErrorj ttrio.BusyResourceError(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.BusyResourceErrorj ttrio.Cancelled(j j Hhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Cancelledj ttrio.ClosedResourceError(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.ClosedResourceErrorj ttrio.EndOfChannel(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.EndOfChannelj ttrio.NeedHandshakeError(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.NeedHandshakeErrorj ttrio.RunFinishedError(j j Ohttps://trio.readthedocs.io/en/stable/reference-core.html#trio.RunFinishedErrorj ttrio.TooSlowError(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.TooSlowErrorj ttrio.TrioDeprecationWarning(j j Uhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.TrioDeprecationWarningj ttrio.TrioInternalError(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.TrioInternalErrorj ttrio.WouldBlock(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#trio.WouldBlockj tupy:class}(trio.CancelScope(j j Jhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CancelScopej ttrio.CapacityLimiter(j j Nhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiterj ttrio.CapacityLimiterStatistics(j j Xhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiterStatisticsj ttrio.Condition(j j Hhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Conditionj ttrio.ConditionStatistics(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.ConditionStatisticsj ttrio.DTLSChannel(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannelj ttrio.DTLSChannelStatistics(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannelStatisticsj ttrio.DTLSEndpoint(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSEndpointj t trio.Event(j j Dhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Eventj ttrio.EventStatistics(j j Nhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.EventStatisticsj t trio.Lock(j j Chttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Lockj ttrio.LockStatistics(j j Mhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.LockStatisticsj ttrio.MemoryReceiveChannel(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemoryReceiveChannelj ttrio.MemorySendChannel(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemorySendChannelj t trio.Nursery(j j Fhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Nurseryj t trio.Path(j j Ahttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Pathj ttrio.PosixPath(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.PosixPathj t trio.Process(j j Dhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Processj ttrio.SSLListener(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLListenerj ttrio.SSLStream(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStreamj ttrio.Semaphore(j j Hhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphorej ttrio.SocketListener(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketListenerj ttrio.SocketStream(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStreamj ttrio.StapledStream(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStreamj ttrio.StrictFIFOLock(j j Mhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.StrictFIFOLockj ttrio.TaskStatus(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#trio.TaskStatusj ttrio.WindowsPath(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.WindowsPathj ttrio._subprocess.HasFileno(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio._subprocess.HasFilenoj ttrio.abc.AsyncResource(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.AsyncResourcej ttrio.abc.Channel(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.Channelj ttrio.abc.Clock(j j Hhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.abc.Clockj ttrio.abc.HalfCloseableStream(j j Thttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.HalfCloseableStreamj ttrio.abc.HostnameResolver(j j Vhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.abc.HostnameResolverj ttrio.abc.Instrument(j j Qhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrumentj ttrio.abc.Listener(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.Listenerj ttrio.abc.ReceiveChannel(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.ReceiveChannelj ttrio.abc.ReceiveStream(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.ReceiveStreamj ttrio.abc.SendChannel(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.SendChannelj ttrio.abc.SendStream(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.SendStreamj ttrio.abc.SocketFactory(j j Shttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.abc.SocketFactoryj ttrio.abc.Stream(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.Streamj ttrio.lowlevel.Abort(j j Qhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Abortj ttrio.lowlevel.FdStream(j j Thttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.FdStreamj ttrio.lowlevel.ParkingLot(j j Vhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLotj t"trio.lowlevel.ParkingLotStatistics(j j `https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLotStatisticsj ttrio.lowlevel.RunStatistics(j j Yhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.RunStatisticsj ttrio.lowlevel.RunVar(j j Rhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.RunVarj ttrio.lowlevel.Task(j j Phttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Taskj ttrio.lowlevel.TrioToken(j j Uhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.TrioTokenj ttrio.socket.SocketType(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.SocketTypej ttrio.testing.Matcher(j j Qhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.Matcherj t trio.testing.MemoryReceiveStream(j j ]https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStreamj ttrio.testing.MemorySendStream(j j Zhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStreamj ttrio.testing.MockClock(j j Shttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MockClockj ttrio.testing.RaisesGroup(j j Uhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.RaisesGroupj ttrio.testing.Sequencer(j j Shttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.Sequencerj t)trio.testing._raises_group._ExceptionInfo(j j fhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing._raises_group._ExceptionInfoj tu py:method}(trio.CancelScope.cancel(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CancelScope.cancelj ttrio.CapacityLimiter.acquire(j j Vhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.acquirej t#trio.CapacityLimiter.acquire_nowait(j j ]https://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.acquire_nowaitj t)trio.CapacityLimiter.acquire_on_behalf_of(j j chttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.acquire_on_behalf_ofj t0trio.CapacityLimiter.acquire_on_behalf_of_nowait(j j jhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.acquire_on_behalf_of_nowaitj ttrio.CapacityLimiter.release(j j Vhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.releasej t)trio.CapacityLimiter.release_on_behalf_of(j j chttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.release_on_behalf_ofj ttrio.CapacityLimiter.statistics(j j Yhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.statisticsj ttrio.Condition.acquire(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.acquirej ttrio.Condition.acquire_nowait(j j Whttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.acquire_nowaitj ttrio.Condition.locked(j j Ohttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.lockedj ttrio.Condition.notify(j j Ohttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.notifyj ttrio.Condition.notify_all(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.notify_allj ttrio.Condition.release(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.releasej ttrio.Condition.statistics(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.statisticsj ttrio.Condition.wait(j j Mhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Condition.waitj ttrio.DTLSChannel.aclose(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.aclosej ttrio.DTLSChannel.close(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.closej ttrio.DTLSChannel.do_handshake(j j Uhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.do_handshakej t"trio.DTLSChannel.get_cleartext_mtu(j j Zhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.get_cleartext_mtuj ttrio.DTLSChannel.receive(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.receivej ttrio.DTLSChannel.send(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.sendj t#trio.DTLSChannel.set_ciphertext_mtu(j j [https://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.set_ciphertext_mtuj ttrio.DTLSChannel.statistics(j j Shttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSChannel.statisticsj ttrio.DTLSEndpoint.close(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSEndpoint.closej ttrio.DTLSEndpoint.connect(j j Qhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSEndpoint.connectj ttrio.DTLSEndpoint.serve(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.DTLSEndpoint.servej ttrio.Event.is_set(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Event.is_setj ttrio.Event.set(j j Hhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Event.setj ttrio.Event.statistics(j j Ohttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Event.statisticsj ttrio.Event.wait(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Event.waitj ttrio.Lock.acquire(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Lock.acquirej ttrio.Lock.acquire_nowait(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Lock.acquire_nowaitj ttrio.Lock.locked(j j Jhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Lock.lockedj ttrio.Lock.release(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Lock.releasej ttrio.Lock.statistics(j j Nhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Lock.statisticsj ttrio.MemoryReceiveChannel.clone(j j Yhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemoryReceiveChannel.clonej ttrio.MemoryReceiveChannel.close(j j Yhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemoryReceiveChannel.closej t!trio.MemoryReceiveChannel.receive(j j [https://trio.readthedocs.io/en/stable/reference-core.html#trio.MemoryReceiveChannel.receivej t(trio.MemoryReceiveChannel.receive_nowait(j j bhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemoryReceiveChannel.receive_nowaitj ttrio.MemorySendChannel.clone(j j Vhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemorySendChannel.clonej ttrio.MemorySendChannel.close(j j Vhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemorySendChannel.closej ttrio.MemorySendChannel.send(j j Uhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.MemorySendChannel.sendj t"trio.MemorySendChannel.send_nowait(j j \https://trio.readthedocs.io/en/stable/reference-core.html#trio.MemorySendChannel.send_nowaitj ttrio.Nursery.start(j j Lhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery.startj ttrio.Nursery.start_soon(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery.start_soonj ttrio.Path.absolute(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.absolutej ttrio.Path.as_posix(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.as_posixj ttrio.Path.as_uri(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.as_urij ttrio.Path.chmod(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.chmodj t trio.Path.cwd(j j Ehttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.cwdj ttrio.Path.exists(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.existsj ttrio.Path.expanduser(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.expanduserj ttrio.Path.glob(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.globj ttrio.Path.group(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.groupj ttrio.Path.hardlink_to(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.hardlink_toj ttrio.Path.home(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.homej ttrio.Path.is_absolute(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_absolutej ttrio.Path.is_block_device(j j Qhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_block_devicej ttrio.Path.is_char_device(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_char_devicej ttrio.Path.is_dir(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_dirj ttrio.Path.is_fifo(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_fifoj ttrio.Path.is_file(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_filej ttrio.Path.is_mount(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_mountj ttrio.Path.is_relative_to(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_relative_toj ttrio.Path.is_reserved(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_reservedj ttrio.Path.is_socket(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_socketj ttrio.Path.is_symlink(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.is_symlinkj ttrio.Path.iterdir(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.iterdirj ttrio.Path.joinpath(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.joinpathj ttrio.Path.lchmod(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.lchmodj ttrio.Path.link_to(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.link_toj ttrio.Path.lstat(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.lstatj ttrio.Path.match(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.matchj ttrio.Path.mkdir(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.mkdirj ttrio.Path.open(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.openj ttrio.Path.owner(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.ownerj ttrio.Path.read_bytes(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.read_bytesj ttrio.Path.read_text(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.read_textj ttrio.Path.readlink(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.readlinkj ttrio.Path.relative_to(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.relative_toj ttrio.Path.rename(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.renamej ttrio.Path.replace(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.replacej ttrio.Path.resolve(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.resolvej ttrio.Path.rglob(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.rglobj ttrio.Path.rmdir(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.rmdirj ttrio.Path.samefile(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.samefilej ttrio.Path.stat(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.statj ttrio.Path.symlink_to(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.symlink_toj ttrio.Path.touch(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.touchj ttrio.Path.unlink(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.unlinkj ttrio.Path.with_name(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.with_namej ttrio.Path.with_stem(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.with_stemj ttrio.Path.with_suffix(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.with_suffixj ttrio.Path.write_bytes(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.write_bytesj ttrio.Path.write_text(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.write_textj ttrio.Process.kill(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.killj ttrio.Process.poll(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.pollj ttrio.Process.send_signal(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.send_signalj ttrio.Process.terminate(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.terminatej ttrio.Process.wait(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Process.waitj ttrio.SSLListener.accept(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLListener.acceptj ttrio.SSLListener.aclose(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLListener.aclosej ttrio.SSLStream.aclose(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.aclosej ttrio.SSLStream.do_handshake(j j Shttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.do_handshakej ttrio.SSLStream.receive_some(j j Shttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.receive_somej ttrio.SSLStream.send_all(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.send_allj ttrio.SSLStream.unwrap(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.unwrapj t,trio.SSLStream.wait_send_all_might_not_block(j j dhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SSLStream.wait_send_all_might_not_blockj ttrio.Semaphore.acquire(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphore.acquirej ttrio.Semaphore.acquire_nowait(j j Whttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphore.acquire_nowaitj ttrio.Semaphore.release(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphore.releasej ttrio.Semaphore.statistics(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphore.statisticsj ttrio.SocketListener.accept(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketListener.acceptj ttrio.SocketListener.aclose(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketListener.aclosej ttrio.SocketStream.aclose(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.aclosej ttrio.SocketStream.getsockopt(j j Thttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.getsockoptj ttrio.SocketStream.receive_some(j j Vhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.receive_somej ttrio.SocketStream.send_all(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.send_allj ttrio.SocketStream.send_eof(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.send_eofj ttrio.SocketStream.setsockopt(j j Thttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.setsockoptj t/trio.SocketStream.wait_send_all_might_not_block(j j ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.SocketStream.wait_send_all_might_not_blockj ttrio.StapledStream.aclose(j j Qhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.aclosej ttrio.StapledStream.receive_some(j j Whttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.receive_somej ttrio.StapledStream.send_all(j j Shttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.send_allj ttrio.StapledStream.send_eof(j j Shttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.send_eof j t0trio.StapledStream.wait_send_all_might_not_block(j j hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.StapledStream.wait_send_all_might_not_blockj ttrio.TaskStatus.started(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.TaskStatus.startedj t!trio._subprocess.HasFileno.fileno(j j Yhttps://trio.readthedocs.io/en/stable/reference-io.html#trio._subprocess.HasFileno.filenoj ttrio.abc.AsyncResource.aclose(j j Uhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.AsyncResource.aclosej ttrio.abc.Clock.current_time(j j Uhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.abc.Clock.current_timej t%trio.abc.Clock.deadline_to_sleep_time(j j _https://trio.readthedocs.io/en/stable/reference-core.html#trio.abc.Clock.deadline_to_sleep_timej ttrio.abc.Clock.start_clock(j j Thttps://trio.readthedocs.io/en/stable/reference-core.html#trio.abc.Clock.start_clockj t%trio.abc.HalfCloseableStream.send_eof(j j ]https://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.HalfCloseableStream.send_eofj t%trio.abc.HostnameResolver.getaddrinfo(j j bhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.abc.HostnameResolver.getaddrinfoj t%trio.abc.HostnameResolver.getnameinfo(j j bhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.abc.HostnameResolver.getnameinfoj t!trio.abc.Instrument.after_io_wait(j j _https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.after_io_waitj ttrio.abc.Instrument.after_run(j j [https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.after_runj t#trio.abc.Instrument.after_task_step(j j ahttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.after_task_stepj t"trio.abc.Instrument.before_io_wait(j j `https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.before_io_waitj ttrio.abc.Instrument.before_run(j j \https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.before_runj t$trio.abc.Instrument.before_task_step(j j bhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.before_task_stepj ttrio.abc.Instrument.task_exited(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.task_exitedj t"trio.abc.Instrument.task_scheduled(j j `https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.task_scheduledj t trio.abc.Instrument.task_spawned(j j ^https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.abc.Instrument.task_spawnedj ttrio.abc.Listener.accept(j j Phttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.Listener.acceptj ttrio.abc.ReceiveChannel.receive(j j Whttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.ReceiveChannel.receivej t#trio.abc.ReceiveStream.receive_some(j j [https://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.ReceiveStream.receive_somej ttrio.abc.SendChannel.send(j j Qhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.SendChannel.sendj ttrio.abc.SendStream.send_all(j j Thttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.SendStream.send_allj t1trio.abc.SendStream.wait_send_all_might_not_block(j j ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.abc.SendStream.wait_send_all_might_not_blockj ttrio.abc.SocketFactory.socket(j j Zhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.abc.SocketFactory.socketj ttrio.lowlevel.ParkingLot.park(j j [https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLot.parkj ttrio.lowlevel.ParkingLot.repark(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLot.reparkj t#trio.lowlevel.ParkingLot.repark_all(j j ahttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLot.repark_allj t#trio.lowlevel.ParkingLot.statistics(j j ahttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLot.statisticsj ttrio.lowlevel.ParkingLot.unpark(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLot.unparkj t#trio.lowlevel.ParkingLot.unpark_all(j j ahttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.ParkingLot.unpark_allj t$trio.lowlevel.Task.iter_await_frames(j j bhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Task.iter_await_framesj t%trio.lowlevel.TrioToken.run_sync_soon(j j chttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.TrioToken.run_sync_soonj ttrio.socket.SocketType.connect(j j Vhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.SocketType.connectj t"trio.socket.SocketType.is_readable(j j Zhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.SocketType.is_readablej ttrio.socket.SocketType.sendfile(j j Whttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.SocketType.sendfilej ttrio.testing.Matcher.matches(j j Yhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.Matcher.matchesj t'trio.testing.MemoryReceiveStream.aclose(j j dhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.aclosej t&trio.testing.MemoryReceiveStream.close(j j chttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.closej t)trio.testing.MemoryReceiveStream.put_data(j j fhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.put_dataj t(trio.testing.MemoryReceiveStream.put_eof(j j ehttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.put_eofj t-trio.testing.MemoryReceiveStream.receive_some(j j jhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemoryReceiveStream.receive_somej t$trio.testing.MemorySendStream.aclose(j j ahttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.aclosej t#trio.testing.MemorySendStream.close(j j `https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.closej t&trio.testing.MemorySendStream.get_data(j j chttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.get_dataj t-trio.testing.MemorySendStream.get_data_nowait(j j jhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.get_data_nowaitj t&trio.testing.MemorySendStream.send_all(j j chttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.send_allj t;trio.testing.MemorySendStream.wait_send_all_might_not_block(j j xhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MemorySendStream.wait_send_all_might_not_blockj ttrio.testing.MockClock.jump(j j Xhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.MockClock.jumpj t trio.testing.RaisesGroup.matches(j j ]https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.RaisesGroup.matchesj t7trio.testing._raises_group._ExceptionInfo.fill_unfilled(j j thttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing._raises_group._ExceptionInfo.fill_unfilledj t3trio.testing._raises_group._ExceptionInfo.for_later(j j phttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing._raises_group._ExceptionInfo.for_laterj tu py:property}(%trio.CapacityLimiter.available_tokens(j j _https://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.available_tokensj t$trio.CapacityLimiter.borrowed_tokens(j j ^https://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.borrowed_tokensj t!trio.CapacityLimiter.total_tokens(j j [https://trio.readthedocs.io/en/stable/reference-core.html#trio.CapacityLimiter.total_tokensj ttrio.Nursery.child_tasks(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery.child_tasksj ttrio.Nursery.parent_task(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery.parent_taskj ttrio.Path.anchor(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.anchorj ttrio.Path.drive(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.drivej ttrio.Path.name(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.namej ttrio.Path.parent(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.parentj ttrio.Path.parents(j j Ihttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.parentsj ttrio.Path.parts(j j Ghttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.partsj ttrio.Path.root(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.rootj ttrio.Path.stem(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.stemj ttrio.Path.suffix(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.suffixj ttrio.Path.suffixes(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.Path.suffixesj ttrio.Semaphore.max_value(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphore.max_valuej ttrio.Semaphore.value(j j Nhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.Semaphore.valuej t,trio.testing._raises_group._ExceptionInfo.tb(j j ihttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing._raises_group._ExceptionInfo.tbj t.trio.testing._raises_group._ExceptionInfo.type(j j khttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing._raises_group._ExceptionInfo.typej t/trio.testing._raises_group._ExceptionInfo.value(j j lhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing._raises_group._ExceptionInfo.valuej tu py:function}(trio.aclose_forcefully(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.aclose_forcefullyj ttrio.current_effective_deadline(j j Yhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.current_effective_deadlinej ttrio.current_time(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.current_timej ttrio.fail_after(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#trio.fail_afterj t trio.fail_at(j j Fhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.fail_atj t trio.from_thread.check_cancelled(j j Zhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.from_thread.check_cancelledj ttrio.from_thread.run(j j Nhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.from_thread.runj ttrio.from_thread.run_sync(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#trio.from_thread.run_syncj t!trio.lowlevel.WaitForSingleObject(j j _https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.WaitForSingleObjectj ttrio.lowlevel.add_instrument(j j Zhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.add_instrumentj t(trio.lowlevel.cancel_shielded_checkpoint(j j fhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.cancel_shielded_checkpointj ttrio.lowlevel.checkpoint(j j Vhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.checkpointj t%trio.lowlevel.checkpoint_if_cancelled(j j chttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.checkpoint_if_cancelledj ttrio.lowlevel.current_clock(j j Yhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_clockj ttrio.lowlevel.current_iocp(j j Xhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_iocpj ttrio.lowlevel.current_kqueue(j j Zhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_kqueuej ttrio.lowlevel.current_root_task(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_root_taskj t trio.lowlevel.current_statistics(j j ^https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_statisticsj ttrio.lowlevel.current_task(j j Xhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_taskj t trio.lowlevel.current_trio_token(j j ^https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.current_trio_tokenj t$trio.lowlevel.currently_ki_protected(j j bhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.currently_ki_protectedj t#trio.lowlevel.disable_ki_protection(j j ahttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.disable_ki_protectionj t"trio.lowlevel.enable_ki_protection(j j `https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.enable_ki_protectionj t$trio.lowlevel.monitor_completion_key(j j bhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.monitor_completion_keyj ttrio.lowlevel.monitor_kevent(j j Zhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.monitor_keventj ttrio.lowlevel.notify_closing(j j Zhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.notify_closingj ttrio.lowlevel.open_process(j j Xhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.open_processj t1trio.lowlevel.permanently_detach_coroutine_object(j j ohttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.permanently_detach_coroutine_objectj t!trio.lowlevel.readinto_overlapped(j j _https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.readinto_overlappedj t0trio.lowlevel.reattach_detached_coroutine_object(j j nhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.reattach_detached_coroutine_objectj t trio.lowlevel.register_with_iocp(j j ^https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.register_with_iocpj ttrio.lowlevel.remove_instrument(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.remove_instrumentj ttrio.lowlevel.reschedule(j j Vhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.reschedulej ttrio.lowlevel.spawn_system_task(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.spawn_system_taskj ttrio.lowlevel.start_guest_run(j j [https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.start_guest_runj ttrio.lowlevel.start_thread_soon(j j ]https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.start_thread_soonj t1trio.lowlevel.temporarily_detach_coroutine_object(j j ohttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.temporarily_detach_coroutine_objectj ttrio.lowlevel.wait_kevent(j j Whttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.wait_keventj ttrio.lowlevel.wait_overlapped(j j [https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.wait_overlappedj ttrio.lowlevel.wait_readable(j j Yhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.wait_readablej t#trio.lowlevel.wait_task_rescheduled(j j ahttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.wait_task_rescheduledj ttrio.lowlevel.wait_writable(j j Yhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.wait_writablej ttrio.lowlevel.write_overlapped(j j \https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.write_overlappedj ttrio.move_on_after(j j Lhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.move_on_afterj ttrio.move_on_at(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#trio.move_on_atj ttrio.open_file(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_filej ttrio.open_memory_channel(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.open_memory_channelj ttrio.open_nursery(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#trio.open_nurseryj ttrio.open_signal_receiver(j j Qhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_signal_receiverj t trio.open_ssl_over_tcp_listeners(j j Xhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_ssl_over_tcp_listenersj ttrio.open_ssl_over_tcp_stream(j j Uhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_ssl_over_tcp_streamj ttrio.open_tcp_listeners(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_tcp_listenersj ttrio.open_tcp_stream(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_tcp_streamj ttrio.open_unix_socket(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.open_unix_socketj ttrio.run(j j Bhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.runj ttrio.run_process(j j Hhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.run_processj ttrio.serve_listeners(j j Lhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.serve_listenersj ttrio.serve_ssl_over_tcp(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.serve_ssl_over_tcpj ttrio.serve_tcp(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.serve_tcpj t trio.sleep(j j Dhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.sleepj ttrio.sleep_forever(j j Lhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.sleep_foreverj ttrio.sleep_until(j j Jhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.sleep_untilj ttrio.socket.from_stdlib_socket(j j Vhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.from_stdlib_socketj ttrio.socket.fromfd(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.fromfdj ttrio.socket.fromshare(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.fromsharej ttrio.socket.getaddrinfo(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.getaddrinfoj ttrio.socket.getnameinfo(j j Ohttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.getnameinfoj ttrio.socket.getprotobyname(j j Rhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.getprotobynamej t(trio.socket.set_custom_hostname_resolver(j j ehttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.socket.set_custom_hostname_resolverj t%trio.socket.set_custom_socket_factory(j j bhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.socket.set_custom_socket_factoryj ttrio.socket.socket(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.socketj ttrio.socket.socketpair(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.socket.socketpairj t trio.testing.active_thread_count(j j ]https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.active_thread_countj ttrio.testing.assert_checkpoints(j j \https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.assert_checkpointsj t"trio.testing.assert_no_checkpoints(j j _https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.assert_no_checkpointsj t(trio.testing.check_half_closeable_stream(j j ehttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.check_half_closeable_streamj t!trio.testing.check_one_way_stream(j j ^https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.check_one_way_streamj t!trio.testing.check_two_way_stream(j j ^https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.check_two_way_streamj t)trio.testing.lockstep_stream_one_way_pair(j j fhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.lockstep_stream_one_way_pairj t!trio.testing.lockstep_stream_pair(j j ^https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.lockstep_stream_pairj t'trio.testing.memory_stream_one_way_pair(j j dhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.memory_stream_one_way_pairj ttrio.testing.memory_stream_pair(j j \https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.memory_stream_pairj ttrio.testing.memory_stream_pump(j j \https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.memory_stream_pumpj t+trio.testing.open_stream_to_socket_listener(j j hhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.open_stream_to_socket_listenerj t#trio.testing.wait_all_tasks_blocked(j j `https://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.wait_all_tasks_blockedj t'trio.testing.wait_all_threads_completed(j j dhttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.wait_all_threads_completedj t-trio.to_thread.current_default_thread_limiter(j j ghttps://trio.readthedocs.io/en/stable/reference-core.html#trio.to_thread.current_default_thread_limiterj ttrio.to_thread.run_sync(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#trio.to_thread.run_syncj ttrio.wrap_file(j j Fhttps://trio.readthedocs.io/en/stable/reference-io.html#trio.wrap_filej tupy:data}(trio.lowlevel.Abort.FAILED(j j Xhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Abort.FAILEDj ttrio.lowlevel.Abort.SUCCEEDED(j j [https://trio.readthedocs.io/en/stable/reference-lowlevel.html#trio.lowlevel.Abort.SUCCEEDEDj tu py:decorator}trio.testing.trio_test(j j Shttps://trio.readthedocs.io/en/stable/reference-testing.html#trio.testing.trio_testj ts std:label}(abstract-stream-api(j j Khttps://trio.readthedocs.io/en/stable/reference-io.html#abstract-stream-apiThe abstract Stream APIt async-file-io(j j Ehttps://trio.readthedocs.io/en/stable/reference-io.html#async-file-ioAsynchronous filesystem I/Otasync-file-io-overview(j j Nhttps://trio.readthedocs.io/en/stable/reference-io.html#async-file-io-overview API overviewtasync-file-objects(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#async-file-objectsAsynchronous file objectstasync-generators(j j Jhttps://trio.readthedocs.io/en/stable/reference-core.html#async-generatorsNotes on async generatorstasync-sandwich(j j Bhttps://trio.readthedocs.io/en/stable/tutorial.html#async-sandwichj tblocking-cleanup-example(j j Rhttps://trio.readthedocs.io/en/stable/reference-core.html#blocking-cleanup-examplej tcancellable-primitives(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#cancellable-primitives%Cancellation and primitive operationst cancellation(j j Fhttps://trio.readthedocs.io/en/stable/reference-core.html#cancellationCancellation and timeoutstchannel-buffering(j j Khttps://trio.readthedocs.io/en/stable/reference-core.html#channel-bufferingBuffering in channelst channel-mpmc(j j Fhttps://trio.readthedocs.io/en/stable/reference-core.html#channel-mpmc5Managing multiple producers and/or multiple consumerstchannel-shutdown(j j Jhttps://trio.readthedocs.io/en/stable/reference-core.html#channel-shutdownClean shutdown with channelstchannels(j j Bhttps://trio.readthedocs.io/en/stable/reference-core.html#channels+Using channels to pass values between taskstcheckpoint-rule(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#checkpoint-rulej t checkpoints(j j Ehttps://trio.readthedocs.io/en/stable/reference-core.html#checkpoints Checkpointstcoc-contacting-maintainers(j j Uhttps://trio.readthedocs.io/en/stable/code-of-conduct.html#coc-contacting-maintainersContacting Maintainerstcoc-enforcement-examples(j j Shttps://trio.readthedocs.io/en/stable/code-of-conduct.html#coc-enforcement-examplesEnforcement Examplestcoc-further-enforcement(j j Rhttps://trio.readthedocs.io/en/stable/code-of-conduct.html#coc-further-enforcementFurther Enforcementtcoc-other-community-standards(j j Xhttps://trio.readthedocs.io/en/stable/code-of-conduct.html#coc-other-community-standardsOther Community Standardstcoc-when-something-happens(j j Uhttps://trio.readthedocs.io/en/stable/code-of-conduct.html#coc-when-something-happensWhen Something Happenstcode-of-conduct(j j Jhttps://trio.readthedocs.io/en/stable/code-of-conduct.html#code-of-conductCode of Conductt contributing(j j Dhttps://trio.readthedocs.io/en/stable/contributing.html#contributing)Contributing to Trio and related projectstexceptiongroups(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#exceptiongroupsErrors in multiple child taskstgenindex(j j 3https://trio.readthedocs.io/en/stable/genindex.htmlIndextglossary(j j Using “guest mode” to run Trio on top of other event loopstguest-run-implementation(j j Vhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#guest-run-implementation4Implementing guest mode for your favorite event loopthandling_exception_groups(j j Shttps://trio.readthedocs.io/en/stable/reference-core.html#handling-exception-groupsDesigning for multiple errorsthigh-level-networking(j j Mhttps://trio.readthedocs.io/en/stable/reference-io.html#high-level-networkingSockets and networkingtinstrumentation(j j Mhttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#instrumentationInstrument APItinteractive debugging(j j Ohttps://trio.readthedocs.io/en/stable/reference-core.html#interactive-debuggingInteractive debuggingtjoining-the-team(j j Hhttps://trio.readthedocs.io/en/stable/contributing.html#joining-the-teamJoining the teamtlive-coroutine-handoff(j j Thttps://trio.readthedocs.io/en/stable/reference-lowlevel.html#live-coroutine-handoffhttps://trio.readthedocs.io/en/stable/releasing.html#releasingPreparing a releasetsearch(j j 1https://trio.readthedocs.io/en/stable/search.html Search Pagetstrict_exception_groups(j j Qhttps://trio.readthedocs.io/en/stable/reference-core.html#strict-exception-groups1Historical Note: “non-strict” ExceptionGroupst subprocess(j j Bhttps://trio.readthedocs.io/en/stable/reference-io.html#subprocessSpawning subprocessestsubprocess-options(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#subprocess-options!Options for starting subprocessestsubprocess-quoting(j j Jhttps://trio.readthedocs.io/en/stable/reference-io.html#subprocess-quoting%Quoting: more than you wanted to knowtsynchronization(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#synchronization-Synchronizing and communicating between tasksttask-local-storage(j j Lhttps://trio.readthedocs.io/en/stable/reference-core.html#task-local-storageTask-local storagettasks(j j ?https://trio.readthedocs.io/en/stable/reference-core.html#tasks(Tasks let you do multiple things at oncettesting-custom-streams(j j Shttps://trio.readthedocs.io/en/stable/reference-testing.html#testing-custom-streams%Testing custom stream implementationsttesting-streams(j j Lhttps://trio.readthedocs.io/en/stable/reference-testing.html#testing-streamsStreamst testing-time(j j Ihttps://trio.readthedocs.io/en/stable/reference-testing.html#testing-timeTime and timeoutstthreads(j j Ahttps://trio.readthedocs.io/en/stable/reference-core.html#threadsThreads (if you must)ttime-and-clocks(j j Ihttps://trio.readthedocs.io/en/stable/reference-core.html#time-and-clocksTime and clocksttutorial-echo-client-example(j j Phttps://trio.readthedocs.io/en/stable/tutorial.html#tutorial-echo-client-examplej ttutorial-echo-server-example(j j Phttps://trio.readthedocs.io/en/stable/tutorial.html#tutorial-echo-server-exampleAn echo serverttutorial-example-tasks-intro(j j Phttps://trio.readthedocs.io/en/stable/tutorial.html#tutorial-example-tasks-introj ttutorial-instrument-example(j j Ohttps://trio.readthedocs.io/en/stable/tutorial.html#tutorial-instrument-exampleTask switching illustratedtvirtual-network-hooks(j j Rhttps://trio.readthedocs.io/en/stable/reference-testing.html#virtual-network-hooksVirtual networking for testingtvirtual-streams(j j Lhttps://trio.readthedocs.io/en/stable/reference-testing.html#virtual-streamsVirtual, controllable streamstworker-thread-limiting(j j Phttps://trio.readthedocs.io/en/stable/reference-core.html#worker-thread-limiting1Trio’s philosophy about managing worker threadstustd:term}asynchronous file object(j j Qhttps://trio.readthedocs.io/en/stable/glossary.html#term-asynchronous-file-objectj tsstd:doc}(awesome-trio-libraries(j j Ahttps://trio.readthedocs.io/en/stable/awesome-trio-libraries.htmlAwesome Trio Librariestcode-of-conduct(j j :https://trio.readthedocs.io/en/stable/code-of-conduct.htmlCode of Conductt contributing(j j 7https://trio.readthedocs.io/en/stable/contributing.html)Contributing to Trio and related projectstdesign(j j 1https://trio.readthedocs.io/en/stable/design.htmlDesign and internalstglossary(j j 3https://trio.readthedocs.io/en/stable/glossary.htmlGlossarythistory(j j 2https://trio.readthedocs.io/en/stable/history.htmlRelease historytindex(j j 0https://trio.readthedocs.io/en/stable/index.html=Trio: a friendly Python library for async concurrency and I/Otreference-core(j j 9https://trio.readthedocs.io/en/stable/reference-core.htmlTrio’s core functionalityt reference-io(j j 7https://trio.readthedocs.io/en/stable/reference-io.html I/O in Triotreference-lowlevel(j j =https://trio.readthedocs.io/en/stable/reference-lowlevel.html3Introspecting and extending Trio with trio.lowleveltreference-testing(j j https://docs.python.org/3/c-api/veryhigh.html#c.PyOS_InputHookj tPyOS_ReadlineFunctionPointer(j&j&Lhttps://docs.python.org/3/c-api/veryhigh.html#c.PyOS_ReadlineFunctionPointerj tPyObject._ob_next(j&j&@https://docs.python.org/3/c-api/typeobj.html#c.PyObject._ob_nextj tPyObject._ob_prev(j&j&@https://docs.python.org/3/c-api/typeobj.html#c.PyObject._ob_prevj tPyObject.ob_refcnt(j&j&Ahttps://docs.python.org/3/c-api/typeobj.html#c.PyObject.ob_refcntj tPyObject.ob_type(j&j&?https://docs.python.org/3/c-api/typeobj.html#c.PyObject.ob_typej tPyPreConfig.allocator(j&j&Hhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.allocatorj tPyPreConfig.coerce_c_locale(j&j&Nhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.coerce_c_localej t PyPreConfig.coerce_c_locale_warn(j&j&Shttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.coerce_c_locale_warnj tPyPreConfig.configure_locale(j&j&Ohttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.configure_localej tPyPreConfig.dev_mode(j&j&Ghttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.dev_modej tPyPreConfig.isolated(j&j&Ghttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.isolatedj t&PyPreConfig.legacy_windows_fs_encoding(j&j&Yhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.legacy_windows_fs_encodingj tPyPreConfig.parse_argv(j&j&Ihttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.parse_argvj tPyPreConfig.use_environment(j&j&Nhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.use_environmentj tPyPreConfig.utf8_mode(j&j&Hhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig.utf8_modej tPyProperty_Type(j&j&Ahttps://docs.python.org/3/c-api/descriptor.html#c.PyProperty_Typej tPySeqIter_Type(j&j&>https://docs.python.org/3/c-api/iterator.html#c.PySeqIter_Typej tPySequenceMethods.sq_ass_item(j&j&Lhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_ass_itemj tPySequenceMethods.sq_concat(j&j&Jhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_concatj tPySequenceMethods.sq_contains(j&j&Lhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_containsj t#PySequenceMethods.sq_inplace_concat(j&j&Rhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_inplace_concatj t#PySequenceMethods.sq_inplace_repeat(j&j&Rhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_inplace_repeatj tPySequenceMethods.sq_item(j&j&Hhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_itemj tPySequenceMethods.sq_length(j&j&Jhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_lengthj tPySequenceMethods.sq_repeat(j&j&Jhttps://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_repeatj t PySet_Type(j&j&5https://docs.python.org/3/c-api/set.html#c.PySet_Typej t PySlice_Type(j&j&9https://docs.python.org/3/c-api/slice.html#c.PySlice_Typej tPyStatus.err_msg(j&j&Chttps://docs.python.org/3/c-api/init_config.html#c.PyStatus.err_msgj tPyStatus.exitcode(j&j&Dhttps://docs.python.org/3/c-api/init_config.html#c.PyStatus.exitcodej t PyStatus.func(j&j&@https://docs.python.org/3/c-api/init_config.html#c.PyStatus.funcj tPyStructSequence_Desc.doc(j&j&Fhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Desc.docj tPyStructSequence_Desc.fields(j&j&Ihttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Desc.fieldsj t#PyStructSequence_Desc.n_in_sequence(j&j&Phttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Desc.n_in_sequencej tPyStructSequence_Desc.name(j&j&Ghttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Desc.namej tPyStructSequence_Field.doc(j&j&Ghttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Field.docj tPyStructSequence_Field.name(j&j&Hhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Field.namej tPyStructSequence_UnnamedField(j&j&Jhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_UnnamedFieldj tPyThreadState.interp(j&j&@https://docs.python.org/3/c-api/init.html#c.PyThreadState.interpj t PyTrace_CALL(j&j&8https://docs.python.org/3/c-api/init.html#c.PyTrace_CALLj tPyTrace_C_CALL(j&j&:https://docs.python.org/3/c-api/init.html#c.PyTrace_C_CALLj tPyTrace_C_EXCEPTION(j&j&?https://docs.python.org/3/c-api/init.html#c.PyTrace_C_EXCEPTIONj tPyTrace_C_RETURN(j&j&https://docs.python.org/3/c-api/init.html#c.Py_InteractiveFlagj tPy_IsolatedFlag(j&j&;https://docs.python.org/3/c-api/init.html#c.Py_IsolatedFlagj tPy_LegacyWindowsFSEncodingFlag(j&j&Jhttps://docs.python.org/3/c-api/init.html#c.Py_LegacyWindowsFSEncodingFlagj tPy_LegacyWindowsStdioFlag(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.Py_LegacyWindowsStdioFlagj t Py_NoSiteFlag(j&j&9https://docs.python.org/3/c-api/init.html#c.Py_NoSiteFlagj tPy_NoUserSiteDirectory(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.Py_NoUserSiteDirectoryj tPy_None(j&j&3https://docs.python.org/3/c-api/none.html#c.Py_Nonej tPy_NotImplemented(j&j&?https://docs.python.org/3/c-api/object.html#c.Py_NotImplementedj tPy_OptimizeFlag(j&j&;https://docs.python.org/3/c-api/init.html#c.Py_OptimizeFlagj t Py_QuietFlag(j&j&8https://docs.python.org/3/c-api/init.html#c.Py_QuietFlagj tPy_True(j&j&3https://docs.python.org/3/c-api/bool.html#c.Py_Truej tPy_UnbufferedStdioFlag(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.Py_UnbufferedStdioFlagj tPy_VerboseFlag(j&j&:https://docs.python.org/3/c-api/init.html#c.Py_VerboseFlagj t Py_Version(j&j&?https://docs.python.org/3/c-api/apiabiversion.html#c.Py_Versionj t Py_buffer.buf(j&j&;https://docs.python.org/3/c-api/buffer.html#c.Py_buffer.bufj tPy_buffer.format(j&j&>https://docs.python.org/3/c-api/buffer.html#c.Py_buffer.formatj tPy_buffer.internal(j&j&@https://docs.python.org/3/c-api/buffer.html#c.Py_buffer.internalj tPy_buffer.itemsize(j&j&@https://docs.python.org/3/c-api/buffer.html#c.Py_buffer.itemsizej t Py_buffer.len(j&j&;https://docs.python.org/3/c-api/buffer.html#c.Py_buffer.lenj tPy_buffer.ndim(j&j&https://docs.python.org/3/c-api/complex.html#c.Py_complex.imagj tPy_complex.real(j&j&>https://docs.python.org/3/c-api/complex.html#c.Py_complex.realj t Py_eval_input(j&j&=https://docs.python.org/3/c-api/veryhigh.html#c.Py_eval_inputj t Py_file_input(j&j&=https://docs.python.org/3/c-api/veryhigh.html#c.Py_file_inputj tPy_single_input(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.Py_single_inputj t_Py_NoneStruct(j&j&@https://docs.python.org/3/c-api/allocation.html#c._Py_NoneStructj t_inittab.initfunc(j&j&?https://docs.python.org/3/c-api/import.html#c._inittab.initfuncj t _inittab.name(j&j&;https://docs.python.org/3/c-api/import.html#c._inittab.namej tuc:macro}( METH_CLASS(j&j&https://docs.python.org/3/c-api/structures.html#c.METH_COEXISTj t METH_FASTCALL(j&j&?https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALLj t METH_KEYWORDS(j&j&?https://docs.python.org/3/c-api/structures.html#c.METH_KEYWORDSj t METH_METHOD(j&j&=https://docs.python.org/3/c-api/structures.html#c.METH_METHODj t METH_NOARGS(j&j&=https://docs.python.org/3/c-api/structures.html#c.METH_NOARGSj tMETH_O(j&j&8https://docs.python.org/3/c-api/structures.html#c.METH_Oj t METH_STATIC(j&j&=https://docs.python.org/3/c-api/structures.html#c.METH_STATICj t METH_VARARGS(j&j&>https://docs.python.org/3/c-api/structures.html#c.METH_VARARGSj tPYMEM_DOMAIN_MEM(j&j&>https://docs.python.org/3/c-api/memory.html#c.PYMEM_DOMAIN_MEMj tPYMEM_DOMAIN_OBJ(j&j&>https://docs.python.org/3/c-api/memory.html#c.PYMEM_DOMAIN_OBJj tPYMEM_DOMAIN_RAW(j&j&>https://docs.python.org/3/c-api/memory.html#c.PYMEM_DOMAIN_RAWj tPY_MAJOR_VERSION(j&j&Ehttps://docs.python.org/3/c-api/apiabiversion.html#c.PY_MAJOR_VERSIONj tPY_MICRO_VERSION(j&j&Ehttps://docs.python.org/3/c-api/apiabiversion.html#c.PY_MICRO_VERSIONj tPY_MINOR_VERSION(j&j&Ehttps://docs.python.org/3/c-api/apiabiversion.html#c.PY_MINOR_VERSIONj tPY_RELEASE_LEVEL(j&j&Ehttps://docs.python.org/3/c-api/apiabiversion.html#c.PY_RELEASE_LEVELj tPY_RELEASE_SERIAL(j&j&Fhttps://docs.python.org/3/c-api/apiabiversion.html#c.PY_RELEASE_SERIALj tPY_VECTORCALL_ARGUMENTS_OFFSET(j&j&Jhttps://docs.python.org/3/c-api/call.html#c.PY_VECTORCALL_ARGUMENTS_OFFSETj tPY_VERSION_HEX(j&j&Chttps://docs.python.org/3/c-api/apiabiversion.html#c.PY_VERSION_HEXj tPyBUF_ANY_CONTIGUOUS(j&j&Bhttps://docs.python.org/3/c-api/buffer.html#c.PyBUF_ANY_CONTIGUOUSj t PyBUF_CONTIG(j&j&:https://docs.python.org/3/c-api/buffer.html#c.PyBUF_CONTIGj tPyBUF_CONTIG_RO(j&j&=https://docs.python.org/3/c-api/buffer.html#c.PyBUF_CONTIG_ROj tPyBUF_C_CONTIGUOUS(j&j&@https://docs.python.org/3/c-api/buffer.html#c.PyBUF_C_CONTIGUOUSj t PyBUF_FORMAT(j&j&:https://docs.python.org/3/c-api/buffer.html#c.PyBUF_FORMATj t PyBUF_FULL(j&j&8https://docs.python.org/3/c-api/buffer.html#c.PyBUF_FULLj t PyBUF_FULL_RO(j&j&;https://docs.python.org/3/c-api/buffer.html#c.PyBUF_FULL_ROj tPyBUF_F_CONTIGUOUS(j&j&@https://docs.python.org/3/c-api/buffer.html#c.PyBUF_F_CONTIGUOUSj tPyBUF_INDIRECT(j&j&https://docs.python.org/3/c-api/buffer.html#c.PyBUF_RECORDS_ROj t PyBUF_SIMPLE(j&j&:https://docs.python.org/3/c-api/buffer.html#c.PyBUF_SIMPLEj t PyBUF_STRIDED(j&j&;https://docs.python.org/3/c-api/buffer.html#c.PyBUF_STRIDEDj tPyBUF_STRIDED_RO(j&j&>https://docs.python.org/3/c-api/buffer.html#c.PyBUF_STRIDED_ROj t PyBUF_STRIDES(j&j&;https://docs.python.org/3/c-api/buffer.html#c.PyBUF_STRIDESj tPyBUF_WRITABLE(j&j&https://docs.python.org/3/c-api/allocation.html#c.PyObject_Newj tPyObject_NewVar(j&j&Ahttps://docs.python.org/3/c-api/allocation.html#c.PyObject_NewVarj tPyObject_VAR_HEAD(j&j&Chttps://docs.python.org/3/c-api/structures.html#c.PyObject_VAR_HEADj tPyUnicode_1BYTE_KIND(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_1BYTE_KINDj tPyUnicode_2BYTE_KIND(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_2BYTE_KINDj tPyUnicode_4BYTE_KIND(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_4BYTE_KINDj tPyVarObject_HEAD_INIT(j&j&Ghttps://docs.python.org/3/c-api/structures.html#c.PyVarObject_HEAD_INITj tPy_ABS(j&j&3https://docs.python.org/3/c-api/intro.html#c.Py_ABSj tPy_ALWAYS_INLINE(j&j&=https://docs.python.org/3/c-api/intro.html#c.Py_ALWAYS_INLINEj t Py_AUDIT_READ(j&j&?https://docs.python.org/3/c-api/structures.html#c.Py_AUDIT_READj tPy_BEGIN_ALLOW_THREADS(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.Py_BEGIN_ALLOW_THREADSj tPy_BLOCK_THREADS(j&j&https://docs.python.org/3/c-api/init.html#c.Py_UNBLOCK_THREADSj tPy_UNREACHABLE(j&j&;https://docs.python.org/3/c-api/intro.html#c.Py_UNREACHABLEj t Py_UNUSED(j&j&6https://docs.python.org/3/c-api/intro.html#c.Py_UNUSEDj t Py_XSETREF(j&j&=https://docs.python.org/3/c-api/refcounting.html#c.Py_XSETREFj t Py_mod_create(j&j&;https://docs.python.org/3/c-api/module.html#c.Py_mod_createj t Py_mod_exec(j&j&9https://docs.python.org/3/c-api/module.html#c.Py_mod_execj tPy_mod_multiple_interpreters(j&j&Jhttps://docs.python.org/3/c-api/module.html#c.Py_mod_multiple_interpretersj tPy_tss_NEEDS_INIT(j&j&=https://docs.python.org/3/c-api/init.html#c.Py_tss_NEEDS_INITj tT_NONE(j&j&8https://docs.python.org/3/c-api/structures.html#c.T_NONEj tT_OBJECT(j&j&:https://docs.python.org/3/c-api/structures.html#c.T_OBJECTj tu c:function}( PyAIter_Check(j&j&9https://docs.python.org/3/c-api/iter.html#c.PyAIter_Checkj tPyAnySet_Check(j&j&9https://docs.python.org/3/c-api/set.html#c.PyAnySet_Checkj tPyAnySet_CheckExact(j&j&>https://docs.python.org/3/c-api/set.html#c.PyAnySet_CheckExactj t PyArg_Parse(j&j&6https://docs.python.org/3/c-api/arg.html#c.PyArg_Parsej tPyArg_ParseTuple(j&j&;https://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTuplej tPyArg_ParseTupleAndKeywords(j&j&Fhttps://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywordsj tPyArg_UnpackTuple(j&j&https://docs.python.org/3/c-api/buffer.html#c.PyBuffer_Releasej tPyBuffer_SizeFromFormat(j&j&Ehttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_SizeFromFormatj tPyBuffer_ToContiguous(j&j&Chttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_ToContiguousj tPyByteArray_AS_STRING(j&j&Fhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AS_STRINGj tPyByteArray_AsString(j&j&Ehttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AsStringj tPyByteArray_Check(j&j&Bhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Checkj tPyByteArray_CheckExact(j&j&Ghttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_CheckExactj tPyByteArray_Concat(j&j&Chttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Concatj tPyByteArray_FromObject(j&j&Ghttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromObjectj tPyByteArray_FromStringAndSize(j&j&Nhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromStringAndSizej tPyByteArray_GET_SIZE(j&j&Ehttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_GET_SIZEj tPyByteArray_Resize(j&j&Chttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Resizej tPyByteArray_Size(j&j&Ahttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Sizej tPyBytes_AS_STRING(j&j&>https://docs.python.org/3/c-api/bytes.html#c.PyBytes_AS_STRINGj tPyBytes_AsString(j&j&=https://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringj tPyBytes_AsStringAndSize(j&j&Dhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringAndSizej t PyBytes_Check(j&j&:https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Checkj tPyBytes_CheckExact(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_CheckExactj tPyBytes_Concat(j&j&;https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Concatj tPyBytes_ConcatAndDel(j&j&Ahttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatAndDelj tPyBytes_FromFormat(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatj tPyBytes_FromFormatV(j&j&@https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatVj tPyBytes_FromObject(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromObjectj tPyBytes_FromString(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringj tPyBytes_FromStringAndSize(j&j&Fhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringAndSizej tPyBytes_GET_SIZE(j&j&=https://docs.python.org/3/c-api/bytes.html#c.PyBytes_GET_SIZEj t PyBytes_Size(j&j&9https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Sizej tPyCFunction_New(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_Newj tPyCFunction_NewEx(j&j&Chttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_NewExj t PyCMethod_New(j&j&?https://docs.python.org/3/c-api/structures.html#c.PyCMethod_Newj tPyCallIter_Check(j&j&@https://docs.python.org/3/c-api/iterator.html#c.PyCallIter_Checkj tPyCallIter_New(j&j&>https://docs.python.org/3/c-api/iterator.html#c.PyCallIter_Newj tPyCallable_Check(j&j&https://docs.python.org/3/c-api/code.html#c.PyCode_GetCellvarsj tPyCode_GetCode(j&j&:https://docs.python.org/3/c-api/code.html#c.PyCode_GetCodej tPyCode_GetFirstFree(j&j&?https://docs.python.org/3/c-api/code.html#c.PyCode_GetFirstFreej tPyCode_GetFreevars(j&j&>https://docs.python.org/3/c-api/code.html#c.PyCode_GetFreevarsj tPyCode_GetNumFree(j&j&=https://docs.python.org/3/c-api/code.html#c.PyCode_GetNumFreej tPyCode_GetVarnames(j&j&>https://docs.python.org/3/c-api/code.html#c.PyCode_GetVarnamesj tPyCode_NewEmpty(j&j&;https://docs.python.org/3/c-api/code.html#c.PyCode_NewEmptyj tPyCodec_BackslashReplaceErrors(j&j&Khttps://docs.python.org/3/c-api/codec.html#c.PyCodec_BackslashReplaceErrorsj tPyCodec_Decode(j&j&;https://docs.python.org/3/c-api/codec.html#c.PyCodec_Decodej tPyCodec_Decoder(j&j&https://docs.python.org/3/c-api/complex.html#c.PyComplex_Checkj tPyComplex_CheckExact(j&j&Chttps://docs.python.org/3/c-api/complex.html#c.PyComplex_CheckExactj tPyComplex_FromCComplex(j&j&Ehttps://docs.python.org/3/c-api/complex.html#c.PyComplex_FromCComplexj tPyComplex_FromDoubles(j&j&Dhttps://docs.python.org/3/c-api/complex.html#c.PyComplex_FromDoublesj tPyComplex_ImagAsDouble(j&j&Ehttps://docs.python.org/3/c-api/complex.html#c.PyComplex_ImagAsDoublej tPyComplex_RealAsDouble(j&j&Ehttps://docs.python.org/3/c-api/complex.html#c.PyComplex_RealAsDoublej tPyConfig_Clear(j&j&Ahttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_Clearj tPyConfig_InitIsolatedConfig(j&j&Nhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_InitIsolatedConfigj tPyConfig_InitPythonConfig(j&j&Lhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_InitPythonConfigj t PyConfig_Read(j&j&@https://docs.python.org/3/c-api/init_config.html#c.PyConfig_Readj tPyConfig_SetArgv(j&j&Chttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetArgvj tPyConfig_SetBytesArgv(j&j&Hhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesArgvj tPyConfig_SetBytesString(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesStringj tPyConfig_SetString(j&j&Ehttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetStringj tPyConfig_SetWideStringList(j&j&Mhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetWideStringListj tPyContextToken_CheckExact(j&j&Lhttps://docs.python.org/3/c-api/contextvars.html#c.PyContextToken_CheckExactj tPyContextVar_CheckExact(j&j&Jhttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_CheckExactj tPyContextVar_Get(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Getj tPyContextVar_New(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Newj tPyContextVar_Reset(j&j&Ehttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Resetj tPyContextVar_Set(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Setj tPyContext_CheckExact(j&j&Ghttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_CheckExactj tPyContext_Copy(j&j&Ahttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_Copyj tPyContext_CopyCurrent(j&j&Hhttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_CopyCurrentj tPyContext_Enter(j&j&Bhttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_Enterj tPyContext_Exit(j&j&Ahttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_Exitj t PyContext_New(j&j&@https://docs.python.org/3/c-api/contextvars.html#c.PyContext_Newj tPyCoro_CheckExact(j&j&=https://docs.python.org/3/c-api/coro.html#c.PyCoro_CheckExactj t PyCoro_New(j&j&6https://docs.python.org/3/c-api/coro.html#c.PyCoro_Newj tPyDateTime_Check(j&j&@https://docs.python.org/3/c-api/datetime.html#c.PyDateTime_Checkj tPyDateTime_CheckExact(j&j&Ehttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_CheckExactj tPyDateTime_DATE_GET_FOLD(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_FOLDj tPyDateTime_DATE_GET_HOUR(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_HOURj tPyDateTime_DATE_GET_MICROSECOND(j&j&Ohttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_MICROSECONDj tPyDateTime_DATE_GET_MINUTE(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_MINUTEj tPyDateTime_DATE_GET_SECOND(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_SECONDj tPyDateTime_DATE_GET_TZINFO(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_TZINFOj tPyDateTime_DELTA_GET_DAYS(j&j&Ihttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_DAYSj t!PyDateTime_DELTA_GET_MICROSECONDS(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_MICROSECONDSj tPyDateTime_DELTA_GET_SECONDS(j&j&Lhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_SECONDSj tPyDateTime_FromDateAndTime(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej t!PyDateTime_FromDateAndTimeAndFold(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj tPyDateTime_FromTimestamp(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromTimestampj tPyDateTime_GET_DAY(j&j&Bhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_DAYj tPyDateTime_GET_MONTH(j&j&Dhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_MONTHj tPyDateTime_GET_YEAR(j&j&Chttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_YEARj tPyDateTime_TIME_GET_FOLD(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_FOLDj tPyDateTime_TIME_GET_HOUR(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_HOURj tPyDateTime_TIME_GET_MICROSECOND(j&j&Ohttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_MICROSECONDj tPyDateTime_TIME_GET_MINUTE(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_MINUTEj tPyDateTime_TIME_GET_SECOND(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_SECONDj tPyDateTime_TIME_GET_TZINFO(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_TZINFOj t PyDate_Check(j&j&https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Formatj t PyErr_FormatV(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_FormatVj tPyErr_GetExcInfo(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetExcInfoj tPyErr_GetHandledException(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetHandledExceptionj tPyErr_GetRaisedException(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetRaisedExceptionj tPyErr_GivenExceptionMatches(j&j&Mhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GivenExceptionMatchesj tPyErr_NewException(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionj tPyErr_NewExceptionWithDoc(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionWithDocj tPyErr_NoMemory(j&j&@https://docs.python.org/3/c-api/exceptions.html#c.PyErr_NoMemoryj tPyErr_NormalizeException(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NormalizeExceptionj tPyErr_Occurred(j&j&@https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Occurredj t PyErr_Print(j&j&=https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Printj t PyErr_PrintEx(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_PrintExj tPyErr_ResourceWarning(j&j&Ghttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_ResourceWarningj t PyErr_Restore(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Restorej tPyErr_SetExcFromWindowsErr(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrj t&PyErr_SetExcFromWindowsErrWithFilename(j&j&Xhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenamej t,PyErr_SetExcFromWindowsErrWithFilenameObject(j&j&^https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectj t-PyErr_SetExcFromWindowsErrWithFilenameObjects(j&j&_https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectsj tPyErr_SetExcInfo(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcInfoj tPyErr_SetFromErrno(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoj tPyErr_SetFromErrnoWithFilename(j&j&Phttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenamej t$PyErr_SetFromErrnoWithFilenameObject(j&j&Vhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectj t%PyErr_SetFromErrnoWithFilenameObjects(j&j&Whttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectsj tPyErr_SetFromWindowsErr(j&j&Ihttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrj t#PyErr_SetFromWindowsErrWithFilename(j&j&Uhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrWithFilenamej tPyErr_SetHandledException(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetHandledExceptionj tPyErr_SetImportError(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorj tPyErr_SetImportErrorSubclass(j&j&Nhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorSubclassj tPyErr_SetInterrupt(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetInterruptj tPyErr_SetInterruptEx(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetInterruptExj t PyErr_SetNone(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetNonej tPyErr_SetObject(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetObjectj tPyErr_SetRaisedException(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetRaisedExceptionj tPyErr_SetString(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetStringj tPyErr_SyntaxLocation(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationj tPyErr_SyntaxLocationEx(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationExj tPyErr_SyntaxLocationObject(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationObjectj t PyErr_WarnEx(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExj tPyErr_WarnExplicit(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj tPyErr_WarnExplicitObject(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj tPyErr_WarnFormat(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnFormatj tPyErr_WriteUnraisable(j&j&Ghttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WriteUnraisablej tPyEval_AcquireLock(j&j&>https://docs.python.org/3/c-api/init.html#c.PyEval_AcquireLockj tPyEval_AcquireThread(j&j&@https://docs.python.org/3/c-api/init.html#c.PyEval_AcquireThreadj tPyEval_EvalCode(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodej tPyEval_EvalCodeEx(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalFrame(j&j&@https://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFramej tPyEval_EvalFrameEx(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFrameExj tPyEval_GetBuiltins(j&j&Dhttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetBuiltinsj tPyEval_GetFrame(j&j&Ahttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFramej tPyEval_GetFuncDesc(j&j&Dhttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFuncDescj tPyEval_GetFuncName(j&j&Dhttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFuncNamej tPyEval_GetGlobals(j&j&Chttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetGlobalsj tPyEval_GetLocals(j&j&Bhttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetLocalsj tPyEval_InitThreads(j&j&>https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreadsj tPyEval_MergeCompilerFlags(j&j&Ihttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_MergeCompilerFlagsj tPyEval_ReleaseLock(j&j&>https://docs.python.org/3/c-api/init.html#c.PyEval_ReleaseLockj tPyEval_ReleaseThread(j&j&@https://docs.python.org/3/c-api/init.html#c.PyEval_ReleaseThreadj tPyEval_RestoreThread(j&j&@https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThreadj tPyEval_SaveThread(j&j&=https://docs.python.org/3/c-api/init.html#c.PyEval_SaveThreadj tPyEval_SetProfile(j&j&=https://docs.python.org/3/c-api/init.html#c.PyEval_SetProfilej tPyEval_SetProfileAllThreads(j&j&Ghttps://docs.python.org/3/c-api/init.html#c.PyEval_SetProfileAllThreadsj tPyEval_SetTrace(j&j&;https://docs.python.org/3/c-api/init.html#c.PyEval_SetTracej tPyEval_SetTraceAllThreads(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyEval_SetTraceAllThreadsj tPyEval_ThreadsInitialized(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyEval_ThreadsInitializedj tPyException_GetArgs(j&j&Ehttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetArgsj tPyException_GetCause(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetCausej tPyException_GetContext(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetContextj tPyException_GetTraceback(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetTracebackj tPyException_SetArgs(j&j&Ehttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetArgsj tPyException_SetCause(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetCausej tPyException_SetContext(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetContextj tPyException_SetTraceback(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetTracebackj t PyFile_FromFd(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_GetLine(j&j&:https://docs.python.org/3/c-api/file.html#c.PyFile_GetLinej tPyFile_SetOpenCodeHook(j&j&Bhttps://docs.python.org/3/c-api/file.html#c.PyFile_SetOpenCodeHookj tPyFile_WriteObject(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteObjectj tPyFile_WriteString(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteStringj tPyFloat_AS_DOUBLE(j&j&>https://docs.python.org/3/c-api/float.html#c.PyFloat_AS_DOUBLEj tPyFloat_AsDouble(j&j&=https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDoublej t PyFloat_Check(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Checkj tPyFloat_CheckExact(j&j&?https://docs.python.org/3/c-api/float.html#c.PyFloat_CheckExactj tPyFloat_FromDouble(j&j&?https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDoublej tPyFloat_FromString(j&j&?https://docs.python.org/3/c-api/float.html#c.PyFloat_FromStringj tPyFloat_GetInfo(j&j&https://docs.python.org/3/c-api/frame.html#c.PyFrame_GetLocalsj tPyFrame_GetVar(j&j&;https://docs.python.org/3/c-api/frame.html#c.PyFrame_GetVarj tPyFrame_GetVarString(j&j&Ahttps://docs.python.org/3/c-api/frame.html#c.PyFrame_GetVarStringj tPyFrozenSet_Check(j&j&https://docs.python.org/3/c-api/function.html#c.PyFunction_Newj tPyFunction_NewWithQualName(j&j&Jhttps://docs.python.org/3/c-api/function.html#c.PyFunction_NewWithQualNamej tPyFunction_SetAnnotations(j&j&Ihttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetAnnotationsj tPyFunction_SetClosure(j&j&Ehttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetClosurej tPyFunction_SetDefaults(j&j&Fhttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetDefaultsj tPyFunction_SetVectorcall(j&j&Hhttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetVectorcallj t PyGC_Collect(j&j&=https://docs.python.org/3/c-api/gcsupport.html#c.PyGC_Collectj t PyGC_Disable(j&j&=https://docs.python.org/3/c-api/gcsupport.html#c.PyGC_Disablej t PyGC_Enable(j&j&https://docs.python.org/3/c-api/init.html#c.PyGILState_Releasej t PyGen_Check(j&j&6https://docs.python.org/3/c-api/gen.html#c.PyGen_Checkj tPyGen_CheckExact(j&j&;https://docs.python.org/3/c-api/gen.html#c.PyGen_CheckExactj t PyGen_New(j&j&4https://docs.python.org/3/c-api/gen.html#c.PyGen_Newj tPyGen_NewWithQualName(j&j&@https://docs.python.org/3/c-api/gen.html#c.PyGen_NewWithQualNamej tPyHash_GetFuncDef(j&j&=https://docs.python.org/3/c-api/hash.html#c.PyHash_GetFuncDefj tPyImport_AddModule(j&j&@https://docs.python.org/3/c-api/import.html#c.PyImport_AddModulej tPyImport_AddModuleObject(j&j&Fhttps://docs.python.org/3/c-api/import.html#c.PyImport_AddModuleObjectj tPyImport_AppendInittab(j&j&Dhttps://docs.python.org/3/c-api/import.html#c.PyImport_AppendInittabj tPyImport_ExecCodeModule(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModulej tPyImport_ExecCodeModuleEx(j&j&Ghttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleExj tPyImport_ExecCodeModuleObject(j&j&Khttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleObjectj t$PyImport_ExecCodeModuleWithPathnames(j&j&Rhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleWithPathnamesj tPyImport_ExtendInittab(j&j&Dhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExtendInittabj tPyImport_GetImporter(j&j&Bhttps://docs.python.org/3/c-api/import.html#c.PyImport_GetImporterj tPyImport_GetMagicNumber(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_GetMagicNumberj tPyImport_GetMagicTag(j&j&Bhttps://docs.python.org/3/c-api/import.html#c.PyImport_GetMagicTagj tPyImport_GetModule(j&j&@https://docs.python.org/3/c-api/import.html#c.PyImport_GetModulej tPyImport_GetModuleDict(j&j&Dhttps://docs.python.org/3/c-api/import.html#c.PyImport_GetModuleDictj tPyImport_Import(j&j&=https://docs.python.org/3/c-api/import.html#c.PyImport_Importj tPyImport_ImportFrozenModule(j&j&Ihttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportFrozenModulej t!PyImport_ImportFrozenModuleObject(j&j&Ohttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportFrozenModuleObjectj tPyImport_ImportModule(j&j&Chttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModulej tPyImport_ImportModuleEx(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleExj tPyImport_ImportModuleLevel(j&j&Hhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelj t PyImport_ImportModuleLevelObject(j&j&Nhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectj tPyImport_ImportModuleNoBlock(j&j&Jhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleNoBlockj tPyImport_ReloadModule(j&j&Chttps://docs.python.org/3/c-api/import.html#c.PyImport_ReloadModulej t PyIndex_Check(j&j&;https://docs.python.org/3/c-api/number.html#c.PyIndex_Checkj tPyInit_modulename(j&j&Ehttps://docs.python.org/3/extending/building.html#c.PyInit_modulenamej tPyInstanceMethod_Check(j&j&Dhttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_Checkj tPyInstanceMethod_Function(j&j&Ghttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_Functionj tPyInstanceMethod_GET_FUNCTION(j&j&Khttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_GET_FUNCTIONj tPyInstanceMethod_New(j&j&Bhttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_Newj tPyInterpreterState_Clear(j&j&Dhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Clearj tPyInterpreterState_Delete(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Deletej tPyInterpreterState_Get(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Getj tPyInterpreterState_GetDict(j&j&Fhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_GetDictj tPyInterpreterState_GetID(j&j&Dhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_GetIDj tPyInterpreterState_Head(j&j&Chttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Headj tPyInterpreterState_Main(j&j&Chttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Mainj tPyInterpreterState_New(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Newj tPyInterpreterState_Next(j&j&Chttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Nextj tPyInterpreterState_ThreadHead(j&j&Ihttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_ThreadHeadj t PyIter_Check(j&j&8https://docs.python.org/3/c-api/iter.html#c.PyIter_Checkj t PyIter_Next(j&j&7https://docs.python.org/3/c-api/iter.html#c.PyIter_Nextj t PyIter_Send(j&j&7https://docs.python.org/3/c-api/iter.html#c.PyIter_Sendj t PyList_Append(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Appendj tPyList_AsTuple(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_AsTuplej t PyList_Check(j&j&8https://docs.python.org/3/c-api/list.html#c.PyList_Checkj tPyList_CheckExact(j&j&=https://docs.python.org/3/c-api/list.html#c.PyList_CheckExactj tPyList_GET_ITEM(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GET_ITEMj tPyList_GET_SIZE(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GET_SIZEj tPyList_GetItem(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_GetItemj tPyList_GetSlice(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GetSlicej t PyList_Insert(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Insertj t PyList_New(j&j&6https://docs.python.org/3/c-api/list.html#c.PyList_Newj tPyList_Reverse(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_Reversej tPyList_SET_ITEM(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SET_ITEMj tPyList_SetItem(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_SetItemj tPyList_SetSlice(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SetSlicej t PyList_Size(j&j&7https://docs.python.org/3/c-api/list.html#c.PyList_Sizej t PyList_Sort(j&j&7https://docs.python.org/3/c-api/list.html#c.PyList_Sortj tPyLong_AsDouble(j&j&;https://docs.python.org/3/c-api/long.html#c.PyLong_AsDoublej t PyLong_AsLong(j&j&9https://docs.python.org/3/c-api/long.html#c.PyLong_AsLongj tPyLong_AsLongAndOverflow(j&j&Dhttps://docs.python.org/3/c-api/long.html#c.PyLong_AsLongAndOverflowj tPyLong_AsLongLong(j&j&=https://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongj tPyLong_AsLongLongAndOverflow(j&j&Hhttps://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongAndOverflowj tPyLong_AsSize_t(j&j&;https://docs.python.org/3/c-api/long.html#c.PyLong_AsSize_tj tPyLong_AsSsize_t(j&j&https://docs.python.org/3/c-api/long.html#c.PyLong_FromSsize_tj tPyLong_FromString(j&j&=https://docs.python.org/3/c-api/long.html#c.PyLong_FromStringj tPyLong_FromUnicodeObject(j&j&Dhttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnicodeObject/j tPyLong_FromUnsignedLong(j&j&Chttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnsignedLongj tPyLong_FromUnsignedLongLong(j&j&Ghttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnsignedLongLongj tPyLong_FromVoidPtr(j&j&>https://docs.python.org/3/c-api/long.html#c.PyLong_FromVoidPtrj tPyLong_GetInfo(j&j&:https://docs.python.org/3/c-api/long.html#c.PyLong_GetInfoj tPyMapping_Check(j&j&>https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Checkj tPyMapping_DelItem(j&j&@https://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemj tPyMapping_DelItemString(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemStringj tPyMapping_GetItemString(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_GetItemStringj tPyMapping_HasKey(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyj tPyMapping_HasKeyString(j&j&Ehttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyStringj tPyMapping_Items(j&j&>https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Itemsj tPyMapping_Keys(j&j&=https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Keysj tPyMapping_Length(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Lengthj tPyMapping_SetItemString(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_SetItemStringj tPyMapping_Size(j&j&=https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Sizej tPyMapping_Values(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Valuesj t PyMarshal_ReadLastObjectFromFile(j&j&Ohttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadLastObjectFromFilej tPyMarshal_ReadLongFromFile(j&j&Ihttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadLongFromFilej tPyMarshal_ReadObjectFromFile(j&j&Khttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromFilej tPyMarshal_ReadObjectFromString(j&j&Mhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromStringj tPyMarshal_ReadShortFromFile(j&j&Jhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadShortFromFilej tPyMarshal_WriteLongToFile(j&j&Hhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteLongToFilej tPyMarshal_WriteObjectToFile(j&j&Jhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToFilej tPyMarshal_WriteObjectToString(j&j&Lhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToStringj t PyMem_Calloc(j&j&:https://docs.python.org/3/c-api/memory.html#c.PyMem_Callocj t PyMem_Del(j&j&7https://docs.python.org/3/c-api/memory.html#c.PyMem_Delj t PyMem_Free(j&j&8https://docs.python.org/3/c-api/memory.html#c.PyMem_Freej tPyMem_GetAllocator(j&j&@https://docs.python.org/3/c-api/memory.html#c.PyMem_GetAllocatorj t PyMem_Malloc(j&j&:https://docs.python.org/3/c-api/memory.html#c.PyMem_Mallocj tPyMem_RawCalloc(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyMem_RawCallocj t PyMem_RawFree(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyMem_RawFreej tPyMem_RawMalloc(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyMem_RawMallocj tPyMem_RawRealloc(j&j&>https://docs.python.org/3/c-api/memory.html#c.PyMem_RawReallocj t PyMem_Realloc(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyMem_Reallocj tPyMem_SetAllocator(j&j&@https://docs.python.org/3/c-api/memory.html#c.PyMem_SetAllocatorj tPyMem_SetupDebugHooks(j&j&Chttps://docs.python.org/3/c-api/memory.html#c.PyMem_SetupDebugHooksj tPyMember_GetOne(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_GetOnej tPyMember_SetOne(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_SetOnej tPyMemoryView_Check(j&j&Dhttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_Checkj tPyMemoryView_FromBuffer(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromBufferj tPyMemoryView_FromMemory(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromMemoryj tPyMemoryView_FromObject(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromObjectj tPyMemoryView_GET_BASE(j&j&Ghttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GET_BASEj tPyMemoryView_GET_BUFFER(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GET_BUFFERj tPyMemoryView_GetContiguous(j&j&Lhttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GetContiguousj tPyMethod_Check(j&j&https://docs.python.org/3/c-api/module.html#c.PyModuleDef_Initj tPyModule_AddFunctions(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddFunctionsj tPyModule_AddIntConstant(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_AddIntConstantj tPyModule_AddObject(j&j&@https://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectj tPyModule_AddObjectRef(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectRefj tPyModule_AddStringConstant(j&j&Hhttps://docs.python.org/3/c-api/module.html#c.PyModule_AddStringConstantj tPyModule_AddType(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_AddTypej tPyModule_Check(j&j&https://docs.python.org/3/c-api/module.html#c.PyModule_Create2j tPyModule_ExecDef(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_ExecDefj tPyModule_FromDefAndSpec(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpecj tPyModule_FromDefAndSpec2(j&j&Fhttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpec2j tPyModule_GetDef(j&j&=https://docs.python.org/3/c-api/module.html#c.PyModule_GetDefj tPyModule_GetDict(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_GetDictj tPyModule_GetFilename(j&j&Bhttps://docs.python.org/3/c-api/module.html#c.PyModule_GetFilenamej tPyModule_GetFilenameObject(j&j&Hhttps://docs.python.org/3/c-api/module.html#c.PyModule_GetFilenameObjectj tPyModule_GetName(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_GetNamej tPyModule_GetNameObject(j&j&Dhttps://docs.python.org/3/c-api/module.html#c.PyModule_GetNameObjectj tPyModule_GetState(j&j&?https://docs.python.org/3/c-api/module.html#c.PyModule_GetStatej t PyModule_New(j&j&:https://docs.python.org/3/c-api/module.html#c.PyModule_Newj tPyModule_NewObject(j&j&@https://docs.python.org/3/c-api/module.html#c.PyModule_NewObjectj tPyModule_SetDocString(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_SetDocStringj tPyNumber_Absolute(j&j&?https://docs.python.org/3/c-api/number.html#c.PyNumber_Absolutej t PyNumber_Add(j&j&:https://docs.python.org/3/c-api/number.html#c.PyNumber_Addj t PyNumber_And(j&j&:https://docs.python.org/3/c-api/number.html#c.PyNumber_Andj tPyNumber_AsSsize_t(j&j&@https://docs.python.org/3/c-api/number.html#c.PyNumber_AsSsize_tj tPyNumber_Check(j&j&https://docs.python.org/3/c-api/conversion.html#c.PyOS_stricmpj tPyOS_string_to_double(j&j&Ghttps://docs.python.org/3/c-api/conversion.html#c.PyOS_string_to_doublej t PyOS_strnicmp(j&j&?https://docs.python.org/3/c-api/conversion.html#c.PyOS_strnicmpj t PyOS_strtol(j&j&=https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtolj t PyOS_strtoul(j&j&>https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtoulj tPyOS_vsnprintf(j&j&@https://docs.python.org/3/c-api/conversion.html#c.PyOS_vsnprintfj tPyObject_ASCII(j&j&https://docs.python.org/3/c-api/allocation.html#c.PyObject_Delj tPyObject_DelAttr(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrj tPyObject_DelAttrString(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrStringj tPyObject_DelItem(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_DelItemj t PyObject_Dir(j&j&:https://docs.python.org/3/c-api/object.html#c.PyObject_Dirj tPyObject_Format(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_Formatj t PyObject_Free(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyObject_Freej tPyObject_GC_Del(j&j&@https://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_Delj tPyObject_GC_IsFinalized(j&j&Hhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_IsFinalizedj tPyObject_GC_IsTracked(j&j&Fhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_IsTrackedj tPyObject_GC_Track(j&j&Bhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_Trackj tPyObject_GC_UnTrack(j&j&Dhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_UnTrackj tPyObject_GenericGetAttr(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetAttrj tPyObject_GenericGetDict(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetDictj tPyObject_GenericSetAttr(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetAttrj tPyObject_GenericSetDict(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetDictj tPyObject_GetAIter(j&j&?https://docs.python.org/3/c-api/object.html#c.PyObject_GetAIterj tPyObject_GetArenaAllocator(j&j&Hhttps://docs.python.org/3/c-api/memory.html#c.PyObject_GetArenaAllocatorj tPyObject_GetAttr(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrj tPyObject_GetAttrString(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrStringj tPyObject_GetBuffer(j&j&@https://docs.python.org/3/c-api/buffer.html#c.PyObject_GetBufferj tPyObject_GetItem(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetItemj tPyObject_GetItemData(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetItemDataj tPyObject_GetIter(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetIterj tPyObject_GetTypeData(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetTypeDataj tPyObject_HasAttr(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrj tPyObject_HasAttrString(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrStringj t PyObject_Hash(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Hashj tPyObject_HashNotImplemented(j&j&Ihttps://docs.python.org/3/c-api/object.html#c.PyObject_HashNotImplementedj tPyObject_IS_GC(j&j&?https://docs.python.org/3/c-api/gcsupport.html#c.PyObject_IS_GCj t PyObject_Init(j&j&?https://docs.python.org/3/c-api/allocation.html#c.PyObject_Initj tPyObject_InitVar(j&j&Bhttps://docs.python.org/3/c-api/allocation.html#c.PyObject_InitVarj tPyObject_IsInstance(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_IsInstancej tPyObject_IsSubclass(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_IsSubclassj tPyObject_IsTrue(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_IsTruej tPyObject_Length(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_Lengthj tPyObject_LengthHint(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_LengthHintj tPyObject_Malloc(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyObject_Mallocj t PyObject_Not(j&j&:https://docs.python.org/3/c-api/object.html#c.PyObject_Notj tPyObject_Print(j&j&https://docs.python.org/3/c-api/memory.html#c.PyObject_Reallocj t PyObject_Repr(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Reprj tPyObject_RichCompare(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichComparej tPyObject_RichCompareBool(j&j&Fhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichCompareBoolj tPyObject_SetArenaAllocator(j&j&Hhttps://docs.python.org/3/c-api/memory.html#c.PyObject_SetArenaAllocatorj tPyObject_SetAttr(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrj tPyObject_SetAttrString(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrStringj tPyObject_SetItem(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetItemj t PyObject_Size(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Sizej t PyObject_Str(j&j&:https://docs.python.org/3/c-api/object.html#c.PyObject_Strj t PyObject_Type(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Typej tPyObject_TypeCheck(j&j&@https://docs.python.org/3/c-api/object.html#c.PyObject_TypeCheckj tPyObject_Vectorcall(j&j&?https://docs.python.org/3/c-api/call.html#c.PyObject_Vectorcallj tPyObject_VectorcallDict(j&j&Chttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallDictj tPyObject_VectorcallMethod(j&j&Ehttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallMethodj tPyPreConfig_InitIsolatedConfig(j&j&Qhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig_InitIsolatedConfigj tPyPreConfig_InitPythonConfig(j&j&Ohttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig_InitPythonConfigj t PyRun_AnyFile(j&j&=https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFilej tPyRun_AnyFileEx(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExj tPyRun_AnyFileExFlags(j&j&Dhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExFlagsj tPyRun_AnyFileFlags(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileFlagsj t PyRun_File(j&j&:https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_Filej t PyRun_FileEx(j&j&https://docs.python.org/3/c-api/init_config.html#c.PyStatus_Okj tPyStructSequence_GET_ITEM(j&j&Fhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_GET_ITEMj tPyStructSequence_GetItem(j&j&Ehttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_GetItemj tPyStructSequence_InitType(j&j&Fhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_InitTypej tPyStructSequence_InitType2(j&j&Ghttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_InitType2j tPyStructSequence_New(j&j&Ahttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Newj tPyStructSequence_NewType(j&j&Ehttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_NewTypej tPyStructSequence_SET_ITEM(j&j&Fhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_SET_ITEMj tPyStructSequence_SetItem(j&j&Ehttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_SetItemj tPySys_AddAuditHook(j&j&=https://docs.python.org/3/c-api/sys.html#c.PySys_AddAuditHookj tPySys_AddWarnOption(j&j&>https://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOptionj tPySys_AddWarnOptionUnicode(j&j&Ehttps://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOptionUnicodej tPySys_AddXOption(j&j&;https://docs.python.org/3/c-api/sys.html#c.PySys_AddXOptionj t PySys_Audit(j&j&6https://docs.python.org/3/c-api/sys.html#c.PySys_Auditj tPySys_FormatStderr(j&j&=https://docs.python.org/3/c-api/sys.html#c.PySys_FormatStderrj tPySys_FormatStdout(j&j&=https://docs.python.org/3/c-api/sys.html#c.PySys_FormatStdoutj tPySys_GetObject(j&j&:https://docs.python.org/3/c-api/sys.html#c.PySys_GetObjectj tPySys_GetXOptions(j&j&https://docs.python.org/3/c-api/datetime.html#c.PyTZInfo_Checkj tPyTZInfo_CheckExact(j&j&Chttps://docs.python.org/3/c-api/datetime.html#c.PyTZInfo_CheckExactj tPyThreadState_Clear(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThreadState_Clearj tPyThreadState_Delete(j&j&@https://docs.python.org/3/c-api/init.html#c.PyThreadState_Deletej tPyThreadState_DeleteCurrent(j&j&Ghttps://docs.python.org/3/c-api/init.html#c.PyThreadState_DeleteCurrentj tPyThreadState_EnterTracing(j&j&Fhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_EnterTracingj tPyThreadState_Get(j&j&=https://docs.python.org/3/c-api/init.html#c.PyThreadState_Getj tPyThreadState_GetDict(j&j&Ahttps://docs.python.org/3/c-api/init.html#c.PyThreadState_GetDictj tPyThreadState_GetFrame(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_GetFramej tPyThreadState_GetID(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThreadState_GetIDj tPyThreadState_GetInterpreter(j&j&Hhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_GetInterpreterj tPyThreadState_LeaveTracing(j&j&Fhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_LeaveTracingj tPyThreadState_New(j&j&=https://docs.python.org/3/c-api/init.html#c.PyThreadState_Newj tPyThreadState_Next(j&j&>https://docs.python.org/3/c-api/init.html#c.PyThreadState_Nextj tPyThreadState_SetAsyncExc(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyThreadState_SetAsyncExcj tPyThreadState_Swap(j&j&>https://docs.python.org/3/c-api/init.html#c.PyThreadState_Swapj tPyThread_ReInitTLS(j&j&>https://docs.python.org/3/c-api/init.html#c.PyThread_ReInitTLSj tPyThread_create_key(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_create_keyj tPyThread_delete_key(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_delete_keyj tPyThread_delete_key_value(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyThread_delete_key_valuej tPyThread_get_key_value(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThread_get_key_valuej tPyThread_set_key_value(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThread_set_key_valuej tPyThread_tss_alloc(j&j&>https://docs.python.org/3/c-api/init.html#c.PyThread_tss_allocj tPyThread_tss_create(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_tss_createj tPyThread_tss_delete(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_tss_deletej tPyThread_tss_free(j&j&=https://docs.python.org/3/c-api/init.html#c.PyThread_tss_freej tPyThread_tss_get(j&j&https://docs.python.org/3/c-api/type.html#c.PyType_GetQualNamej tPyType_GetSlot(j&j&:https://docs.python.org/3/c-api/type.html#c.PyType_GetSlotj tPyType_GetTypeDataSize(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyType_GetTypeDataSizej tPyType_HasFeature(j&j&=https://docs.python.org/3/c-api/type.html#c.PyType_HasFeaturej t PyType_IS_GC(j&j&8https://docs.python.org/3/c-api/type.html#c.PyType_IS_GCj tPyType_IsSubtype(j&j&https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Checkj tPyUnicode_CheckExact(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CheckExactj tPyUnicode_Compare(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Comparej t PyUnicode_CompareWithASCIIString(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CompareWithASCIIStringj tPyUnicode_Concat(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Concatj tPyUnicode_Contains(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Containsj tPyUnicode_CopyCharacters(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersj tPyUnicode_Count(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Countj tPyUnicode_DATA(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DATAj tPyUnicode_Decode(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Decodej tPyUnicode_DecodeASCII(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeASCIIj tPyUnicode_DecodeCharmap(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeCharmapj tPyUnicode_DecodeFSDefault(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultj t PyUnicode_DecodeFSDefaultAndSize(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultAndSizej tPyUnicode_DecodeLatin1(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLatin1j tPyUnicode_DecodeLocale(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocalej tPyUnicode_DecodeLocaleAndSize(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocaleAndSizej tPyUnicode_DecodeMBCS(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSj tPyUnicode_DecodeMBCSStateful(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSStatefulj t PyUnicode_DecodeRawUnicodeEscape(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeRawUnicodeEscapej tPyUnicode_DecodeUTF16(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16j tPyUnicode_DecodeUTF16Stateful(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16Statefulj tPyUnicode_DecodeUTF32(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32j tPyUnicode_DecodeUTF32Stateful(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32Statefulj tPyUnicode_DecodeUTF7(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7j tPyUnicode_DecodeUTF7Stateful(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7Statefulj tPyUnicode_DecodeUTF8(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8j tPyUnicode_DecodeUTF8Stateful(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8Statefulj tPyUnicode_DecodeUnicodeEscape(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUnicodeEscapej tPyUnicode_EncodeCodePage(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeCodePagej tPyUnicode_EncodeFSDefault(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeFSDefaultj tPyUnicode_EncodeLocale(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeLocalej tPyUnicode_FSConverter(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSConverterj tPyUnicode_FSDecoder(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSDecoderj tPyUnicode_Fill(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Fillj tPyUnicode_Find(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Findj tPyUnicode_FindChar(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharj tPyUnicode_Format(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Formatj tPyUnicode_FromEncodedObject(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromEncodedObjectj tPyUnicode_FromFormat(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatj tPyUnicode_FromFormatV(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatVj tPyUnicode_FromKindAndData(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromKindAndDataj tPyUnicode_FromObject(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromObjectj tPyUnicode_FromString(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringj tPyUnicode_FromStringAndSize(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringAndSizej tPyUnicode_FromWideChar(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromWideCharj tPyUnicode_GET_LENGTH(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GET_LENGTHj tPyUnicode_GetLength(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GetLengthj tPyUnicode_InternFromString(j&j&Ihttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_InternFromStringj tPyUnicode_InternInPlace(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_InternInPlacej tPyUnicode_IsIdentifier(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_IsIdentifierj tPyUnicode_Join(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Joinj tPyUnicode_KIND(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_KINDj tPyUnicode_MAX_CHAR_VALUE(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_MAX_CHAR_VALUEj t PyUnicode_New(j&j&https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READYj tPyUnicode_READ_CHAR(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READ_CHARj tPyUnicode_ReadChar(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ReadCharj tPyUnicode_Replace(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Replacej tPyUnicode_RichCompare(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_RichComparej tPyUnicode_Split(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitj tPyUnicode_Splitlines(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitlinesj tPyUnicode_Substring(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Substringj tPyUnicode_Tailmatch(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Tailmatchj tPyUnicode_Translate(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Translatej tPyUnicode_WRITE(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WRITEj tPyUnicode_WriteChar(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WriteCharj tPyUnstable_Code_GetExtra(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_GetExtraj tPyUnstable_Code_New(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj t"PyUnstable_Code_NewWithPosOnlyArgs(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj tPyUnstable_Code_SetExtra(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_SetExtraj t%PyUnstable_Eval_RequestCodeExtraIndex(j&j&Qhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Eval_RequestCodeExtraIndexj tPyUnstable_Exc_PrepReraiseStar(j&j&Phttps://docs.python.org/3/c-api/exceptions.html#c.PyUnstable_Exc_PrepReraiseStarj tPyUnstable_GC_VisitObjects(j&j&Khttps://docs.python.org/3/c-api/gcsupport.html#c.PyUnstable_GC_VisitObjectsj t#PyUnstable_InterpreterFrame_GetCode(j&j&Phttps://docs.python.org/3/c-api/frame.html#c.PyUnstable_InterpreterFrame_GetCodej t$PyUnstable_InterpreterFrame_GetLasti(j&j&Qhttps://docs.python.org/3/c-api/frame.html#c.PyUnstable_InterpreterFrame_GetLastij t#PyUnstable_InterpreterFrame_GetLine(j&j&Phttps://docs.python.org/3/c-api/frame.html#c.PyUnstable_InterpreterFrame_GetLinej tPyUnstable_Long_CompactValue(j&j&Hhttps://docs.python.org/3/c-api/long.html#c.PyUnstable_Long_CompactValuej tPyUnstable_Long_IsCompact(j&j&Ehttps://docs.python.org/3/c-api/long.html#c.PyUnstable_Long_IsCompactj t%PyUnstable_Object_GC_NewWithExtraData(j&j&Vhttps://docs.python.org/3/c-api/gcsupport.html#c.PyUnstable_Object_GC_NewWithExtraDataj tPyUnstable_PerfMapState_Fini(j&j&Lhttps://docs.python.org/3/c-api/perfmaps.html#c.PyUnstable_PerfMapState_Finij tPyUnstable_PerfMapState_Init(j&j&Lhttps://docs.python.org/3/c-api/perfmaps.html#c.PyUnstable_PerfMapState_Initj t PyUnstable_Type_AssignVersionTag(j&j&Lhttps://docs.python.org/3/c-api/type.html#c.PyUnstable_Type_AssignVersionTagj tPyUnstable_WritePerfMapEntry(j&j&Lhttps://docs.python.org/3/c-api/perfmaps.html#c.PyUnstable_WritePerfMapEntryj tPyVectorcall_Call(j&j&=https://docs.python.org/3/c-api/call.html#c.PyVectorcall_Callj tPyVectorcall_Function(j&j&Ahttps://docs.python.org/3/c-api/call.html#c.PyVectorcall_Functionj tPyVectorcall_NARGS(j&j&>https://docs.python.org/3/c-api/call.html#c.PyVectorcall_NARGSj tPyWeakref_Check(j&j&>https://docs.python.org/3/c-api/weakref.html#c.PyWeakref_Checkj tPyWeakref_CheckProxy(j&j&Chttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckProxyj tPyWeakref_CheckRef(j&j&Ahttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckRefj tPyWeakref_GET_OBJECT(j&j&Chttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_GET_OBJECTj tPyWeakref_GetObject(j&j&Bhttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_GetObjectj tPyWeakref_NewProxy(j&j&Ahttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewProxyj tPyWeakref_NewRef(j&j&?https://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewRefj tPyWideStringList_Append(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Appendj tPyWideStringList_Insert(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Insertj t PyWrapper_New(j&j&?https://docs.python.org/3/c-api/descriptor.html#c.PyWrapper_Newj tPy_AddPendingCall(j&j&=https://docs.python.org/3/c-api/init.html#c.Py_AddPendingCallj t Py_AtExit(j&j&4https://docs.python.org/3/c-api/sys.html#c.Py_AtExitj t Py_BuildValue(j&j&8https://docs.python.org/3/c-api/arg.html#c.Py_BuildValuej t Py_BytesMain(j&j&https://docs.python.org/3/c-api/exceptions.html#c.Py_ReprEnterj t Py_ReprLeave(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.Py_ReprLeavej t Py_RunMain(j&j&=https://docs.python.org/3/c-api/init_config.html#c.Py_RunMainj t Py_SET_REFCNT(j&j&@https://docs.python.org/3/c-api/refcounting.html#c.Py_SET_REFCNTj t Py_SET_SIZE(j&j&=https://docs.python.org/3/c-api/structures.html#c.Py_SET_SIZEj t Py_SET_TYPE(j&j&=https://docs.python.org/3/c-api/structures.html#c.Py_SET_TYPEj tPy_SIZE(j&j&9https://docs.python.org/3/c-api/structures.html#c.Py_SIZEj t Py_SetPath(j&j&6https://docs.python.org/3/c-api/init.html#c.Py_SetPathj tPy_SetProgramName(j&j&=https://docs.python.org/3/c-api/init.html#c.Py_SetProgramNamej tPy_SetPythonHome(j&j&https://docs.python.org/3/c-api/set.html#c.PyAnySet_CheckExactj tPyArg_Parse.args(j&j&6https://docs.python.org/3/c-api/arg.html#c.PyArg_Parsej tPyArg_Parse.format(j&j&6https://docs.python.org/3/c-api/arg.html#c.PyArg_Parsej tPyArg_ParseTuple.args(j&j&;https://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTuplej tPyArg_ParseTuple.format(j&j&;https://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTuplej t PyArg_ParseTupleAndKeywords.args(j&j&Fhttps://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywordsj t"PyArg_ParseTupleAndKeywords.format(j&j&Fhttps://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywordsj t$PyArg_ParseTupleAndKeywords.keywords(j&j&Fhttps://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywordsj tPyArg_ParseTupleAndKeywords.kw(j&j&Fhttps://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywordsj tPyArg_UnpackTuple.args(j&j&https://docs.python.org/3/c-api/buffer.html#c.PyBuffer_Releasej tPyBuffer_SizeFromFormat.format(j&j&Ehttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_SizeFromFormatj tPyBuffer_ToContiguous.buf(j&j&Chttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_ToContiguousj tPyBuffer_ToContiguous.len(j&j&Chttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_ToContiguousj tPyBuffer_ToContiguous.order(j&j&Chttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_ToContiguousj tPyBuffer_ToContiguous.src(j&j&Chttps://docs.python.org/3/c-api/buffer.html#c.PyBuffer_ToContiguousj tPyByteArray_AS_STRING.bytearray(j&j&Fhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AS_STRINGj tPyByteArray_AsString.bytearray(j&j&Ehttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AsStringj tPyByteArray_Check.o(j&j&Bhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Checkj tPyByteArray_CheckExact.o(j&j&Ghttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_CheckExactj tPyByteArray_Concat.a(j&j&Chttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Concatj tPyByteArray_Concat.b(j&j&Chttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Concatj tPyByteArray_FromObject.o(j&j&Ghttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromObjectj t!PyByteArray_FromStringAndSize.len(j&j&Nhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromStringAndSizej t$PyByteArray_FromStringAndSize.string(j&j&Nhttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromStringAndSizej tPyByteArray_GET_SIZE.bytearray(j&j&Ehttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_GET_SIZEj tPyByteArray_Resize.bytearray(j&j&Chttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Resizej tPyByteArray_Resize.len(j&j&Chttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Resizej tPyByteArray_Size.bytearray(j&j&Ahttps://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Sizej tPyBytes_AS_STRING.string(j&j&>https://docs.python.org/3/c-api/bytes.html#c.PyBytes_AS_STRINGj tPyBytes_AsString.o(j&j&=https://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringj tPyBytes_AsStringAndSize.buffer(j&j&Dhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringAndSizej tPyBytes_AsStringAndSize.length(j&j&Dhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringAndSizej tPyBytes_AsStringAndSize.obj(j&j&Dhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringAndSizej tPyBytes_Check.o(j&j&:https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Checkj tPyBytes_CheckExact.o(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_CheckExactj tPyBytes_Concat.bytes(j&j&;https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Concatj tPyBytes_Concat.newpart(j&j&;https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Concatj tPyBytes_ConcatAndDel.bytes(j&j&Ahttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatAndDelj tPyBytes_ConcatAndDel.newpart(j&j&Ahttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatAndDelj tPyBytes_FromFormat.format(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatj tPyBytes_FromFormatV.format(j&j&@https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatVj tPyBytes_FromFormatV.vargs(j&j&@https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatVj tPyBytes_FromObject.o(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromObjectj tPyBytes_FromString.v(j&j&?https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringj tPyBytes_FromStringAndSize.len(j&j&Fhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringAndSizej tPyBytes_FromStringAndSize.v(j&j&Fhttps://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringAndSizej tPyBytes_GET_SIZE.o(j&j&=https://docs.python.org/3/c-api/bytes.html#c.PyBytes_GET_SIZEj tPyBytes_Size.o(j&j&9https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Sizej tPyCFunction_New.ml(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_Newj tPyCFunction_New.self(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_Newj tPyCFunction_NewEx.ml(j&j&Chttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_NewExj tPyCFunction_NewEx.module(j&j&Chttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_NewExj tPyCFunction_NewEx.self(j&j&Chttps://docs.python.org/3/c-api/structures.html#c.PyCFunction_NewExj tPyCMethod_New.cls(j&j&?https://docs.python.org/3/c-api/structures.html#c.PyCMethod_Newj tPyCMethod_New.ml(j&j&?https://docs.python.org/3/c-api/structures.html#c.PyCMethod_Newj tPyCMethod_New.module(j&j&?https://docs.python.org/3/c-api/structures.html#c.PyCMethod_Newj tPyCMethod_New.self(j&j&?https://docs.python.org/3/c-api/structures.html#c.PyCMethod_Newj tPyCallIter_Check.op(j&j&@https://docs.python.org/3/c-api/iterator.html#c.PyCallIter_Checkj tPyCallIter_New.callable(j&j&>https://docs.python.org/3/c-api/iterator.html#c.PyCallIter_Newj tPyCallIter_New.sentinel(j&j&>https://docs.python.org/3/c-api/iterator.html#c.PyCallIter_Newj tPyCallable_Check.o(j&j&https://docs.python.org/3/c-api/code.html#c.PyCode_GetCellvarsj tPyCode_GetCode.co(j&j&:https://docs.python.org/3/c-api/code.html#c.PyCode_GetCodej tPyCode_GetFirstFree.co(j&j&?https://docs.python.org/3/c-api/code.html#c.PyCode_GetFirstFreej tPyCode_GetFreevars.co(j&j&>https://docs.python.org/3/c-api/code.html#c.PyCode_GetFreevarsj tPyCode_GetNumFree.co(j&j&=https://docs.python.org/3/c-api/code.html#c.PyCode_GetNumFreej tPyCode_GetVarnames.co(j&j&>https://docs.python.org/3/c-api/code.html#c.PyCode_GetVarnamesj tPyCode_NewEmpty.filename(j&j&;https://docs.python.org/3/c-api/code.html#c.PyCode_NewEmptyj tPyCode_NewEmpty.firstlineno(j&j&;https://docs.python.org/3/c-api/code.html#c.PyCode_NewEmptyj tPyCode_NewEmpty.funcname(j&j&;https://docs.python.org/3/c-api/code.html#c.PyCode_NewEmptyj t"PyCodec_BackslashReplaceErrors.exc(j&j&Khttps://docs.python.org/3/c-api/codec.html#c.PyCodec_BackslashReplaceErrorsj tPyCodec_Decode.encoding(j&j&;https://docs.python.org/3/c-api/codec.html#c.PyCodec_Decodej tPyCodec_Decode.errors(j&j&;https://docs.python.org/3/c-api/codec.html#c.PyCodec_Decodej tPyCodec_Decode.object(j&j&;https://docs.python.org/3/c-api/codec.html#c.PyCodec_Decodej tPyCodec_Decoder.encoding(j&j&https://docs.python.org/3/c-api/complex.html#c.PyComplex_Checkj tPyComplex_CheckExact.p(j&j&Chttps://docs.python.org/3/c-api/complex.html#c.PyComplex_CheckExactj tPyComplex_FromCComplex.v(j&j&Ehttps://docs.python.org/3/c-api/complex.html#c.PyComplex_FromCComplexj tPyComplex_FromDoubles.imag(j&j&Dhttps://docs.python.org/3/c-api/complex.html#c.PyComplex_FromDoublesj tPyComplex_FromDoubles.real(j&j&Dhttps://docs.python.org/3/c-api/complex.html#c.PyComplex_FromDoublesj tPyComplex_ImagAsDouble.op(j&j&Ehttps://docs.python.org/3/c-api/complex.html#c.PyComplex_ImagAsDoublej tPyComplex_RealAsDouble.op(j&j&Ehttps://docs.python.org/3/c-api/complex.html#c.PyComplex_RealAsDoublej tPyConfig_Clear.config(j&j&Ahttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_Clearj t"PyConfig_InitIsolatedConfig.config(j&j&Nhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_InitIsolatedConfigj t PyConfig_InitPythonConfig.config(j&j&Lhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_InitPythonConfigj tPyConfig_Read.config(j&j&@https://docs.python.org/3/c-api/init_config.html#c.PyConfig_Readj tPyConfig_SetArgv.argc(j&j&Chttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetArgvj tPyConfig_SetArgv.argv(j&j&Chttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetArgvj tPyConfig_SetArgv.config(j&j&Chttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetArgvj tPyConfig_SetBytesArgv.argc(j&j&Hhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesArgvj tPyConfig_SetBytesArgv.argv(j&j&Hhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesArgvj tPyConfig_SetBytesArgv.config(j&j&Hhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesArgvj tPyConfig_SetBytesString.config(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesStringj t"PyConfig_SetBytesString.config_str(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesStringj tPyConfig_SetBytesString.str(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetBytesStringj tPyConfig_SetString.config(j&j&Ehttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetStringj tPyConfig_SetString.config_str(j&j&Ehttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetStringj tPyConfig_SetString.str(j&j&Ehttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetStringj t!PyConfig_SetWideStringList.config(j&j&Mhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetWideStringListj t PyConfig_SetWideStringList.items(j&j&Mhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetWideStringListj t!PyConfig_SetWideStringList.length(j&j&Mhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetWideStringListj tPyConfig_SetWideStringList.list(j&j&Mhttps://docs.python.org/3/c-api/init_config.html#c.PyConfig_SetWideStringListj tPyContextToken_CheckExact.o(j&j&Lhttps://docs.python.org/3/c-api/contextvars.html#c.PyContextToken_CheckExactj tPyContextVar_CheckExact.o(j&j&Jhttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_CheckExactj tPyContextVar_Get.default_value(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Getj tPyContextVar_Get.value(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Getj tPyContextVar_Get.var(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Getj tPyContextVar_New.def(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Newj tPyContextVar_New.name(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Newj tPyContextVar_Reset.token(j&j&Ehttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Resetj tPyContextVar_Reset.var(j&j&Ehttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Resetj tPyContextVar_Set.value(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Setj tPyContextVar_Set.var(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#c.PyContextVar_Setj tPyContext_CheckExact.o(j&j&Ghttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_CheckExactj tPyContext_Copy.ctx(j&j&Ahttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_Copyj tPyContext_Enter.ctx(j&j&Bhttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_Enterj tPyContext_Exit.ctx(j&j&Ahttps://docs.python.org/3/c-api/contextvars.html#c.PyContext_Exitj tPyCoro_CheckExact.ob(j&j&=https://docs.python.org/3/c-api/coro.html#c.PyCoro_CheckExactj tPyCoro_New.frame(j&j&6https://docs.python.org/3/c-api/coro.html#c.PyCoro_Newj tPyCoro_New.name(j&j&6https://docs.python.org/3/c-api/coro.html#c.PyCoro_Newj tPyCoro_New.qualname(j&j&6https://docs.python.org/3/c-api/coro.html#c.PyCoro_Newj tPyDateTime_Check.ob(j&j&@https://docs.python.org/3/c-api/datetime.html#c.PyDateTime_Checkj tPyDateTime_CheckExact.ob(j&j&Ehttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_CheckExactj tPyDateTime_DATE_GET_FOLD.o(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_FOLDj tPyDateTime_DATE_GET_HOUR.o(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_HOURj t!PyDateTime_DATE_GET_MICROSECOND.o(j&j&Ohttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_MICROSECONDj tPyDateTime_DATE_GET_MINUTE.o(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_MINUTEj tPyDateTime_DATE_GET_SECOND.o(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_SECONDj tPyDateTime_DATE_GET_TZINFO.o(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_TZINFOj tPyDateTime_DELTA_GET_DAYS.o(j&j&Ihttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_DAYSj t#PyDateTime_DELTA_GET_MICROSECONDS.o(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_MICROSECONDSj tPyDateTime_DELTA_GET_SECONDS.o(j&j&Lhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_SECONDSj tPyDateTime_FromDateAndTime.day(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej tPyDateTime_FromDateAndTime.hour(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej t!PyDateTime_FromDateAndTime.minute(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej t PyDateTime_FromDateAndTime.month(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej t!PyDateTime_FromDateAndTime.second(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej t"PyDateTime_FromDateAndTime.usecond(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej tPyDateTime_FromDateAndTime.year(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimej t%PyDateTime_FromDateAndTimeAndFold.day(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t&PyDateTime_FromDateAndTimeAndFold.fold(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t&PyDateTime_FromDateAndTimeAndFold.hour(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t(PyDateTime_FromDateAndTimeAndFold.minute(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t'PyDateTime_FromDateAndTimeAndFold.month(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t(PyDateTime_FromDateAndTimeAndFold.second(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t)PyDateTime_FromDateAndTimeAndFold.usecond(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj t&PyDateTime_FromDateAndTimeAndFold.year(j&j&Qhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeAndFoldj tPyDateTime_FromTimestamp.args(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromTimestampj tPyDateTime_GET_DAY.o(j&j&Bhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_DAYj tPyDateTime_GET_MONTH.o(j&j&Dhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_MONTHj tPyDateTime_GET_YEAR.o(j&j&Chttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_YEARj tPyDateTime_TIME_GET_FOLD.o(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_FOLDj tPyDateTime_TIME_GET_HOUR.o(j&j&Hhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_HOURj t!PyDateTime_TIME_GET_MICROSECOND.o(j&j&Ohttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_MICROSECONDj tPyDateTime_TIME_GET_MINUTE.o(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_MINUTEj tPyDateTime_TIME_GET_SECOND.o(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_SECONDj tPyDateTime_TIME_GET_TZINFO.o(j&j&Jhttps://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_TZINFOj tPyDate_Check.ob(j&j&https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Formatj tPyErr_Format.format(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Formatj tPyErr_FormatV.exception(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_FormatVj tPyErr_FormatV.format(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_FormatVj tPyErr_FormatV.vargs(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_FormatVj tPyErr_GetExcInfo.ptraceback(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetExcInfoj tPyErr_GetExcInfo.ptype(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetExcInfoj tPyErr_GetExcInfo.pvalue(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetExcInfoj tPyErr_GivenExceptionMatches.exc(j&j&Mhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GivenExceptionMatchesj t!PyErr_GivenExceptionMatches.given(j&j&Mhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_GivenExceptionMatchesj tPyErr_NewException.base(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionj tPyErr_NewException.dict(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionj tPyErr_NewException.name(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionj tPyErr_NewExceptionWithDoc.base(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionWithDocj tPyErr_NewExceptionWithDoc.dict(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionWithDocj tPyErr_NewExceptionWithDoc.doc(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionWithDocj tPyErr_NewExceptionWithDoc.name(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionWithDocj tPyErr_NormalizeException.exc(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NormalizeExceptionj tPyErr_NormalizeException.tb(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NormalizeExceptionj tPyErr_NormalizeException.val(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_NormalizeExceptionj tPyErr_PrintEx.set_sys_last_vars(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_PrintExj tPyErr_ResourceWarning.format(j&j&Ghttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_ResourceWarningj tPyErr_ResourceWarning.source(j&j&Ghttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_ResourceWarningj t!PyErr_ResourceWarning.stack_level(j&j&Ghttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_ResourceWarningj tPyErr_Restore.traceback(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Restorej tPyErr_Restore.type(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Restorej tPyErr_Restore.value(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Restorej tPyErr_SetExcFromWindowsErr.ierr(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrj tPyErr_SetExcFromWindowsErr.type(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrj t/PyErr_SetExcFromWindowsErrWithFilename.filename(j&j&Xhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenamej t+PyErr_SetExcFromWindowsErrWithFilename.ierr(j&j&Xhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenamej t+PyErr_SetExcFromWindowsErrWithFilename.type(j&j&Xhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenamej t5PyErr_SetExcFromWindowsErrWithFilenameObject.filename(j&j&^https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectj t1PyErr_SetExcFromWindowsErrWithFilenameObject.ierr(j&j&^https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectj t1PyErr_SetExcFromWindowsErrWithFilenameObject.type(j&j&^https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectj t6PyErr_SetExcFromWindowsErrWithFilenameObjects.filename(j&j&_https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectsj t7PyErr_SetExcFromWindowsErrWithFilenameObjects.filename2(j&j&_https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectsj t2PyErr_SetExcFromWindowsErrWithFilenameObjects.ierr(j&j&_https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectsj t2PyErr_SetExcFromWindowsErrWithFilenameObjects.type(j&j&_https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectsj tPyErr_SetExcInfo.traceback(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcInfoj tPyErr_SetExcInfo.type(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcInfoj tPyErr_SetExcInfo.value(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcInfoj tPyErr_SetFromErrno.type(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoj t'PyErr_SetFromErrnoWithFilename.filename(j&j&Phttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenamej t#PyErr_SetFromErrnoWithFilename.type(j&j&Phttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenamej t3PyErr_SetFromErrnoWithFilenameObject.filenameObject(j&j&Vhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectj t)PyErr_SetFromErrnoWithFilenameObject.type(j&j&Vhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectj t4PyErr_SetFromErrnoWithFilenameObjects.filenameObject(j&j&Whttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectsj t5PyErr_SetFromErrnoWithFilenameObjects.filenameObject2(j&j&Whttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectsj t*PyErr_SetFromErrnoWithFilenameObjects.type(j&j&Whttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectsj tPyErr_SetFromWindowsErr.ierr(j&j&Ihttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrj t,PyErr_SetFromWindowsErrWithFilename.filename(j&j&Uhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrWithFilenamej t(PyErr_SetFromWindowsErrWithFilename.ierr(j&j&Uhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrWithFilenamej tPyErr_SetHandledException.exc(j&j&Khttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetHandledExceptionj tPyErr_SetImportError.msg(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorj tPyErr_SetImportError.name(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorj tPyErr_SetImportError.path(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorj t&PyErr_SetImportErrorSubclass.exception(j&j&Nhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorSubclassj t PyErr_SetImportErrorSubclass.msg(j&j&Nhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorSubclassj t!PyErr_SetImportErrorSubclass.name(j&j&Nhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorSubclassj t!PyErr_SetImportErrorSubclass.path(j&j&Nhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorSubclassj tPyErr_SetInterruptEx.signum(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetInterruptExj tPyErr_SetNone.type(j&j&?https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetNonej tPyErr_SetObject.type(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetObjectj tPyErr_SetObject.value(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetObjectj tPyErr_SetRaisedException.exc(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetRaisedExceptionj tPyErr_SetString.message(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetStringj tPyErr_SetString.type(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetStringj tPyErr_SyntaxLocation.filename(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationj tPyErr_SyntaxLocation.lineno(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationj t!PyErr_SyntaxLocationEx.col_offset(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationExj tPyErr_SyntaxLocationEx.filename(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationExj tPyErr_SyntaxLocationEx.lineno(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationExj t%PyErr_SyntaxLocationObject.col_offset(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationObjectj t#PyErr_SyntaxLocationObject.filename(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationObjectj t!PyErr_SyntaxLocationObject.lineno(j&j&Lhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationObjectj tPyErr_WarnEx.category(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExj tPyErr_WarnEx.message(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExj tPyErr_WarnEx.stack_level(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExj tPyErr_WarnExplicit.category(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj tPyErr_WarnExplicit.filename(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj tPyErr_WarnExplicit.lineno(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj tPyErr_WarnExplicit.message(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj tPyErr_WarnExplicit.module(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj tPyErr_WarnExplicit.registry(j&j&Dhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitj t!PyErr_WarnExplicitObject.category(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj t!PyErr_WarnExplicitObject.filename(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj tPyErr_WarnExplicitObject.lineno(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj t PyErr_WarnExplicitObject.message(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj tPyErr_WarnExplicitObject.module(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj t!PyErr_WarnExplicitObject.registry(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectj tPyErr_WarnFormat.category(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnFormatj tPyErr_WarnFormat.format(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnFormatj tPyErr_WarnFormat.stack_level(j&j&Bhttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnFormatj tPyErr_WriteUnraisable.obj(j&j&Ghttps://docs.python.org/3/c-api/exceptions.html#c.PyErr_WriteUnraisablej tPyEval_AcquireThread.tstate(j&j&@https://docs.python.org/3/c-api/init.html#c.PyEval_AcquireThreadj tPyEval_EvalCode.co(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodej tPyEval_EvalCode.globals(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodej tPyEval_EvalCode.locals(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodej tPyEval_EvalCodeEx.argcount(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.args(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.closure(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.co(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.defcount(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.defs(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.globals(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.kwcount(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.kwdefs(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.kws(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalCodeEx.locals(j&j&Ahttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExj tPyEval_EvalFrame.f(j&j&@https://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFramej tPyEval_EvalFrameEx.f(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFrameExj tPyEval_EvalFrameEx.throwflag(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFrameExj tPyEval_GetFuncDesc.func(j&j&Dhttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFuncDescj tPyEval_GetFuncName.func(j&j&Dhttps://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFuncNamej tPyEval_MergeCompilerFlags.cf(j&j&Ihttps://docs.python.org/3/c-api/veryhigh.html#c.PyEval_MergeCompilerFlagsj tPyEval_ReleaseThread.tstate(j&j&@https://docs.python.org/3/c-api/init.html#c.PyEval_ReleaseThreadj tPyEval_RestoreThread.tstate(j&j&@https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThreadj tPyEval_SetProfile.func(j&j&=https://docs.python.org/3/c-api/init.html#c.PyEval_SetProfilej tPyEval_SetProfile.obj(j&j&=https://docs.python.org/3/c-api/init.html#c.PyEval_SetProfilej t PyEval_SetProfileAllThreads.func(j&j&Ghttps://docs.python.org/3/c-api/init.html#c.PyEval_SetProfileAllThreadsj tPyEval_SetProfileAllThreads.obj(j&j&Ghttps://docs.python.org/3/c-api/init.html#c.PyEval_SetProfileAllThreadsj tPyEval_SetTrace.func(j&j&;https://docs.python.org/3/c-api/init.html#c.PyEval_SetTracej tPyEval_SetTrace.obj(j&j&;https://docs.python.org/3/c-api/init.html#c.PyEval_SetTracej tPyEval_SetTraceAllThreads.func(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyEval_SetTraceAllThreadsj tPyEval_SetTraceAllThreads.obj(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyEval_SetTraceAllThreadsj tPyException_GetArgs.ex(j&j&Ehttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetArgsj tPyException_GetCause.ex(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetCausej tPyException_GetContext.ex(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetContextj tPyException_GetTraceback.ex(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_GetTracebackj tPyException_SetArgs.args(j&j&Ehttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetArgsj tPyException_SetArgs.ex(j&j&Ehttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetArgsj tPyException_SetCause.cause(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetCausej tPyException_SetCause.ex(j&j&Fhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetCausej tPyException_SetContext.ctx(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetContextj tPyException_SetContext.ex(j&j&Hhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetContextj tPyException_SetTraceback.ex(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetTracebackj tPyException_SetTraceback.tb(j&j&Jhttps://docs.python.org/3/c-api/exceptions.html#c.PyException_SetTracebackj tPyFile_FromFd.buffering(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.closefd(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.encoding(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.errors(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.fd(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.mode(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.name(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_FromFd.newline(j&j&9https://docs.python.org/3/c-api/file.html#c.PyFile_FromFdj tPyFile_GetLine.n(j&j&:https://docs.python.org/3/c-api/file.html#c.PyFile_GetLinej tPyFile_GetLine.p(j&j&:https://docs.python.org/3/c-api/file.html#c.PyFile_GetLinej tPyFile_SetOpenCodeHook.handler(j&j&Bhttps://docs.python.org/3/c-api/file.html#c.PyFile_SetOpenCodeHookj tPyFile_WriteObject.flags(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteObjectj tPyFile_WriteObject.obj(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteObjectj tPyFile_WriteObject.p(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteObjectj tPyFile_WriteString.p(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteStringj tPyFile_WriteString.s(j&j&>https://docs.python.org/3/c-api/file.html#c.PyFile_WriteStringj tPyFloat_AS_DOUBLE.pyfloat(j&j&>https://docs.python.org/3/c-api/float.html#c.PyFloat_AS_DOUBLEj tPyFloat_AsDouble.pyfloat(j&j&=https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDoublej tPyFloat_Check.p(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Checkj tPyFloat_CheckExact.p(j&j&?https://docs.python.org/3/c-api/float.html#c.PyFloat_CheckExactj tPyFloat_FromDouble.v(j&j&?https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDoublej tPyFloat_FromString.str(j&j&?https://docs.python.org/3/c-api/float.html#c.PyFloat_FromStringj tPyFloat_Pack2.le(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack2j tPyFloat_Pack2.p(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack2j tPyFloat_Pack2.x(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack2j tPyFloat_Pack4.le(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack4j tPyFloat_Pack4.p(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack4j tPyFloat_Pack4.x(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack4j tPyFloat_Pack8.le(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack8j tPyFloat_Pack8.p(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack8j tPyFloat_Pack8.x(j&j&:https://docs.python.org/3/c-api/float.html#c.PyFloat_Pack8j tPyFloat_Unpack2.le(j&j&https://docs.python.org/3/c-api/frame.html#c.PyFrame_GetLocalsj tPyFrame_GetVar.frame(j&j&;https://docs.python.org/3/c-api/frame.html#c.PyFrame_GetVarj tPyFrame_GetVar.name(j&j&;https://docs.python.org/3/c-api/frame.html#c.PyFrame_GetVarj tPyFrame_GetVarString.frame(j&j&Ahttps://docs.python.org/3/c-api/frame.html#c.PyFrame_GetVarStringj tPyFrame_GetVarString.name(j&j&Ahttps://docs.python.org/3/c-api/frame.html#c.PyFrame_GetVarStringj tPyFrozenSet_Check.p(j&j&https://docs.python.org/3/c-api/function.html#c.PyFunction_Newj tPyFunction_New.globals(j&j&>https://docs.python.org/3/c-api/function.html#c.PyFunction_Newj tPyFunction_NewWithQualName.code(j&j&Jhttps://docs.python.org/3/c-api/function.html#c.PyFunction_NewWithQualNamej t"PyFunction_NewWithQualName.globals(j&j&Jhttps://docs.python.org/3/c-api/function.html#c.PyFunction_NewWithQualNamej t#PyFunction_NewWithQualName.qualname(j&j&Jhttps://docs.python.org/3/c-api/function.html#c.PyFunction_NewWithQualNamej t%PyFunction_SetAnnotations.annotations(j&j&Ihttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetAnnotationsj tPyFunction_SetAnnotations.op(j&j&Ihttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetAnnotationsj tPyFunction_SetClosure.closure(j&j&Ehttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetClosurej tPyFunction_SetClosure.op(j&j&Ehttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetClosurej tPyFunction_SetDefaults.defaults(j&j&Fhttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetDefaultsj tPyFunction_SetDefaults.op(j&j&Fhttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetDefaultsj tPyFunction_SetVectorcall.func(j&j&Hhttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetVectorcallj t#PyFunction_SetVectorcall.vectorcall(j&j&Hhttps://docs.python.org/3/c-api/function.html#c.PyFunction_SetVectorcallj tPyGen_Check.ob(j&j&6https://docs.python.org/3/c-api/gen.html#c.PyGen_Checkj tPyGen_CheckExact.ob(j&j&;https://docs.python.org/3/c-api/gen.html#c.PyGen_CheckExactj tPyGen_New.frame(j&j&4https://docs.python.org/3/c-api/gen.html#c.PyGen_Newj tPyGen_NewWithQualName.frame(j&j&@https://docs.python.org/3/c-api/gen.html#c.PyGen_NewWithQualNamej tPyGen_NewWithQualName.name(j&j&@https://docs.python.org/3/c-api/gen.html#c.PyGen_NewWithQualNamej tPyGen_NewWithQualName.qualname(j&j&@https://docs.python.org/3/c-api/gen.html#c.PyGen_NewWithQualNamej tPyImport_AddModule.name(j&j&@https://docs.python.org/3/c-api/import.html#c.PyImport_AddModulej tPyImport_AddModuleObject.name(j&j&Fhttps://docs.python.org/3/c-api/import.html#c.PyImport_AddModuleObjectj tPyImport_AppendInittab.initfunc(j&j&Dhttps://docs.python.org/3/c-api/import.html#c.PyImport_AppendInittabj tPyImport_AppendInittab.name(j&j&Dhttps://docs.python.org/3/c-api/import.html#c.PyImport_AppendInittabj tPyImport_ExecCodeModule.co(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModulej tPyImport_ExecCodeModule.name(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModulej tPyImport_ExecCodeModuleEx.co(j&j&Ghttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleExj tPyImport_ExecCodeModuleEx.name(j&j&Ghttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleExj t"PyImport_ExecCodeModuleEx.pathname(j&j&Ghttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleExj t PyImport_ExecCodeModuleObject.co(j&j&Khttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleObjectj t'PyImport_ExecCodeModuleObject.cpathname(j&j&Khttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleObjectj t"PyImport_ExecCodeModuleObject.name(j&j&Khttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleObjectj t&PyImport_ExecCodeModuleObject.pathname(j&j&Khttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleObjectj t'PyImport_ExecCodeModuleWithPathnames.co(j&j&Rhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleWithPathnamesj t.PyImport_ExecCodeModuleWithPathnames.cpathname(j&j&Rhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleWithPathnamesj t)PyImport_ExecCodeModuleWithPathnames.name(j&j&Rhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleWithPathnamesj t-PyImport_ExecCodeModuleWithPathnames.pathname(j&j&Rhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleWithPathnamesj tPyImport_ExtendInittab.newtab(j&j&Dhttps://docs.python.org/3/c-api/import.html#c.PyImport_ExtendInittabj tPyImport_GetImporter.path(j&j&Bhttps://docs.python.org/3/c-api/import.html#c.PyImport_GetImporterj tPyImport_GetModule.name(j&j&@https://docs.python.org/3/c-api/import.html#c.PyImport_GetModulej tPyImport_Import.name(j&j&=https://docs.python.org/3/c-api/import.html#c.PyImport_Importj t PyImport_ImportFrozenModule.name(j&j&Ihttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportFrozenModulej t&PyImport_ImportFrozenModuleObject.name(j&j&Ohttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportFrozenModuleObjectj tPyImport_ImportModule.name(j&j&Chttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModulej t PyImport_ImportModuleEx.fromlist(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleExj tPyImport_ImportModuleEx.globals(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleExj tPyImport_ImportModuleEx.locals(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleExj tPyImport_ImportModuleEx.name(j&j&Ehttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleExj t#PyImport_ImportModuleLevel.fromlist(j&j&Hhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelj t"PyImport_ImportModuleLevel.globals(j&j&Hhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelj t PyImport_ImportModuleLevel.level(j&j&Hhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelj t!PyImport_ImportModuleLevel.locals(j&j&Hhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelj tPyImport_ImportModuleLevel.name(j&j&Hhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelj t)PyImport_ImportModuleLevelObject.fromlist(j&j&Nhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectj t(PyImport_ImportModuleLevelObject.globals(j&j&Nhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectj t&PyImport_ImportModuleLevelObject.level(j&j&Nhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectj t'PyImport_ImportModuleLevelObject.locals(j&j&Nhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectj t%PyImport_ImportModuleLevelObject.name(j&j&Nhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectj t!PyImport_ImportModuleNoBlock.name(j&j&Jhttps://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleNoBlockj tPyImport_ReloadModule.m(j&j&Chttps://docs.python.org/3/c-api/import.html#c.PyImport_ReloadModulej tPyIndex_Check.o(j&j&;https://docs.python.org/3/c-api/number.html#c.PyIndex_Checkj tPyInstanceMethod_Check.o(j&j&Dhttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_Checkj tPyInstanceMethod_Function.im(j&j&Ghttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_Functionj t PyInstanceMethod_GET_FUNCTION.im(j&j&Khttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_GET_FUNCTIONj tPyInstanceMethod_New.func(j&j&Bhttps://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_Newj tPyInterpreterState_Clear.interp(j&j&Dhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Clearj t PyInterpreterState_Delete.interp(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Deletej t!PyInterpreterState_GetDict.interp(j&j&Fhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_GetDictj tPyInterpreterState_GetID.interp(j&j&Dhttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_GetIDj tPyInterpreterState_Next.interp(j&j&Chttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_Nextj t$PyInterpreterState_ThreadHead.interp(j&j&Ihttps://docs.python.org/3/c-api/init.html#c.PyInterpreterState_ThreadHeadj tPyIter_Check.o(j&j&8https://docs.python.org/3/c-api/iter.html#c.PyIter_Checkj t PyIter_Next.o(j&j&7https://docs.python.org/3/c-api/iter.html#c.PyIter_Nextj tPyIter_Send.arg(j&j&7https://docs.python.org/3/c-api/iter.html#c.PyIter_Sendj tPyIter_Send.iter(j&j&7https://docs.python.org/3/c-api/iter.html#c.PyIter_Sendj tPyIter_Send.presult(j&j&7https://docs.python.org/3/c-api/iter.html#c.PyIter_Sendj tPyList_Append.item(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Appendj tPyList_Append.list(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Appendj tPyList_AsTuple.list(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_AsTuplej tPyList_Check.p(j&j&8https://docs.python.org/3/c-api/list.html#c.PyList_Checkj tPyList_CheckExact.p(j&j&=https://docs.python.org/3/c-api/list.html#c.PyList_CheckExactj tPyList_GET_ITEM.i(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GET_ITEMj tPyList_GET_ITEM.list(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GET_ITEMj tPyList_GET_SIZE.list(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GET_SIZEj tPyList_GetItem.index(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_GetItemj tPyList_GetItem.list(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_GetItemj tPyList_GetSlice.high(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GetSlicej tPyList_GetSlice.list(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GetSlicej tPyList_GetSlice.low(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_GetSlicej tPyList_Insert.index(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Insertj tPyList_Insert.item(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Insertj tPyList_Insert.list(j&j&9https://docs.python.org/3/c-api/list.html#c.PyList_Insertj tPyList_New.len(j&j&6https://docs.python.org/3/c-api/list.html#c.PyList_Newj tPyList_Reverse.list(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_Reversej tPyList_SET_ITEM.i(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SET_ITEMj tPyList_SET_ITEM.list(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SET_ITEMj tPyList_SET_ITEM.o(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SET_ITEMj tPyList_SetItem.index(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_SetItemj tPyList_SetItem.item(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_SetItemj tPyList_SetItem.list(j&j&:https://docs.python.org/3/c-api/list.html#c.PyList_SetItemj tPyList_SetSlice.high(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SetSlicej tPyList_SetSlice.itemlist(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SetSlicej tPyList_SetSlice.list(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SetSlicej tPyList_SetSlice.low(j&j&;https://docs.python.org/3/c-api/list.html#c.PyList_SetSlicej tPyList_Size.list(j&j&7https://docs.python.org/3/c-api/list.html#c.PyList_Sizej tPyList_Sort.list(j&j&7https://docs.python.org/3/c-api/list.html#c.PyList_Sortj tPyLong_AsDouble.pylong(j&j&;https://docs.python.org/3/c-api/long.html#c.PyLong_AsDoublej tPyLong_AsLong.obj(j&j&9https://docs.python.org/3/c-api/long.html#c.PyLong_AsLongj tPyLong_AsLongAndOverflow.obj(j&j&Dhttps://docs.python.org/3/c-api/long.html#c.PyLong_AsLongAndOverflowj t!PyLong_AsLongAndOverflow.overflow(j&j&Dhttps://docs.python.org/3/c-api/long.html#c.PyLong_AsLongAndOverflowj tPyLong_AsLongLong.obj(j&j&=https://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongj t PyLong_AsLongLongAndOverflow.obj(j&j&Hhttps://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongAndOverflowj t%PyLong_AsLongLongAndOverflow.overflow(j&j&Hhttps://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongAndOverflowj tPyLong_AsSize_t.pylong(j&j&;https://docs.python.org/3/c-api/long.html#c.PyLong_AsSize_tj tPyLong_AsSsize_t.pylong(j&j&https://docs.python.org/3/c-api/long.html#c.PyLong_FromSsize_tj tPyLong_FromString.base(j&j&=https://docs.python.org/3/c-api/long.html#c.PyLong_FromStringj tPyLong_FromString.pend(j&j&=https://docs.python.org/3/c-api/long.html#c.PyLong_FromStringj tPyLong_FromString.str(j&j&=https://docs.python.org/3/c-api/long.html#c.PyLong_FromStringj tPyLong_FromUnicodeObject.base(j&j&Dhttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnicodeObjectj tPyLong_FromUnicodeObject.u(j&j&Dhttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnicodeObjectj tPyLong_FromUnsignedLong.v(j&j&Chttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnsignedLongj tPyLong_FromUnsignedLongLong.v(j&j&Ghttps://docs.python.org/3/c-api/long.html#c.PyLong_FromUnsignedLongLongj tPyLong_FromVoidPtr.p(j&j&>https://docs.python.org/3/c-api/long.html#c.PyLong_FromVoidPtrj tPyMapping_Check.o(j&j&>https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Checkj tPyMapping_DelItem.key(j&j&@https://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemj tPyMapping_DelItem.o(j&j&@https://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemj tPyMapping_DelItemString.key(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemStringj tPyMapping_DelItemString.o(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemStringj tPyMapping_GetItemString.key(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_GetItemStringj tPyMapping_GetItemString.o(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_GetItemStringj tPyMapping_HasKey.key(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyj tPyMapping_HasKey.o(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyj tPyMapping_HasKeyString.key(j&j&Ehttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyStringj tPyMapping_HasKeyString.o(j&j&Ehttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyStringj tPyMapping_Items.o(j&j&>https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Itemsj tPyMapping_Keys.o(j&j&=https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Keysj tPyMapping_Length.o(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Lengthj tPyMapping_SetItemString.key(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_SetItemStringj tPyMapping_SetItemString.o(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_SetItemStringj tPyMapping_SetItemString.v(j&j&Fhttps://docs.python.org/3/c-api/mapping.html#c.PyMapping_SetItemStringj tPyMapping_Size.o(j&j&=https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Sizej tPyMapping_Values.o(j&j&?https://docs.python.org/3/c-api/mapping.html#c.PyMapping_Valuesj t%PyMarshal_ReadLastObjectFromFile.file(j&j&Ohttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadLastObjectFromFilej tPyMarshal_ReadLongFromFile.file(j&j&Ihttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadLongFromFilej t!PyMarshal_ReadObjectFromFile.file(j&j&Khttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromFilej t#PyMarshal_ReadObjectFromString.data(j&j&Mhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromStringj t"PyMarshal_ReadObjectFromString.len(j&j&Mhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromStringj t PyMarshal_ReadShortFromFile.file(j&j&Jhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadShortFromFilej tPyMarshal_WriteLongToFile.file(j&j&Hhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteLongToFilej tPyMarshal_WriteLongToFile.value(j&j&Hhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteLongToFilej t!PyMarshal_WriteLongToFile.version(j&j&Hhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteLongToFilej t PyMarshal_WriteObjectToFile.file(j&j&Jhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToFilej t!PyMarshal_WriteObjectToFile.value(j&j&Jhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToFilej t#PyMarshal_WriteObjectToFile.version(j&j&Jhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToFilej t#PyMarshal_WriteObjectToString.value(j&j&Lhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToStringj t%PyMarshal_WriteObjectToString.version(j&j&Lhttps://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToStringj tPyMem_Calloc.elsize(j&j&:https://docs.python.org/3/c-api/memory.html#c.PyMem_Callocj tPyMem_Calloc.nelem(j&j&:https://docs.python.org/3/c-api/memory.html#c.PyMem_Callocj t PyMem_Del.p(j&j&7https://docs.python.org/3/c-api/memory.html#c.PyMem_Delj t PyMem_Free.p(j&j&8https://docs.python.org/3/c-api/memory.html#c.PyMem_Freej tPyMem_GetAllocator.allocator(j&j&@https://docs.python.org/3/c-api/memory.html#c.PyMem_GetAllocatorj tPyMem_GetAllocator.domain(j&j&@https://docs.python.org/3/c-api/memory.html#c.PyMem_GetAllocatorj tPyMem_Malloc.n(j&j&:https://docs.python.org/3/c-api/memory.html#c.PyMem_Mallocj tPyMem_RawCalloc.elsize(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyMem_RawCallocj tPyMem_RawCalloc.nelem(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyMem_RawCallocj tPyMem_RawFree.p(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyMem_RawFreej tPyMem_RawMalloc.n(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyMem_RawMallocj tPyMem_RawRealloc.n(j&j&>https://docs.python.org/3/c-api/memory.html#c.PyMem_RawReallocj tPyMem_RawRealloc.p(j&j&>https://docs.python.org/3/c-api/memory.html#c.PyMem_RawReallocj tPyMem_Realloc.n(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyMem_Reallocj tPyMem_Realloc.p(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyMem_Reallocj tPyMem_SetAllocator.allocator(j&j&@https://docs.python.org/3/c-api/memory.html#c.PyMem_SetAllocatorj tPyMem_SetAllocator.domain(j&j&@https://docs.python.org/3/c-api/memory.html#c.PyMem_SetAllocatorj tPyMember_GetOne.m(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_GetOnej tPyMember_GetOne.obj_addr(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_GetOnej tPyMember_SetOne.m(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_SetOnej tPyMember_SetOne.o(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_SetOnej tPyMember_SetOne.obj_addr(j&j&Ahttps://docs.python.org/3/c-api/structures.html#c.PyMember_SetOnej tPyMemoryView_Check.obj(j&j&Dhttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_Checkj tPyMemoryView_FromBuffer.view(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromBufferj tPyMemoryView_FromMemory.flags(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromMemoryj tPyMemoryView_FromMemory.mem(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromMemoryj tPyMemoryView_FromMemory.size(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromMemoryj tPyMemoryView_FromObject.obj(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromObjectj tPyMemoryView_GET_BASE.mview(j&j&Ghttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GET_BASEj tPyMemoryView_GET_BUFFER.mview(j&j&Ihttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GET_BUFFERj t%PyMemoryView_GetContiguous.buffertype(j&j&Lhttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GetContiguousj tPyMemoryView_GetContiguous.obj(j&j&Lhttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GetContiguousj t PyMemoryView_GetContiguous.order(j&j&Lhttps://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GetContiguousj tPyMethod_Check.o(j&j&https://docs.python.org/3/c-api/module.html#c.PyModuleDef_Initj tPyModule_AddFunctions.functions(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddFunctionsj tPyModule_AddFunctions.module(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddFunctionsj tPyModule_AddIntConstant.module(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_AddIntConstantj tPyModule_AddIntConstant.name(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_AddIntConstantj tPyModule_AddIntConstant.value(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_AddIntConstantj tPyModule_AddObject.module(j&j&@https://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectj tPyModule_AddObject.name(j&j&@https://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectj tPyModule_AddObject.value(j&j&@https://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectj tPyModule_AddObjectRef.module(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectRefj tPyModule_AddObjectRef.name(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectRefj tPyModule_AddObjectRef.value(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectRefj t!PyModule_AddStringConstant.module(j&j&Hhttps://docs.python.org/3/c-api/module.html#c.PyModule_AddStringConstantj tPyModule_AddStringConstant.name(j&j&Hhttps://docs.python.org/3/c-api/module.html#c.PyModule_AddStringConstantj t PyModule_AddStringConstant.value(j&j&Hhttps://docs.python.org/3/c-api/module.html#c.PyModule_AddStringConstantj tPyModule_AddType.module(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_AddTypej tPyModule_AddType.type(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_AddTypej tPyModule_Check.p(j&j&https://docs.python.org/3/c-api/module.html#c.PyModule_Create2j t#PyModule_Create2.module_api_version(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_Create2j tPyModule_ExecDef.def(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_ExecDefj tPyModule_ExecDef.module(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_ExecDefj tPyModule_FromDefAndSpec.def(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpecj tPyModule_FromDefAndSpec.spec(j&j&Ehttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpecj tPyModule_FromDefAndSpec2.def(j&j&Fhttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpec2j t+PyModule_FromDefAndSpec2.module_api_version(j&j&Fhttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpec2j tPyModule_FromDefAndSpec2.spec(j&j&Fhttps://docs.python.org/3/c-api/module.html#c.PyModule_FromDefAndSpec2j tPyModule_GetDef.module(j&j&=https://docs.python.org/3/c-api/module.html#c.PyModule_GetDefj tPyModule_GetDict.module(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_GetDictj tPyModule_GetFilename.module(j&j&Bhttps://docs.python.org/3/c-api/module.html#c.PyModule_GetFilenamej t!PyModule_GetFilenameObject.module(j&j&Hhttps://docs.python.org/3/c-api/module.html#c.PyModule_GetFilenameObjectj tPyModule_GetName.module(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModule_GetNamej tPyModule_GetNameObject.module(j&j&Dhttps://docs.python.org/3/c-api/module.html#c.PyModule_GetNameObjectj tPyModule_GetState.module(j&j&?https://docs.python.org/3/c-api/module.html#c.PyModule_GetStatej tPyModule_New.name(j&j&:https://docs.python.org/3/c-api/module.html#c.PyModule_Newj tPyModule_NewObject.name(j&j&@https://docs.python.org/3/c-api/module.html#c.PyModule_NewObjectj tPyModule_SetDocString.docstring(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_SetDocStringj tPyModule_SetDocString.module(j&j&Chttps://docs.python.org/3/c-api/module.html#c.PyModule_SetDocStringj tPyNumber_Absolute.o(j&j&?https://docs.python.org/3/c-api/number.html#c.PyNumber_Absolutej tPyNumber_Add.o1(j&j&:https://docs.python.org/3/c-api/number.html#c.PyNumber_Addj tPyNumber_Add.o2(j&j&:https://docs.python.org/3/c-api/number.html#c.PyNumber_Addj tPyNumber_And.o1(j&j&:https://docs.python.org/3/c-api/number.html#c.PyNumber_Andj tPyNumber_And.o2(j&j&:https://docs.python.org/3/c-api/number.html#c.PyNumber_Andj tPyNumber_AsSsize_t.exc(j&j&@https://docs.python.org/3/c-api/number.html#c.PyNumber_AsSsize_tj tPyNumber_AsSsize_t.o(j&j&@https://docs.python.org/3/c-api/number.html#c.PyNumber_AsSsize_tj tPyNumber_Check.o(j&j&https://docs.python.org/3/c-api/conversion.html#c.PyOS_stricmpj tPyOS_stricmp.s2(j&j&>https://docs.python.org/3/c-api/conversion.html#c.PyOS_stricmpj tPyOS_string_to_double.endptr(j&j&Ghttps://docs.python.org/3/c-api/conversion.html#c.PyOS_string_to_doublej t(PyOS_string_to_double.overflow_exception(j&j&Ghttps://docs.python.org/3/c-api/conversion.html#c.PyOS_string_to_doublej tPyOS_string_to_double.s(j&j&Ghttps://docs.python.org/3/c-api/conversion.html#c.PyOS_string_to_doublej tPyOS_strnicmp.s1(j&j&?https://docs.python.org/3/c-api/conversion.html#c.PyOS_strnicmpj tPyOS_strnicmp.s2(j&j&?https://docs.python.org/3/c-api/conversion.html#c.PyOS_strnicmpj tPyOS_strnicmp.size(j&j&?https://docs.python.org/3/c-api/conversion.html#c.PyOS_strnicmpj tPyOS_strtol.base(j&j&=https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtolj tPyOS_strtol.ptr(j&j&=https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtolj tPyOS_strtol.str(j&j&=https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtolj tPyOS_strtoul.base(j&j&>https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtoulj tPyOS_strtoul.ptr(j&j&>https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtoulj tPyOS_strtoul.str(j&j&>https://docs.python.org/3/c-api/conversion.html#c.PyOS_strtoulj tPyOS_vsnprintf.format(j&j&@https://docs.python.org/3/c-api/conversion.html#c.PyOS_vsnprintfj tPyOS_vsnprintf.size(j&j&@https://docs.python.org/3/c-api/conversion.html#c.PyOS_vsnprintfj tPyOS_vsnprintf.str(j&j&@https://docs.python.org/3/c-api/conversion.html#c.PyOS_vsnprintfj tPyOS_vsnprintf.va(j&j&@https://docs.python.org/3/c-api/conversion.html#c.PyOS_vsnprintfj tPyObject_ASCII.o(j&j&https://docs.python.org/3/c-api/allocation.html#c.PyObject_Delj tPyObject_DelAttr.attr_name(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrj tPyObject_DelAttr.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrj t PyObject_DelAttrString.attr_name(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrStringj tPyObject_DelAttrString.o(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrStringj tPyObject_DelItem.key(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_DelItemj tPyObject_DelItem.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_DelItemj tPyObject_Dir.o(j&j&:https://docs.python.org/3/c-api/object.html#c.PyObject_Dirj tPyObject_Format.format_spec(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_Formatj tPyObject_Format.obj(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_Formatj tPyObject_Free.p(j&j&;https://docs.python.org/3/c-api/memory.html#c.PyObject_Freej tPyObject_GC_Del.op(j&j&@https://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_Delj tPyObject_GC_IsFinalized.op(j&j&Hhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_IsFinalizedj tPyObject_GC_IsTracked.op(j&j&Fhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_IsTrackedj tPyObject_GC_Track.op(j&j&Bhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_Trackj tPyObject_GC_UnTrack.op(j&j&Dhttps://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_UnTrackj tPyObject_GenericGetAttr.name(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetAttrj tPyObject_GenericGetAttr.o(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetAttrj tPyObject_GenericGetDict.context(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetDictj tPyObject_GenericGetDict.o(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetDictj tPyObject_GenericSetAttr.name(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetAttrj tPyObject_GenericSetAttr.o(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetAttrj tPyObject_GenericSetAttr.value(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetAttrj tPyObject_GenericSetDict.context(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetDictj tPyObject_GenericSetDict.o(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetDictj tPyObject_GenericSetDict.value(j&j&Ehttps://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetDictj tPyObject_GetAIter.o(j&j&?https://docs.python.org/3/c-api/object.html#c.PyObject_GetAIterj t$PyObject_GetArenaAllocator.allocator(j&j&Hhttps://docs.python.org/3/c-api/memory.html#c.PyObject_GetArenaAllocatorj tPyObject_GetAttr.attr_name(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrj tPyObject_GetAttr.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrj t PyObject_GetAttrString.attr_name(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrStringj tPyObject_GetAttrString.o(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrStringj tPyObject_GetBuffer.exporter(j&j&@https://docs.python.org/3/c-api/buffer.html#c.PyObject_GetBufferj tPyObject_GetBuffer.flags(j&j&@https://docs.python.org/3/c-api/buffer.html#c.PyObject_GetBufferj tPyObject_GetBuffer.view(j&j&@https://docs.python.org/3/c-api/buffer.html#c.PyObject_GetBufferj tPyObject_GetItem.key(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetItemj tPyObject_GetItem.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetItemj tPyObject_GetItemData.o(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetItemDataj tPyObject_GetIter.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_GetIterj tPyObject_GetTypeData.cls(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetTypeDataj tPyObject_GetTypeData.o(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_GetTypeDataj tPyObject_HasAttr.attr_name(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrj tPyObject_HasAttr.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrj t PyObject_HasAttrString.attr_name(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrStringj tPyObject_HasAttrString.o(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrStringj tPyObject_Hash.o(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Hashj tPyObject_HashNotImplemented.o(j&j&Ihttps://docs.python.org/3/c-api/object.html#c.PyObject_HashNotImplementedj tPyObject_IS_GC.obj(j&j&?https://docs.python.org/3/c-api/gcsupport.html#c.PyObject_IS_GCj tPyObject_Init.op(j&j&?https://docs.python.org/3/c-api/allocation.html#c.PyObject_Initj tPyObject_Init.type(j&j&?https://docs.python.org/3/c-api/allocation.html#c.PyObject_Initj tPyObject_InitVar.op(j&j&Bhttps://docs.python.org/3/c-api/allocation.html#c.PyObject_InitVarj tPyObject_InitVar.size(j&j&Bhttps://docs.python.org/3/c-api/allocation.html#c.PyObject_InitVarj tPyObject_InitVar.type(j&j&Bhttps://docs.python.org/3/c-api/allocation.html#c.PyObject_InitVarj tPyObject_IsInstance.cls(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_IsInstancej tPyObject_IsInstance.inst(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_IsInstancej tPyObject_IsSubclass.cls(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_IsSubclassj tPyObject_IsSubclass.derived(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_IsSubclassj tPyObject_IsTrue.o(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_IsTruej tPyObject_Length.o(j&j&=https://docs.python.org/3/c-api/object.html#c.PyObject_Lengthj t PyObject_LengthHint.defaultvalue(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_LengthHintj tPyObject_LengthHint.o(j&j&Ahttps://docs.python.org/3/c-api/object.html#c.PyObject_LengthHintj tPyObject_Malloc.n(j&j&=https://docs.python.org/3/c-api/memory.html#c.PyObject_Mallocj tPyObject_Not.o(j&j&:https://docs.python.org/3/c-api/object.html#c.PyObject_Notj tPyObject_Print.flags(j&j&https://docs.python.org/3/c-api/memory.html#c.PyObject_Reallocj tPyObject_Realloc.p(j&j&>https://docs.python.org/3/c-api/memory.html#c.PyObject_Reallocj tPyObject_Repr.o(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Reprj tPyObject_RichCompare.o1(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichComparej tPyObject_RichCompare.o2(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichComparej tPyObject_RichCompare.opid(j&j&Bhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichComparej tPyObject_RichCompareBool.o1(j&j&Fhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichCompareBoolj tPyObject_RichCompareBool.o2(j&j&Fhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichCompareBoolj tPyObject_RichCompareBool.opid(j&j&Fhttps://docs.python.org/3/c-api/object.html#c.PyObject_RichCompareBoolj t$PyObject_SetArenaAllocator.allocator(j&j&Hhttps://docs.python.org/3/c-api/memory.html#c.PyObject_SetArenaAllocatorj tPyObject_SetAttr.attr_name(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrj tPyObject_SetAttr.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrj tPyObject_SetAttr.v(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrj t PyObject_SetAttrString.attr_name(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrStringj tPyObject_SetAttrString.o(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrStringj tu(PyObject_SetAttrString.v(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrStringj tPyObject_SetItem.key(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetItemj tPyObject_SetItem.o(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetItemj tPyObject_SetItem.v(j&j&>https://docs.python.org/3/c-api/object.html#c.PyObject_SetItemj tPyObject_Size.o(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Sizej tPyObject_Str.o(j&j&:https://docs.python.org/3/c-api/object.html#c.PyObject_Strj tPyObject_Type.o(j&j&;https://docs.python.org/3/c-api/object.html#c.PyObject_Typej tPyObject_TypeCheck.o(j&j&@https://docs.python.org/3/c-api/object.html#c.PyObject_TypeCheckj tPyObject_TypeCheck.type(j&j&@https://docs.python.org/3/c-api/object.html#c.PyObject_TypeCheckj tPyObject_Vectorcall.args(j&j&?https://docs.python.org/3/c-api/call.html#c.PyObject_Vectorcallj tPyObject_Vectorcall.callable(j&j&?https://docs.python.org/3/c-api/call.html#c.PyObject_Vectorcallj tPyObject_Vectorcall.kwnames(j&j&?https://docs.python.org/3/c-api/call.html#c.PyObject_Vectorcallj tPyObject_Vectorcall.nargsf(j&j&?https://docs.python.org/3/c-api/call.html#c.PyObject_Vectorcallj tPyObject_VectorcallDict.args(j&j&Chttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallDictj t PyObject_VectorcallDict.callable(j&j&Chttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallDictj tPyObject_VectorcallDict.kwdict(j&j&Chttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallDictj tPyObject_VectorcallDict.nargsf(j&j&Chttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallDictj tPyObject_VectorcallMethod.args(j&j&Ehttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallMethodj t!PyObject_VectorcallMethod.kwnames(j&j&Ehttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallMethodj tPyObject_VectorcallMethod.name(j&j&Ehttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallMethodj t PyObject_VectorcallMethod.nargsf(j&j&Ehttps://docs.python.org/3/c-api/call.html#c.PyObject_VectorcallMethodj t(PyPreConfig_InitIsolatedConfig.preconfig(j&j&Qhttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig_InitIsolatedConfigj t&PyPreConfig_InitPythonConfig.preconfig(j&j&Ohttps://docs.python.org/3/c-api/init_config.html#c.PyPreConfig_InitPythonConfigj tPyRun_AnyFile.filename(j&j&=https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFilej tPyRun_AnyFile.fp(j&j&=https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFilej tPyRun_AnyFileEx.closeit(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExj tPyRun_AnyFileEx.filename(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExj tPyRun_AnyFileEx.fp(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExj tPyRun_AnyFileExFlags.closeit(j&j&Dhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExFlagsj tPyRun_AnyFileExFlags.filename(j&j&Dhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExFlagsj tPyRun_AnyFileExFlags.flags(j&j&Dhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExFlagsj tPyRun_AnyFileExFlags.fp(j&j&Dhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExFlagsj tPyRun_AnyFileFlags.filename(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileFlagsj tPyRun_AnyFileFlags.flags(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileFlagsj tPyRun_AnyFileFlags.fp(j&j&Bhttps://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileFlagsj tPyRun_File.filename(j&j&:https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_Filej t PyRun_File.fp(j&j&:https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_Filej tPyRun_File.globals(j&j&:https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_Filej tPyRun_File.locals(j&j&:https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_Filej tPyRun_File.start(j&j&:https://docs.python.org/3/c-api/veryhigh.html#c.PyRun_Filej tPyRun_FileEx.closeit(j&j&https://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOptionj t"PySys_AddWarnOptionUnicode.unicode(j&j&Ehttps://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOptionUnicodej tPySys_AddXOption.s(j&j&;https://docs.python.org/3/c-api/sys.html#c.PySys_AddXOptionj tPySys_Audit.event(j&j&6https://docs.python.org/3/c-api/sys.html#c.PySys_Auditj tPySys_Audit.format(j&j&6https://docs.python.org/3/c-api/sys.html#c.PySys_Auditj tPySys_FormatStderr.format(j&j&=https://docs.python.org/3/c-api/sys.html#c.PySys_FormatStderrj tPySys_FormatStdout.format(j&j&=https://docs.python.org/3/c-api/sys.html#c.PySys_FormatStdoutj tPySys_GetObject.name(j&j&:https://docs.python.org/3/c-api/sys.html#c.PySys_GetObjectj tPySys_SetArgv.argc(j&j&9https://docs.python.org/3/c-api/init.html#c.PySys_SetArgvj tPySys_SetArgv.argv(j&j&9https://docs.python.org/3/c-api/init.html#c.PySys_SetArgvj tPySys_SetArgvEx.argc(j&j&;https://docs.python.org/3/c-api/init.html#c.PySys_SetArgvExj tPySys_SetArgvEx.argv(j&j&;https://docs.python.org/3/c-api/init.html#c.PySys_SetArgvExj tPySys_SetArgvEx.updatepath(j&j&;https://docs.python.org/3/c-api/init.html#c.PySys_SetArgvExj tPySys_SetObject.name(j&j&:https://docs.python.org/3/c-api/sys.html#c.PySys_SetObjectj tPySys_SetObject.v(j&j&:https://docs.python.org/3/c-api/sys.html#c.PySys_SetObjectj tPySys_SetPath.path(j&j&8https://docs.python.org/3/c-api/sys.html#c.PySys_SetPathj tPySys_WriteStderr.format(j&j&https://docs.python.org/3/c-api/datetime.html#c.PyTZInfo_Checkj tPyTZInfo_CheckExact.ob(j&j&Chttps://docs.python.org/3/c-api/datetime.html#c.PyTZInfo_CheckExactj tPyThreadState_Clear.tstate(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThreadState_Clearj tPyThreadState_Delete.tstate(j&j&@https://docs.python.org/3/c-api/init.html#c.PyThreadState_Deletej t!PyThreadState_EnterTracing.tstate(j&j&Fhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_EnterTracingj tPyThreadState_GetFrame.tstate(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_GetFramej tPyThreadState_GetID.tstate(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThreadState_GetIDj t#PyThreadState_GetInterpreter.tstate(j&j&Hhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_GetInterpreterj t!PyThreadState_LeaveTracing.tstate(j&j&Fhttps://docs.python.org/3/c-api/init.html#c.PyThreadState_LeaveTracingj tPyThreadState_New.interp(j&j&=https://docs.python.org/3/c-api/init.html#c.PyThreadState_Newj tPyThreadState_Next.tstate(j&j&>https://docs.python.org/3/c-api/init.html#c.PyThreadState_Nextj tPyThreadState_SetAsyncExc.exc(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyThreadState_SetAsyncExcj tPyThreadState_SetAsyncExc.id(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyThreadState_SetAsyncExcj tPyThreadState_Swap.tstate(j&j&>https://docs.python.org/3/c-api/init.html#c.PyThreadState_Swapj tPyThread_delete_key.key(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_delete_keyj tPyThread_delete_key_value.key(j&j&Ehttps://docs.python.org/3/c-api/init.html#c.PyThread_delete_key_valuej tPyThread_get_key_value.key(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThread_get_key_valuej tPyThread_set_key_value.key(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThread_set_key_valuej tPyThread_set_key_value.value(j&j&Bhttps://docs.python.org/3/c-api/init.html#c.PyThread_set_key_valuej tPyThread_tss_create.key(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_tss_createj tPyThread_tss_delete.key(j&j&?https://docs.python.org/3/c-api/init.html#c.PyThread_tss_deletej tPyThread_tss_free.key(j&j&=https://docs.python.org/3/c-api/init.html#c.PyThread_tss_freej tPyThread_tss_get.key(j&j&https://docs.python.org/3/c-api/type.html#c.PyType_GetQualNamej tPyType_GetSlot.slot(j&j&:https://docs.python.org/3/c-api/type.html#c.PyType_GetSlotj tPyType_GetSlot.type(j&j&:https://docs.python.org/3/c-api/type.html#c.PyType_GetSlotj tPyType_GetTypeDataSize.cls(j&j&Dhttps://docs.python.org/3/c-api/object.html#c.PyType_GetTypeDataSizej tPyType_HasFeature.feature(j&j&=https://docs.python.org/3/c-api/type.html#c.PyType_HasFeaturej tPyType_HasFeature.o(j&j&=https://docs.python.org/3/c-api/type.html#c.PyType_HasFeaturej tPyType_IS_GC.o(j&j&8https://docs.python.org/3/c-api/type.html#c.PyType_IS_GCj tPyType_IsSubtype.a(j&j&https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Checkj tPyUnicode_CheckExact.obj(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CheckExactj tPyUnicode_Compare.left(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Comparej tPyUnicode_Compare.right(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Comparej t'PyUnicode_CompareWithASCIIString.string(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CompareWithASCIIStringj t(PyUnicode_CompareWithASCIIString.unicode(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CompareWithASCIIStringj tPyUnicode_Concat.left(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Concatj tPyUnicode_Concat.right(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Concatj tPyUnicode_Contains.substr(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Containsj tPyUnicode_Contains.unicode(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Containsj tPyUnicode_CopyCharacters.from(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersj t#PyUnicode_CopyCharacters.from_start(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersj t!PyUnicode_CopyCharacters.how_many(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersj tPyUnicode_CopyCharacters.to(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersj t!PyUnicode_CopyCharacters.to_start(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersj tPyUnicode_Count.end(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Countj tPyUnicode_Count.start(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Countj tPyUnicode_Count.substr(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Countj tPyUnicode_Count.unicode(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Countj tPyUnicode_DATA.unicode(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DATAj tPyUnicode_Decode.encoding(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Decodej tPyUnicode_Decode.errors(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Decodej tPyUnicode_Decode.size(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Decodej tPyUnicode_Decode.str(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Decodej tPyUnicode_DecodeASCII.errors(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeASCIIj tPyUnicode_DecodeASCII.size(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeASCIIj tPyUnicode_DecodeASCII.str(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeASCIIj tPyUnicode_DecodeCharmap.errors(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeCharmapj tPyUnicode_DecodeCharmap.length(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeCharmapj tPyUnicode_DecodeCharmap.mapping(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeCharmapj tPyUnicode_DecodeCharmap.str(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeCharmapj tPyUnicode_DecodeFSDefault.str(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultj t%PyUnicode_DecodeFSDefaultAndSize.size(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultAndSizej t$PyUnicode_DecodeFSDefaultAndSize.str(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultAndSizej tPyUnicode_DecodeLatin1.errors(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLatin1j tPyUnicode_DecodeLatin1.size(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLatin1j tPyUnicode_DecodeLatin1.str(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLatin1j tPyUnicode_DecodeLocale.errors(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocalej tPyUnicode_DecodeLocale.str(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocalej t$PyUnicode_DecodeLocaleAndSize.errors(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocaleAndSizej t$PyUnicode_DecodeLocaleAndSize.length(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocaleAndSizej t!PyUnicode_DecodeLocaleAndSize.str(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocaleAndSizej tPyUnicode_DecodeMBCS.errors(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSj tPyUnicode_DecodeMBCS.size(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSj tPyUnicode_DecodeMBCS.str(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSj t%PyUnicode_DecodeMBCSStateful.consumed(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSStatefulj t#PyUnicode_DecodeMBCSStateful.errors(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSStatefulj t!PyUnicode_DecodeMBCSStateful.size(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSStatefulj t PyUnicode_DecodeMBCSStateful.str(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSStatefulj t'PyUnicode_DecodeRawUnicodeEscape.errors(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeRawUnicodeEscapej t%PyUnicode_DecodeRawUnicodeEscape.size(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeRawUnicodeEscapej t$PyUnicode_DecodeRawUnicodeEscape.str(j&j&Ohttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeRawUnicodeEscapej tPyUnicode_DecodeUTF16.byteorder(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16j tPyUnicode_DecodeUTF16.errors(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16j tPyUnicode_DecodeUTF16.size(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16j tPyUnicode_DecodeUTF16.str(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16j t'PyUnicode_DecodeUTF16Stateful.byteorder(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16Statefulj t&PyUnicode_DecodeUTF16Stateful.consumed(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16Statefulj t$PyUnicode_DecodeUTF16Stateful.errors(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16Statefulj t"PyUnicode_DecodeUTF16Stateful.size(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16Statefulj t!PyUnicode_DecodeUTF16Stateful.str(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16Statefulj tPyUnicode_DecodeUTF32.byteorder(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32j tPyUnicode_DecodeUTF32.errors(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32j tPyUnicode_DecodeUTF32.size(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32j tPyUnicode_DecodeUTF32.str(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32j t'PyUnicode_DecodeUTF32Stateful.byteorder(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32Statefulj t&PyUnicode_DecodeUTF32Stateful.consumed(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32Statefulj t$PyUnicode_DecodeUTF32Stateful.errors(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32Statefulj t"PyUnicode_DecodeUTF32Stateful.size(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32Statefulj t!PyUnicode_DecodeUTF32Stateful.str(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32Statefulj tPyUnicode_DecodeUTF7.errors(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7j tPyUnicode_DecodeUTF7.size(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7j tPyUnicode_DecodeUTF7.str(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7j t%PyUnicode_DecodeUTF7Stateful.consumed(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7Statefulj t#PyUnicode_DecodeUTF7Stateful.errors(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7Statefulj t!PyUnicode_DecodeUTF7Stateful.size(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7Statefulj t PyUnicode_DecodeUTF7Stateful.str(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7Statefulj tPyUnicode_DecodeUTF8.errors(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8j tPyUnicode_DecodeUTF8.size(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8j tPyUnicode_DecodeUTF8.str(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8j t%PyUnicode_DecodeUTF8Stateful.consumed(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8Statefulj t#PyUnicode_DecodeUTF8Stateful.errors(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8Statefulj t!PyUnicode_DecodeUTF8Stateful.size(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8Statefulj t PyUnicode_DecodeUTF8Stateful.str(j&j&Khttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8Statefulj t$PyUnicode_DecodeUnicodeEscape.errors(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUnicodeEscapej t"PyUnicode_DecodeUnicodeEscape.size(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUnicodeEscapej t!PyUnicode_DecodeUnicodeEscape.str(j&j&Lhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUnicodeEscapej t"PyUnicode_EncodeCodePage.code_page(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeCodePagej tPyUnicode_EncodeCodePage.errors(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeCodePagej t PyUnicode_EncodeCodePage.unicode(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeCodePagej t!PyUnicode_EncodeFSDefault.unicode(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeFSDefaultj tPyUnicode_EncodeLocale.errors(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeLocalej tPyUnicode_EncodeLocale.unicode(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeLocalej tPyUnicode_FSConverter.obj(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSConverterj tPyUnicode_FSConverter.result(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSConverterj tPyUnicode_FSDecoder.obj(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSDecoderj tPyUnicode_FSDecoder.result(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSDecoderj tPyUnicode_Fill.fill_char(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Fillj tPyUnicode_Fill.length(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Fillj tPyUnicode_Fill.start(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Fillj tPyUnicode_Fill.unicode(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Fillj tPyUnicode_Find.direction(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Findj tPyUnicode_Find.end(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Findj tPyUnicode_Find.start(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Findj tPyUnicode_Find.substr(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Findj tPyUnicode_Find.unicode(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Findj tPyUnicode_FindChar.ch(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharj tPyUnicode_FindChar.direction(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharj tPyUnicode_FindChar.end(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharj tPyUnicode_FindChar.start(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharj tPyUnicode_FindChar.unicode(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharj tPyUnicode_Format.args(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Formatj tPyUnicode_Format.format(j&j&?https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Formatj t$PyUnicode_FromEncodedObject.encoding(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromEncodedObjectj t"PyUnicode_FromEncodedObject.errors(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromEncodedObjectj tPyUnicode_FromEncodedObject.obj(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromEncodedObjectj tPyUnicode_FromFormat.format(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatj tPyUnicode_FromFormatV.format(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatVj tPyUnicode_FromFormatV.vargs(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatVj t PyUnicode_FromKindAndData.buffer(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromKindAndDataj tPyUnicode_FromKindAndData.kind(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromKindAndDataj tPyUnicode_FromKindAndData.size(j&j&Hhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromKindAndDataj tPyUnicode_FromObject.obj(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromObjectj tPyUnicode_FromString.str(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringj t PyUnicode_FromStringAndSize.size(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringAndSizej tPyUnicode_FromStringAndSize.str(j&j&Jhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringAndSizej tPyUnicode_FromWideChar.size(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromWideCharj tPyUnicode_FromWideChar.wstr(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromWideCharj tPyUnicode_GET_LENGTH.unicode(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GET_LENGTHj tPyUnicode_GetLength.unicode(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GetLengthj tPyUnicode_InternFromString.str(j&j&Ihttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_InternFromStringj t!PyUnicode_InternInPlace.p_unicode(j&j&Fhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_InternInPlacej tPyUnicode_IsIdentifier.unicode(j&j&Ehttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_IsIdentifierj tPyUnicode_Join.separator(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Joinj tPyUnicode_Join.seq(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Joinj tPyUnicode_KIND.unicode(j&j&=https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_KINDj t PyUnicode_MAX_CHAR_VALUE.unicode(j&j&Ghttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_MAX_CHAR_VALUEj tPyUnicode_New.maxchar(j&j&https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READYj tPyUnicode_READ_CHAR.index(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READ_CHARj tPyUnicode_READ_CHAR.unicode(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READ_CHARj tPyUnicode_ReadChar.index(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ReadCharj tPyUnicode_ReadChar.unicode(j&j&Ahttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ReadCharj tPyUnicode_Replace.maxcount(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Replacej tPyUnicode_Replace.replstr(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Replacej tPyUnicode_Replace.substr(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Replacej tPyUnicode_Replace.unicode(j&j&@https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Replacej tPyUnicode_RichCompare.left(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_RichComparej tPyUnicode_RichCompare.op(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_RichComparej tPyUnicode_RichCompare.right(j&j&Dhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_RichComparej tPyUnicode_Split.maxsplit(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitj tPyUnicode_Split.sep(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitj tPyUnicode_Split.unicode(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitj tPyUnicode_Splitlines.keepends(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitlinesj tPyUnicode_Splitlines.unicode(j&j&Chttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Splitlinesj tPyUnicode_Substring.end(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Substringj tPyUnicode_Substring.start(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Substringj tPyUnicode_Substring.unicode(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Substringj tPyUnicode_Tailmatch.direction(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Tailmatchj tPyUnicode_Tailmatch.end(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Tailmatchj tPyUnicode_Tailmatch.start(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Tailmatchj tPyUnicode_Tailmatch.substr(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Tailmatchj tPyUnicode_Tailmatch.unicode(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Tailmatchj tPyUnicode_Translate.errors(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Translatej tPyUnicode_Translate.table(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Translatej tPyUnicode_Translate.unicode(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_Translatej tPyUnicode_WRITE.data(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WRITEj tPyUnicode_WRITE.index(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WRITEj tPyUnicode_WRITE.kind(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WRITEj tPyUnicode_WRITE.value(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WRITEj tPyUnicode_WriteChar.character(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WriteCharj tPyUnicode_WriteChar.index(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WriteCharj tPyUnicode_WriteChar.unicode(j&j&Bhttps://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WriteCharj tPyUnstable_Code_GetExtra.code(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_GetExtraj tPyUnstable_Code_GetExtra.extra(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_GetExtraj tPyUnstable_Code_GetExtra.index(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_GetExtraj tPyUnstable_Code_New.argcount(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.cellvars(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.code(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.consts(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj t"PyUnstable_Code_New.exceptiontable(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.filename(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.firstlineno(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.flags(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.freevars(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj t"PyUnstable_Code_New.kwonlyargcount(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.linetable(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.name(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.names(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.nlocals(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.qualname(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.stacksize(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj tPyUnstable_Code_New.varnames(j&j&?https://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_Newj t+PyUnstable_Code_NewWithPosOnlyArgs.argcount(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t+PyUnstable_Code_NewWithPosOnlyArgs.cellvars(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t'PyUnstable_Code_NewWithPosOnlyArgs.code(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t)PyUnstable_Code_NewWithPosOnlyArgs.consts(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t1PyUnstable_Code_NewWithPosOnlyArgs.exceptiontable(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t+PyUnstable_Code_NewWithPosOnlyArgs.filename(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t.PyUnstable_Code_NewWithPosOnlyArgs.firstlineno(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t(PyUnstable_Code_NewWithPosOnlyArgs.flags(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t+PyUnstable_Code_NewWithPosOnlyArgs.freevars(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t1PyUnstable_Code_NewWithPosOnlyArgs.kwonlyargcount(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t,PyUnstable_Code_NewWithPosOnlyArgs.linetable(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t'PyUnstable_Code_NewWithPosOnlyArgs.name(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t(PyUnstable_Code_NewWithPosOnlyArgs.names(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t*PyUnstable_Code_NewWithPosOnlyArgs.nlocals(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t2PyUnstable_Code_NewWithPosOnlyArgs.posonlyargcount(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t+PyUnstable_Code_NewWithPosOnlyArgs.qualname(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t,PyUnstable_Code_NewWithPosOnlyArgs.stacksize(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj t+PyUnstable_Code_NewWithPosOnlyArgs.varnames(j&j&Nhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_NewWithPosOnlyArgsj tPyUnstable_Code_SetExtra.code(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_SetExtraj tPyUnstable_Code_SetExtra.extra(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_SetExtraj tPyUnstable_Code_SetExtra.index(j&j&Dhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Code_SetExtraj t*PyUnstable_Eval_RequestCodeExtraIndex.free(j&j&Qhttps://docs.python.org/3/c-api/code.html#c.PyUnstable_Eval_RequestCodeExtraIndexj t#PyUnstable_Exc_PrepReraiseStar.excs(j&j&Phttps://docs.python.org/3/c-api/exceptions.html#c.PyUnstable_Exc_PrepReraiseStarj t#PyUnstable_Exc_PrepReraiseStar.orig(j&j&Phttps://docs.python.org/3/c-api/exceptions.html#c.PyUnstable_Exc_PrepReraiseStarj tPyUnstable_GC_VisitObjects.arg(j&j&Khttps://docs.python.org/3/c-api/gcsupport.html#c.PyUnstable_GC_VisitObjectsj t#PyUnstable_GC_VisitObjects.callback(j&j&Khttps://docs.python.org/3/c-api/gcsupport.html#c.PyUnstable_GC_VisitObjectsj t)PyUnstable_InterpreterFrame_GetCode.frame(j&j&Phttps://docs.python.org/3/c-api/frame.html#c.PyUnstable_InterpreterFrame_GetCodej t*PyUnstable_InterpreterFrame_GetLasti.frame(j&j&Qhttps://docs.python.org/3/c-api/frame.html#c.PyUnstable_InterpreterFrame_GetLastij t)PyUnstable_InterpreterFrame_GetLine.frame(j&j&Phttps://docs.python.org/3/c-api/frame.html#c.PyUnstable_InterpreterFrame_GetLinej tPyUnstable_Long_CompactValue.op(j&j&Hhttps://docs.python.org/3/c-api/long.html#c.PyUnstable_Long_CompactValuej tPyUnstable_Long_IsCompact.op(j&j&Ehttps://docs.python.org/3/c-api/long.html#c.PyUnstable_Long_IsCompactj t0PyUnstable_Object_GC_NewWithExtraData.extra_size(j&j&Vhttps://docs.python.org/3/c-api/gcsupport.html#c.PyUnstable_Object_GC_NewWithExtraDataj t*PyUnstable_Object_GC_NewWithExtraData.type(j&j&Vhttps://docs.python.org/3/c-api/gcsupport.html#c.PyUnstable_Object_GC_NewWithExtraDataj t%PyUnstable_Type_AssignVersionTag.type(j&j&Lhttps://docs.python.org/3/c-api/type.html#c.PyUnstable_Type_AssignVersionTagj t&PyUnstable_WritePerfMapEntry.code_addr(j&j&Lhttps://docs.python.org/3/c-api/perfmaps.html#c.PyUnstable_WritePerfMapEntryj t&PyUnstable_WritePerfMapEntry.code_size(j&j&Lhttps://docs.python.org/3/c-api/perfmaps.html#c.PyUnstable_WritePerfMapEntryj t'PyUnstable_WritePerfMapEntry.entry_name(j&j&Lhttps://docs.python.org/3/c-api/perfmaps.html#c.PyUnstable_WritePerfMapEntryj tPyVectorcall_Call.callable(j&j&=https://docs.python.org/3/c-api/call.html#c.PyVectorcall_Callj tPyVectorcall_Call.dict(j&j&=https://docs.python.org/3/c-api/call.html#c.PyVectorcall_Callj tPyVectorcall_Call.tuple(j&j&=https://docs.python.org/3/c-api/call.html#c.PyVectorcall_Callj tPyVectorcall_Function.op(j&j&Ahttps://docs.python.org/3/c-api/call.html#c.PyVectorcall_Functionj tPyVectorcall_NARGS.nargsf(j&j&>https://docs.python.org/3/c-api/call.html#c.PyVectorcall_NARGSj tPyWeakref_Check.ob(j&j&>https://docs.python.org/3/c-api/weakref.html#c.PyWeakref_Checkj tPyWeakref_CheckProxy.ob(j&j&Chttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckProxyj tPyWeakref_CheckRef.ob(j&j&Ahttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckRefj tPyWeakref_GET_OBJECT.ref(j&j&Chttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_GET_OBJECTj tPyWeakref_GetObject.ref(j&j&Bhttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_GetObjectj tPyWeakref_NewProxy.callback(j&j&Ahttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewProxyj tPyWeakref_NewProxy.ob(j&j&Ahttps://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewProxyj tPyWeakref_NewRef.callback(j&j&?https://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewRefj tPyWeakref_NewRef.ob(j&j&?https://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewRefj tPyWideStringList_Append.item(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Appendj tPyWideStringList_Append.list(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Appendj tPyWideStringList_Insert.index(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Insertj tPyWideStringList_Insert.item(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Insertj tPyWideStringList_Insert.list(j&j&Jhttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringList_Insertj tPy_AddPendingCall.arg(j&j&=https://docs.python.org/3/c-api/init.html#c.Py_AddPendingCallj tPy_AddPendingCall.func(j&j&=https://docs.python.org/3/c-api/init.html#c.Py_AddPendingCallj tPy_AtExit.func(j&j&4https://docs.python.org/3/c-api/sys.html#c.Py_AtExitj tPy_BuildValue.format(j&j&8https://docs.python.org/3/c-api/arg.html#c.Py_BuildValuej tPy_BytesMain.argc(j&j&https://docs.python.org/3/c-api/exceptions.html#c.Py_ReprEnterj tPy_ReprLeave.object(j&j&>https://docs.python.org/3/c-api/exceptions.html#c.Py_ReprLeavej tPy_SET_REFCNT.o(j&j&@https://docs.python.org/3/c-api/refcounting.html#c.Py_SET_REFCNTj tPy_SET_REFCNT.refcnt(j&j&@https://docs.python.org/3/c-api/refcounting.html#c.Py_SET_REFCNTj t Py_SET_SIZE.o(j&j&=https://docs.python.org/3/c-api/structures.html#c.Py_SET_SIZEj tPy_SET_SIZE.size(j&j&=https://docs.python.org/3/c-api/structures.html#c.Py_SET_SIZEj t Py_SET_TYPE.o(j&j&=https://docs.python.org/3/c-api/structures.html#c.Py_SET_TYPEj tPy_SET_TYPE.type(j&j&=https://docs.python.org/3/c-api/structures.html#c.Py_SET_TYPEj t Py_SIZE.o(j&j&9https://docs.python.org/3/c-api/structures.html#c.Py_SIZEj tPy_SetProgramName.name(j&j&=https://docs.python.org/3/c-api/init.html#c.Py_SetProgramNamej tPy_SetPythonHome.home(j&j&https://docs.python.org/3/c-api/complex.html#c.PyComplexObjectj tPyConfig(j&j&;https://docs.python.org/3/c-api/init_config.html#c.PyConfigj t PyContext(j&j&https://docs.python.org/3/c-api/init.html#c.PyInterpreterStatej t PyListObject(j&j&8https://docs.python.org/3/c-api/list.html#c.PyListObjectj t PyLongObject(j&j&8https://docs.python.org/3/c-api/long.html#c.PyLongObjectj tPyMappingMethods(j&j&?https://docs.python.org/3/c-api/typeobj.html#c.PyMappingMethodsj tPyMemAllocatorDomain(j&j&Bhttps://docs.python.org/3/c-api/memory.html#c.PyMemAllocatorDomainj tPyMemAllocatorEx(j&j&>https://docs.python.org/3/c-api/memory.html#c.PyMemAllocatorExj t PyMemberDef(j&j&=https://docs.python.org/3/c-api/structures.html#c.PyMemberDefj t PyMethodDef(j&j&=https://docs.python.org/3/c-api/structures.html#c.PyMethodDefj t PyModuleDef(j&j&9https://docs.python.org/3/c-api/module.html#c.PyModuleDefj tPyModuleDef_Slot(j&j&>https://docs.python.org/3/c-api/module.html#c.PyModuleDef_Slotj tPyNumberMethods(j&j&>https://docs.python.org/3/c-api/typeobj.html#c.PyNumberMethodsj tPyOS_sighandler_t(j&j&https://docs.python.org/3/c-api/init_config.html#c.PyPreConfigj t PySendResult(j&j&8https://docs.python.org/3/c-api/iter.html#c.PySendResultj tPySequenceMethods(j&j&@https://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethodsj t PySetObject(j&j&6https://docs.python.org/3/c-api/set.html#c.PySetObjectj tPyStatus(j&j&;https://docs.python.org/3/c-api/init_config.html#c.PyStatusj tPyStructSequence_Desc(j&j&Bhttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Descj tPyStructSequence_Field(j&j&Chttps://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_Fieldj t PyThreadState(j&j&9https://docs.python.org/3/c-api/init.html#c.PyThreadStatej t PyTupleObject(j&j&:https://docs.python.org/3/c-api/tuple.html#c.PyTupleObjectj t PyTypeObject(j&j&8https://docs.python.org/3/c-api/type.html#c.PyTypeObjectj t PyType_Slot(j&j&7https://docs.python.org/3/c-api/type.html#c.PyType_Slotj t PyType_Spec(j&j&7https://docs.python.org/3/c-api/type.html#c.PyType_Specj tPyType_WatchCallback(j&j&@https://docs.python.org/3/c-api/type.html#c.PyType_WatchCallbackj tPyUnicodeObject(j&j&>https://docs.python.org/3/c-api/unicode.html#c.PyUnicodeObjectj t PyVarObject(j&j&=https://docs.python.org/3/c-api/structures.html#c.PyVarObjectj tPyWideStringList(j&j&Chttps://docs.python.org/3/c-api/init_config.html#c.PyWideStringListj tPy_AuditHookFunction(j&j&?https://docs.python.org/3/c-api/sys.html#c.Py_AuditHookFunctionj tPy_UCS1(j&j&6https://docs.python.org/3/c-api/unicode.html#c.Py_UCS1j tPy_UCS2(j&j&6https://docs.python.org/3/c-api/unicode.html#c.Py_UCS2j tPy_UCS4(j&j&6https://docs.python.org/3/c-api/unicode.html#c.Py_UCS4j t Py_UNICODE(j&j&9https://docs.python.org/3/c-api/unicode.html#c.Py_UNICODEj t Py_buffer(j&j&7https://docs.python.org/3/c-api/buffer.html#c.Py_bufferj t Py_complex(j&j&9https://docs.python.org/3/c-api/complex.html#c.Py_complexj t Py_hash_t(j&j&5https://docs.python.org/3/c-api/hash.html#c.Py_hash_tj t Py_ssize_t(j&j&7https://docs.python.org/3/c-api/intro.html#c.Py_ssize_tj t Py_tracefunc(j&j&8https://docs.python.org/3/c-api/init.html#c.Py_tracefuncj tPy_tss_t(j&j&4https://docs.python.org/3/c-api/init.html#c.Py_tss_tj t Py_uhash_t(j&j&6https://docs.python.org/3/c-api/hash.html#c.Py_uhash_tj t_PyCFunctionFast(j&j&Bhttps://docs.python.org/3/c-api/structures.html#c._PyCFunctionFastj t_PyCFunctionFastWithKeywords(j&j&Nhttps://docs.python.org/3/c-api/structures.html#c._PyCFunctionFastWithKeywordsj t_PyFrameEvalFunction(j&j&@https://docs.python.org/3/c-api/init.html#c._PyFrameEvalFunctionj t allocfunc(j&j&8https://docs.python.org/3/c-api/typeobj.html#c.allocfuncj t binaryfunc(j&j&9https://docs.python.org/3/c-api/typeobj.html#c.binaryfuncj t descrgetfunc(j&j&;https://docs.python.org/3/c-api/typeobj.html#c.descrgetfuncj t descrsetfunc(j&j&;https://docs.python.org/3/c-api/typeobj.html#c.descrsetfuncj t destructor(j&j&9https://docs.python.org/3/c-api/typeobj.html#c.destructorj tfreefunc(j&j&7https://docs.python.org/3/c-api/typeobj.html#c.freefuncj tgcvisitobjects_t(j&j&Ahttps://docs.python.org/3/c-api/gcsupport.html#c.gcvisitobjects_tj t getattrfunc(j&j&:https://docs.python.org/3/c-api/typeobj.html#c.getattrfuncj t getattrofunc(j&j&;https://docs.python.org/3/c-api/typeobj.html#c.getattrofuncj t getbufferproc(j&j&https://docs.python.org/3/c-api/typeobj.html#c.ssizeobjargprocj t ternaryfunc(j&j&:https://docs.python.org/3/c-api/typeobj.html#c.ternaryfuncj t traverseproc(j&j&=https://docs.python.org/3/c-api/gcsupport.html#c.traverseprocj t unaryfunc(j&j&8https://docs.python.org/3/c-api/typeobj.html#c.unaryfuncj tvectorcallfunc(j&j&:https://docs.python.org/3/c-api/call.html#c.vectorcallfuncj t visitproc(j&j&:https://docs.python.org/3/c-api/gcsupport.html#c.visitprocj tuc:struct}(PyCompilerFlags(j&j&?https://docs.python.org/3/c-api/veryhigh.html#c.PyCompilerFlagsj t_PyInterpreterFrame(j&j&@https://docs.python.org/3/c-api/frame.html#c._PyInterpreterFramej t_frozen(j&j&5https://docs.python.org/3/c-api/import.html#c._frozenj t_inittab(j&j&6https://docs.python.org/3/c-api/import.html#c._inittabj tu py:exception}(ArithmeticError(j&j&Ahttps://docs.python.org/3/library/exceptions.html#ArithmeticErrorj tAssertionError(j&j&@https://docs.python.org/3/library/exceptions.html#AssertionErrorj tAttributeError(j&j&@https://docs.python.org/3/library/exceptions.html#AttributeErrorj t BaseException(j&j&?https://docs.python.org/3/library/exceptions.html#BaseExceptionj tBaseExceptionGroup(j&j&Dhttps://docs.python.org/3/library/exceptions.html#BaseExceptionGroupj tBlockingIOError(j&j&Ahttps://docs.python.org/3/library/exceptions.html#BlockingIOErrorj tBrokenPipeError(j&j&Ahttps://docs.python.org/3/library/exceptions.html#BrokenPipeErrorj t BufferError(j&j&=https://docs.python.org/3/library/exceptions.html#BufferErrorj t BytesWarning(j&j&>https://docs.python.org/3/library/exceptions.html#BytesWarningj tChildProcessError(j&j&Chttps://docs.python.org/3/library/exceptions.html#ChildProcessErrorj tConnectionAbortedError(j&j&Hhttps://docs.python.org/3/library/exceptions.html#ConnectionAbortedErrorj tConnectionError(j&j&Ahttps://docs.python.org/3/library/exceptions.html#ConnectionErrorj tConnectionRefusedError(j&j&Hhttps://docs.python.org/3/library/exceptions.html#ConnectionRefusedErrorj tConnectionResetError(j&j&Fhttps://docs.python.org/3/library/exceptions.html#ConnectionResetErrorj tDeprecationWarning(j&j&Dhttps://docs.python.org/3/library/exceptions.html#DeprecationWarningj tEOFError(j&j&:https://docs.python.org/3/library/exceptions.html#EOFErrorj tEncodingWarning(j&j&Ahttps://docs.python.org/3/library/exceptions.html#EncodingWarningj tEnvironmentError(j&j&Bhttps://docs.python.org/3/library/exceptions.html#EnvironmentErrorj t Exception(j&j&;https://docs.python.org/3/library/exceptions.html#Exceptionj tExceptionGroup(j&j&@https://docs.python.org/3/library/exceptions.html#ExceptionGroupj tFileExistsError(j&j&Ahttps://docs.python.org/3/library/exceptions.html#FileExistsErrorj tFileNotFoundError(j&j&Chttps://docs.python.org/3/library/exceptions.html#FileNotFoundErrorj tFloatingPointError(j&j&Dhttps://docs.python.org/3/library/exceptions.html#FloatingPointErrorj t FutureWarning(j&j&?https://docs.python.org/3/library/exceptions.html#FutureWarningj t GeneratorExit(j&j&?https://docs.python.org/3/library/exceptions.html#GeneratorExitj tIOError(j&j&9https://docs.python.org/3/library/exceptions.html#IOErrorj t ImportError(j&j&=https://docs.python.org/3/library/exceptions.html#ImportErrorj t ImportWarning(j&j&?https://docs.python.org/3/library/exceptions.html#ImportWarningj tIndentationError(j&j&Bhttps://docs.python.org/3/library/exceptions.html#IndentationErrorj t IndexError(j&j&https://docs.python.org/3/library/exceptions.html#RuntimeErrorj tRuntimeWarning(j&j&@https://docs.python.org/3/library/exceptions.html#RuntimeWarningj tStopAsyncIteration(j&j&Dhttps://docs.python.org/3/library/exceptions.html#StopAsyncIterationj t StopIteration(j&j&?https://docs.python.org/3/library/exceptions.html#StopIterationj t SyntaxError(j&j&=https://docs.python.org/3/library/exceptions.html#SyntaxErrorj t SyntaxWarning(j&j&?https://docs.python.org/3/library/exceptions.html#SyntaxWarningj t SystemError(j&j&=https://docs.python.org/3/library/exceptions.html#SystemErrorj t SystemExit(j&j&https://docs.python.org/3/library/exceptions.html#TimeoutErrorj t TypeError(j&j&;https://docs.python.org/3/library/exceptions.html#TypeErrorj tUnboundLocalError(j&j&Chttps://docs.python.org/3/library/exceptions.html#UnboundLocalErrorj tUnicodeDecodeError(j&j&Dhttps://docs.python.org/3/library/exceptions.html#UnicodeDecodeErrorj tUnicodeEncodeError(j&j&Dhttps://docs.python.org/3/library/exceptions.html#UnicodeEncodeErrorj t UnicodeError(j&j&>https://docs.python.org/3/library/exceptions.html#UnicodeErrorj tUnicodeTranslateError(j&j&Ghttps://docs.python.org/3/library/exceptions.html#UnicodeTranslateErrorj tUnicodeWarning(j&j&@https://docs.python.org/3/library/exceptions.html#UnicodeWarningj t UserWarning(j&j&=https://docs.python.org/3/library/exceptions.html#UserWarningj t ValueError(j&j&https://docs.python.org/3/library/exceptions.html#WindowsErrorj tZeroDivisionError(j&j&Chttps://docs.python.org/3/library/exceptions.html#ZeroDivisionErrorj t _thread.error(j&j&;https://docs.python.org/3/library/_thread.html#thread.errorj targparse.ArgumentError(j&j&Fhttps://docs.python.org/3/library/argparse.html#argparse.ArgumentErrorj targparse.ArgumentTypeError(j&j&Jhttps://docs.python.org/3/library/argparse.html#argparse.ArgumentTypeErrorj tasyncio.BrokenBarrierError(j&j&Nhttps://docs.python.org/3/library/asyncio-sync.html#asyncio.BrokenBarrierErrorj tasyncio.CancelledError(j&j&Phttps://docs.python.org/3/library/asyncio-exceptions.html#asyncio.CancelledErrorj tasyncio.IncompleteReadError(j&j&Uhttps://docs.python.org/3/library/asyncio-exceptions.html#asyncio.IncompleteReadErrorj tasyncio.InvalidStateError(j&j&Shttps://docs.python.org/3/library/asyncio-exceptions.html#asyncio.InvalidStateErrorj tasyncio.LimitOverrunError(j&j&Shttps://docs.python.org/3/library/asyncio-exceptions.html#asyncio.LimitOverrunErrorj tasyncio.QueueEmpty(j&j&Ghttps://docs.python.org/3/library/asyncio-queue.html#asyncio.QueueEmptyj tasyncio.QueueFull(j&j&Fhttps://docs.python.org/3/library/asyncio-queue.html#asyncio.QueueFullj t!asyncio.SendfileNotAvailableError(j&j&[https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.SendfileNotAvailableErrorj tasyncio.TimeoutError(j&j&Nhttps://docs.python.org/3/library/asyncio-exceptions.html#asyncio.TimeoutErrorj t audioop.error(j&j&https://docs.python.org/3/library/binascii.html#binascii.Errorj tbinascii.Incomplete(j&j&Chttps://docs.python.org/3/library/binascii.html#binascii.Incompletej tcalendar.IllegalMonthError(j&j&Jhttps://docs.python.org/3/library/calendar.html#calendar.IllegalMonthErrorj tcalendar.IllegalWeekdayError(j&j&Lhttps://docs.python.org/3/library/calendar.html#calendar.IllegalWeekdayErrorj t!concurrent.futures.BrokenExecutor(j&j&[https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.BrokenExecutorj t!concurrent.futures.CancelledError(j&j&[https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.CancelledErrorj t$concurrent.futures.InvalidStateError(j&j&^https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.InvalidStateErrorj tconcurrent.futures.TimeoutError(j&j&Yhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.TimeoutErrorj t,concurrent.futures.process.BrokenProcessPool(j&j&fhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.process.BrokenProcessPoolj t*concurrent.futures.thread.BrokenThreadPool(j&j&dhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.thread.BrokenThreadPoolj t!configparser.DuplicateOptionError(j&j&Uhttps://docs.python.org/3/library/configparser.html#configparser.DuplicateOptionErrorj t"configparser.DuplicateSectionError(j&j&Vhttps://docs.python.org/3/library/configparser.html#configparser.DuplicateSectionErrorj tconfigparser.Error(j&j&Fhttps://docs.python.org/3/library/configparser.html#configparser.Errorj t$configparser.InterpolationDepthError(j&j&Xhttps://docs.python.org/3/library/configparser.html#configparser.InterpolationDepthErrorj tconfigparser.InterpolationError(j&j&Shttps://docs.python.org/3/library/configparser.html#configparser.InterpolationErrorj t,configparser.InterpolationMissingOptionError(j&j&`https://docs.python.org/3/library/configparser.html#configparser.InterpolationMissingOptionErrorj t%configparser.InterpolationSyntaxError(j&j&Yhttps://docs.python.org/3/library/configparser.html#configparser.InterpolationSyntaxErrorj t&configparser.MissingSectionHeaderError(j&j&Zhttps://docs.python.org/3/library/configparser.html#configparser.MissingSectionHeaderErrorj tconfigparser.NoOptionError(j&j&Nhttps://docs.python.org/3/library/configparser.html#configparser.NoOptionErrorj tconfigparser.NoSectionError(j&j&Ohttps://docs.python.org/3/library/configparser.html#configparser.NoSectionErrorj tconfigparser.ParsingError(j&j&Mhttps://docs.python.org/3/library/configparser.html#configparser.ParsingErrorj t copy.Error(j&j&6https://docs.python.org/3/library/copy.html#copy.Errorj t csv.Error(j&j&4https://docs.python.org/3/library/csv.html#csv.Errorj tctypes.ArgumentError(j&j&Bhttps://docs.python.org/3/library/ctypes.html#ctypes.ArgumentErrorj t curses.error(j&j&:https://docs.python.org/3/library/curses.html#curses.errorj tdataclasses.FrozenInstanceError(j&j&Rhttps://docs.python.org/3/library/dataclasses.html#dataclasses.FrozenInstanceErrorj tdbm.dumb.error(j&j&9https://docs.python.org/3/library/dbm.html#dbm.dumb.errorj t dbm.error(j&j&4https://docs.python.org/3/library/dbm.html#dbm.errorj t dbm.gnu.error(j&j&8https://docs.python.org/3/library/dbm.html#dbm.gnu.errorj tdbm.ndbm.error(j&j&9https://docs.python.org/3/library/dbm.html#dbm.ndbm.errorj tdoctest.DocTestFailure(j&j&Ehttps://docs.python.org/3/library/doctest.html#doctest.DocTestFailurej tdoctest.UnexpectedException(j&j&Jhttps://docs.python.org/3/library/doctest.html#doctest.UnexpectedExceptionj tdoctest.failureException(j&j&Ghttps://docs.python.org/3/library/doctest.html#doctest.failureExceptionj temail.errors.BoundaryError(j&j&Nhttps://docs.python.org/3/library/email.errors.html#email.errors.BoundaryErrorj temail.errors.HeaderDefect(j&j&Mhttps://docs.python.org/3/library/email.errors.html#email.errors.HeaderDefectj temail.errors.HeaderParseError(j&j&Qhttps://docs.python.org/3/library/email.errors.html#email.errors.HeaderParseErrorj temail.errors.HeaderWriteError(j&j&Qhttps://docs.python.org/3/library/email.errors.html#email.errors.HeaderWriteErrorj temail.errors.MessageDefect(j&j&Nhttps://docs.python.org/3/library/email.errors.html#email.errors.MessageDefectj temail.errors.MessageError(j&j&Mhttps://docs.python.org/3/library/email.errors.html#email.errors.MessageErrorj temail.errors.MessageParseError(j&j&Rhttps://docs.python.org/3/library/email.errors.html#email.errors.MessageParseErrorj t%email.errors.MultipartConversionError(j&j&Yhttps://docs.python.org/3/library/email.errors.html#email.errors.MultipartConversionErrorj tftplib.error_perm(j&j&?https://docs.python.org/3/library/ftplib.html#ftplib.error_permj tftplib.error_proto(j&j&@https://docs.python.org/3/library/ftplib.html#ftplib.error_protoj tftplib.error_reply(j&j&@https://docs.python.org/3/library/ftplib.html#ftplib.error_replyj tftplib.error_temp(j&j&?https://docs.python.org/3/library/ftplib.html#ftplib.error_tempj tgetopt.GetoptError(j&j&@https://docs.python.org/3/library/getopt.html#getopt.GetoptErrorj t getopt.error(j&j&:https://docs.python.org/3/library/getopt.html#getopt.errorj tgetpass.GetPassWarning(j&j&Ehttps://docs.python.org/3/library/getpass.html#getpass.GetPassWarningj tgraphlib.CycleError(j&j&Chttps://docs.python.org/3/library/graphlib.html#graphlib.CycleErrorj tgzip.BadGzipFile(j&j&https://docs.python.org/3/library/resource.html#resource.errorj t select.error(j&j&:https://docs.python.org/3/library/select.html#select.errorj t shutil.Error(j&j&:https://docs.python.org/3/library/shutil.html#shutil.Errorj tshutil.SameFileError(j&j&Bhttps://docs.python.org/3/library/shutil.html#shutil.SameFileErrorj tsignal.ItimerError(j&j&@https://docs.python.org/3/library/signal.html#signal.ItimerErrorj tsmtplib.SMTPAuthenticationError(j&j&Nhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPAuthenticationErrorj tsmtplib.SMTPConnectError(j&j&Ghttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPConnectErrorj tsmtplib.SMTPDataError(j&j&Dhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPDataErrorj tsmtplib.SMTPException(j&j&Dhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPExceptionj tsmtplib.SMTPHeloError(j&j&Dhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPHeloErrorj tsmtplib.SMTPNotSupportedError(j&j&Lhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPNotSupportedErrorj tsmtplib.SMTPRecipientsRefused(j&j&Lhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPRecipientsRefusedj tsmtplib.SMTPResponseException(j&j&Lhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPResponseExceptionj tsmtplib.SMTPSenderRefused(j&j&Hhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPSenderRefusedj tsmtplib.SMTPServerDisconnected(j&j&Mhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTPServerDisconnectedj t socket.error(j&j&:https://docs.python.org/3/library/socket.html#socket.errorj tsocket.gaierror(j&j&=https://docs.python.org/3/library/socket.html#socket.gaierrorj t socket.herror(j&j&;https://docs.python.org/3/library/socket.html#socket.herrorj tsocket.timeout(j&j&https://docs.python.org/3/library/sqlite3.html#sqlite3.Warningj tssl.CertificateError(j&j&?https://docs.python.org/3/library/ssl.html#ssl.CertificateErrorj tssl.SSLCertVerificationError(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.SSLCertVerificationErrorj tssl.SSLEOFError(j&j&:https://docs.python.org/3/library/ssl.html#ssl.SSLEOFErrorj t ssl.SSLError(j&j&7https://docs.python.org/3/library/ssl.html#ssl.SSLErrorj tssl.SSLSyscallError(j&j&>https://docs.python.org/3/library/ssl.html#ssl.SSLSyscallErrorj tssl.SSLWantReadError(j&j&?https://docs.python.org/3/library/ssl.html#ssl.SSLWantReadErrorj tssl.SSLWantWriteError(j&j&@https://docs.python.org/3/library/ssl.html#ssl.SSLWantWriteErrorj tssl.SSLZeroReturnError(j&j&Ahttps://docs.python.org/3/library/ssl.html#ssl.SSLZeroReturnErrorj tstatistics.StatisticsError(j&j&Lhttps://docs.python.org/3/library/statistics.html#statistics.StatisticsErrorj t struct.error(j&j&:https://docs.python.org/3/library/struct.html#struct.errorj tsubprocess.CalledProcessError(j&j&Ohttps://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessErrorj tsubprocess.SubprocessError(j&j&Lhttps://docs.python.org/3/library/subprocess.html#subprocess.SubprocessErrorj tsubprocess.TimeoutExpired(j&j&Khttps://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpiredj t sunau.Error(j&j&8https://docs.python.org/3/library/sunau.html#sunau.Errorj ttabnanny.NannyNag(j&j&Ahttps://docs.python.org/3/library/tabnanny.html#tabnanny.NannyNagj ttarfile.AbsoluteLinkError(j&j&Hhttps://docs.python.org/3/library/tarfile.html#tarfile.AbsoluteLinkErrorj ttarfile.AbsolutePathError(j&j&Hhttps://docs.python.org/3/library/tarfile.html#tarfile.AbsolutePathErrorj ttarfile.CompressionError(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.CompressionErrorj ttarfile.ExtractError(j&j&Chttps://docs.python.org/3/library/tarfile.html#tarfile.ExtractErrorj ttarfile.FilterError(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile.FilterErrorj ttarfile.HeaderError(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile.HeaderErrorj t#tarfile.LinkOutsideDestinationError(j&j&Rhttps://docs.python.org/3/library/tarfile.html#tarfile.LinkOutsideDestinationErrorj ttarfile.OutsideDestinationError(j&j&Nhttps://docs.python.org/3/library/tarfile.html#tarfile.OutsideDestinationErrorj ttarfile.ReadError(j&j&@https://docs.python.org/3/library/tarfile.html#tarfile.ReadErrorj ttarfile.SpecialFileError(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.SpecialFileErrorj ttarfile.StreamError(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile.StreamErrorj ttarfile.TarError(j&j&?https://docs.python.org/3/library/tarfile.html#tarfile.TarErrorj ttest.support.ResourceDenied(j&j&Ghttps://docs.python.org/3/library/test.html#test.support.ResourceDeniedj ttest.support.TestFailed(j&j&Chttps://docs.python.org/3/library/test.html#test.support.TestFailedj tthreading.BrokenBarrierError(j&j&Mhttps://docs.python.org/3/library/threading.html#threading.BrokenBarrierErrorj ttokenize.TokenError(j&j&Chttps://docs.python.org/3/library/tokenize.html#tokenize.TokenErrorj ttomllib.TOMLDecodeError(j&j&Fhttps://docs.python.org/3/library/tomllib.html#tomllib.TOMLDecodeErrorj tunittest.SkipTest(j&j&Ahttps://docs.python.org/3/library/unittest.html#unittest.SkipTestj t!urllib.error.ContentTooShortError(j&j&Uhttps://docs.python.org/3/library/urllib.error.html#urllib.error.ContentTooShortErrorj turllib.error.HTTPError(j&j&Jhttps://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPErrorj turllib.error.URLError(j&j&Ihttps://docs.python.org/3/library/urllib.error.html#urllib.error.URLErrorj tuu.Error(j&j&2https://docs.python.org/3/library/uu.html#uu.Errorj t wave.Error(j&j&6https://docs.python.org/3/library/wave.html#wave.Errorj twebbrowser.Error(j&j&Bhttps://docs.python.org/3/library/webbrowser.html#webbrowser.Errorj txdrlib.ConversionError(j&j&Dhttps://docs.python.org/3/library/xdrlib.html#xdrlib.ConversionErrorj t xdrlib.Error(j&j&:https://docs.python.org/3/library/xdrlib.html#xdrlib.Errorj txml.dom.DOMException(j&j&Chttps://docs.python.org/3/library/xml.dom.html#xml.dom.DOMExceptionj txml.dom.DomstringSizeErr(j&j&Ghttps://docs.python.org/3/library/xml.dom.html#xml.dom.DomstringSizeErrj txml.dom.HierarchyRequestErr(j&j&Jhttps://docs.python.org/3/library/xml.dom.html#xml.dom.HierarchyRequestErrj txml.dom.IndexSizeErr(j&j&Chttps://docs.python.org/3/library/xml.dom.html#xml.dom.IndexSizeErrj txml.dom.InuseAttributeErr(j&j&Hhttps://docs.python.org/3/library/xml.dom.html#xml.dom.InuseAttributeErrj txml.dom.InvalidAccessErr(j&j&Ghttps://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidAccessErrj txml.dom.InvalidCharacterErr(j&j&Jhttps://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidCharacterErrj txml.dom.InvalidModificationErr(j&j&Mhttps://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidModificationErrj txml.dom.InvalidStateErr(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidStateErrj txml.dom.NamespaceErr(j&j&Chttps://docs.python.org/3/library/xml.dom.html#xml.dom.NamespaceErrj txml.dom.NoDataAllowedErr(j&j&Ghttps://docs.python.org/3/library/xml.dom.html#xml.dom.NoDataAllowedErrj t xml.dom.NoModificationAllowedErr(j&j&Ohttps://docs.python.org/3/library/xml.dom.html#xml.dom.NoModificationAllowedErrj txml.dom.NotFoundErr(j&j&Bhttps://docs.python.org/3/library/xml.dom.html#xml.dom.NotFoundErrj txml.dom.NotSupportedErr(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.NotSupportedErrj txml.dom.SyntaxErr(j&j&@https://docs.python.org/3/library/xml.dom.html#xml.dom.SyntaxErrj txml.dom.WrongDocumentErr(j&j&Ghttps://docs.python.org/3/library/xml.dom.html#xml.dom.WrongDocumentErrj txml.parsers.expat.ExpatError(j&j&Khttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatErrorj txml.parsers.expat.error(j&j&Fhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errorj txml.sax.SAXException(j&j&Chttps://docs.python.org/3/library/xml.sax.html#xml.sax.SAXExceptionj t!xml.sax.SAXNotRecognizedException(j&j&Phttps://docs.python.org/3/library/xml.sax.html#xml.sax.SAXNotRecognizedExceptionj t xml.sax.SAXNotSupportedException(j&j&Ohttps://docs.python.org/3/library/xml.sax.html#xml.sax.SAXNotSupportedExceptionj txml.sax.SAXParseException(j&j&Hhttps://docs.python.org/3/library/xml.sax.html#xml.sax.SAXParseExceptionj tzipfile.BadZipFile(j&j&Ahttps://docs.python.org/3/library/zipfile.html#zipfile.BadZipFilej tzipfile.BadZipfile(j&j&Ahttps://docs.python.org/3/library/zipfile.html#zipfile.BadZipfilej tzipfile.LargeZipFile(j&j&Chttps://docs.python.org/3/library/zipfile.html#zipfile.LargeZipFilej tzipimport.ZipImportError(j&j&Ihttps://docs.python.org/3/library/zipimport.html#zipimport.ZipImportErrorj t zlib.error(j&j&6https://docs.python.org/3/library/zlib.html#zlib.errorj tzoneinfo.InvalidTZPathWarning(j&j&Mhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.InvalidTZPathWarningj tzoneinfo.ZoneInfoNotFoundError(j&j&Nhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.ZoneInfoNotFoundErrorj tu py:attribute}(BaseException.__cause__(j&j&Ihttps://docs.python.org/3/library/exceptions.html#BaseException.__cause__j tBaseException.__context__(j&j&Khttps://docs.python.org/3/library/exceptions.html#BaseException.__context__j tBaseException.__notes__(j&j&Ihttps://docs.python.org/3/library/exceptions.html#BaseException.__notes__j t"BaseException.__suppress_context__(j&j&Thttps://docs.python.org/3/library/exceptions.html#BaseException.__suppress_context__j tBaseException.__traceback__(j&j&Mhttps://docs.python.org/3/library/exceptions.html#BaseException.__traceback__j tBaseException.args(j&j&Dhttps://docs.python.org/3/library/exceptions.html#BaseException.argsj tBaseExceptionGroup.exceptions(j&j&Ohttps://docs.python.org/3/library/exceptions.html#BaseExceptionGroup.exceptionsj tBaseExceptionGroup.message(j&j&Lhttps://docs.python.org/3/library/exceptions.html#BaseExceptionGroup.messagej t"BlockingIOError.characters_written(j&j&Thttps://docs.python.org/3/library/exceptions.html#BlockingIOError.characters_writtenj tImportError.name(j&j&Bhttps://docs.python.org/3/library/exceptions.html#ImportError.namej tImportError.path(j&j&Bhttps://docs.python.org/3/library/exceptions.html#ImportError.pathj t OSError.errno(j&j&?https://docs.python.org/3/library/exceptions.html#OSError.errnoj tOSError.filename(j&j&Bhttps://docs.python.org/3/library/exceptions.html#OSError.filenamej tOSError.filename2(j&j&Chttps://docs.python.org/3/library/exceptions.html#OSError.filename2j tOSError.strerror(j&j&Bhttps://docs.python.org/3/library/exceptions.html#OSError.strerrorj tOSError.winerror(j&j&Bhttps://docs.python.org/3/library/exceptions.html#OSError.winerrorj tStopIteration.value(j&j&Ehttps://docs.python.org/3/library/exceptions.html#StopIteration.valuej tSyntaxError.end_lineno(j&j&Hhttps://docs.python.org/3/library/exceptions.html#SyntaxError.end_linenoj tSyntaxError.end_offset(j&j&Hhttps://docs.python.org/3/library/exceptions.html#SyntaxError.end_offsetj tSyntaxError.filename(j&j&Fhttps://docs.python.org/3/library/exceptions.html#SyntaxError.filenamej tSyntaxError.lineno(j&j&Dhttps://docs.python.org/3/library/exceptions.html#SyntaxError.linenoj tSyntaxError.offset(j&j&Dhttps://docs.python.org/3/library/exceptions.html#SyntaxError.offsetj tSyntaxError.text(j&j&Bhttps://docs.python.org/3/library/exceptions.html#SyntaxError.textj tSystemExit.code(j&j&Ahttps://docs.python.org/3/library/exceptions.html#SystemExit.codej tUnicodeError.encoding(j&j&Ghttps://docs.python.org/3/library/exceptions.html#UnicodeError.encodingj tUnicodeError.end(j&j&Bhttps://docs.python.org/3/library/exceptions.html#UnicodeError.endj tUnicodeError.object(j&j&Ehttps://docs.python.org/3/library/exceptions.html#UnicodeError.objectj tUnicodeError.reason(j&j&Ehttps://docs.python.org/3/library/exceptions.html#UnicodeError.reasonj tUnicodeError.start(j&j&Dhttps://docs.python.org/3/library/exceptions.html#UnicodeError.startj t __cached__(j&j&8https://docs.python.org/3/reference/import.html#cached__j t__file__(j&j&6https://docs.python.org/3/reference/import.html#file__j t!__future__._Feature.compiler_flag(j&j&Qhttps://docs.python.org/3/library/__future__.html#future__._Feature.compiler_flagj t __loader__(j&j&8https://docs.python.org/3/reference/import.html#loader__j t__name__(j&j&6https://docs.python.org/3/reference/import.html#name__j t __package__(j&j&9https://docs.python.org/3/reference/import.html#package__j t__path__(j&j&6https://docs.python.org/3/reference/import.html#path__j t__spec__(j&j&6https://docs.python.org/3/reference/import.html#spec__j tarray.array.itemsize(j&j&Ahttps://docs.python.org/3/library/array.html#array.array.itemsizej tarray.array.typecode(j&j&Ahttps://docs.python.org/3/library/array.html#array.array.typecodej tast.AST._fields(j&j&:https://docs.python.org/3/library/ast.html#ast.AST._fieldsj tast.AST.col_offset(j&j&=https://docs.python.org/3/library/ast.html#ast.AST.col_offsetj tast.AST.end_col_offset(j&j&Ahttps://docs.python.org/3/library/ast.html#ast.AST.end_col_offsetj tast.AST.end_lineno(j&j&=https://docs.python.org/3/library/ast.html#ast.AST.end_linenoj tast.AST.lineno(j&j&9https://docs.python.org/3/library/ast.html#ast.AST.linenoj tast.Assign.type_comment(j&j&Bhttps://docs.python.org/3/library/ast.html#ast.Assign.type_commentj tast.For.type_comment(j&j&?https://docs.python.org/3/library/ast.html#ast.For.type_commentj tast.FunctionDef.type_comment(j&j&Ghttps://docs.python.org/3/library/ast.html#ast.FunctionDef.type_commentj tast.With.type_comment(j&j&@https://docs.python.org/3/library/ast.html#ast.With.type_commentj tast.arg.type_comment(j&j&?https://docs.python.org/3/library/ast.html#ast.arg.type_commentj tasyncio.Barrier.broken(j&j&Jhttps://docs.python.org/3/library/asyncio-sync.html#asyncio.Barrier.brokenj tasyncio.Barrier.n_waiting(j&j&Mhttps://docs.python.org/3/library/asyncio-sync.html#asyncio.Barrier.n_waitingj tasyncio.Barrier.parties(j&j&Khttps://docs.python.org/3/library/asyncio-sync.html#asyncio.Barrier.partiesj t$asyncio.IncompleteReadError.expected(j&j&^https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.IncompleteReadError.expectedj t#asyncio.IncompleteReadError.partial(j&j&]https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.IncompleteReadError.partialj t"asyncio.LimitOverrunError.consumed(j&j&\https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.LimitOverrunError.consumedj tasyncio.Queue.maxsize(j&j&Jhttps://docs.python.org/3/library/asyncio-queue.html#asyncio.Queue.maxsizej tasyncio.Server.sockets(j&j&Ohttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio.Server.socketsj tasyncio.StreamWriter.transport(j&j&Thttps://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.transportj t#asyncio.loop.slow_callback_duration(j&j&\https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.slow_callback_durationj tasyncio.subprocess.Process.pid(j&j&Xhttps://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.pidj t%asyncio.subprocess.Process.returncode(j&j&_https://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.returncodej t!asyncio.subprocess.Process.stderr(j&j&[https://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.stderrj t asyncio.subprocess.Process.stdin(j&j&Zhttps://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.stdinj t!asyncio.subprocess.Process.stdout(j&j&[https://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.stdoutj tbdb.Breakpoint.bpbynumber(j&j&Dhttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.bpbynumberj tbdb.Breakpoint.bplist(j&j&@https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.bplistj tbdb.Breakpoint.cond(j&j&>https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.condj tbdb.Breakpoint.enabled(j&j&Ahttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.enabledj tbdb.Breakpoint.file(j&j&>https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.filej tbdb.Breakpoint.funcname(j&j&Bhttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.funcnamej tbdb.Breakpoint.hits(j&j&>https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.hitsj tbdb.Breakpoint.ignore(j&j&@https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.ignorej tbdb.Breakpoint.line(j&j&>https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.linej tbdb.Breakpoint.temporary(j&j&Chttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.temporaryj tbz2.BZ2Decompressor.eof(j&j&Bhttps://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.eofj tbz2.BZ2Decompressor.needs_input(j&j&Jhttps://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.needs_inputj tbz2.BZ2Decompressor.unused_data(j&j&Jhttps://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.unused_dataj t$calendar.HTMLCalendar.cssclass_month(j&j&Thttps://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclass_monthj t)calendar.HTMLCalendar.cssclass_month_head(j&j&Yhttps://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclass_month_headj t$calendar.HTMLCalendar.cssclass_noday(j&j&Thttps://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclass_nodayj t#calendar.HTMLCalendar.cssclass_year(j&j&Shttps://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclass_yearj t(calendar.HTMLCalendar.cssclass_year_head(j&j&Xhttps://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclass_year_headj t calendar.HTMLCalendar.cssclasses(j&j&Phttps://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclassesj t-calendar.HTMLCalendar.cssclasses_weekday_head&(j&j&]https://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.cssclasses_weekday_headj t calendar.IllegalMonthError.month(j&j&Phttps://docs.python.org/3/library/calendar.html#calendar.IllegalMonthError.monthj t$calendar.IllegalWeekdayError.weekday(j&j&Thttps://docs.python.org/3/library/calendar.html#calendar.IllegalWeekdayError.weekdayj tclass.__bases__(j&j&?https://docs.python.org/3/library/stdtypes.html#class.__bases__j t class.__mro__(j&j&=https://docs.python.org/3/library/stdtypes.html#class.__mro__j tcmd.Cmd.cmdqueue(j&j&;https://docs.python.org/3/library/cmd.html#cmd.Cmd.cmdqueuej tcmd.Cmd.doc_header(j&j&=https://docs.python.org/3/library/cmd.html#cmd.Cmd.doc_headerj tcmd.Cmd.identchars(j&j&=https://docs.python.org/3/library/cmd.html#cmd.Cmd.identcharsj t cmd.Cmd.intro(j&j&8https://docs.python.org/3/library/cmd.html#cmd.Cmd.introj tcmd.Cmd.lastcmd(j&j&:https://docs.python.org/3/library/cmd.html#cmd.Cmd.lastcmdj tcmd.Cmd.misc_header(j&j&>https://docs.python.org/3/library/cmd.html#cmd.Cmd.misc_headerj tcmd.Cmd.prompt(j&j&9https://docs.python.org/3/library/cmd.html#cmd.Cmd.promptj t cmd.Cmd.ruler(j&j&8https://docs.python.org/3/library/cmd.html#cmd.Cmd.rulerj tcmd.Cmd.undoc_header(j&j&?https://docs.python.org/3/library/cmd.html#cmd.Cmd.undoc_headerj tcmd.Cmd.use_rawinput(j&j&?https://docs.python.org/3/library/cmd.html#cmd.Cmd.use_rawinputj tcodecs.CodecInfo.decode(j&j&Ehttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.decodej tcodecs.CodecInfo.encode(j&j&Ehttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.encodej t#codecs.CodecInfo.incrementaldecoder(j&j&Qhttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.incrementaldecoderj t#codecs.CodecInfo.incrementalencoder(j&j&Qhttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.incrementalencoderj tcodecs.CodecInfo.name(j&j&Chttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.namej tcodecs.CodecInfo.streamreader(j&j&Khttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.streamreaderj tcodecs.CodecInfo.streamwriter(j&j&Khttps://docs.python.org/3/library/codecs.html#codecs.CodecInfo.streamwriterj tcodeobject.co_argcount(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#codeobject.co_argcountj tcodeobject.co_cellvars(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#codeobject.co_cellvarsj tcodeobject.co_code(j&j&Ehttps://docs.python.org/3/reference/datamodel.html#codeobject.co_codej tcodeobject.co_consts(j&j&Ghttps://docs.python.org/3/reference/datamodel.html#codeobject.co_constsj tcodeobject.co_filename(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#codeobject.co_filenamej tcodeobject.co_firstlineno(j&j&Lhttps://docs.python.org/3/reference/datamodel.html#codeobject.co_firstlinenoj tcodeobject.co_flags(j&j&Fhttps://docs.python.org/3/reference/datamodel.html#codeobject.co_flagsj tcodeobject.co_freevars(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#codeobject.co_freevarsj tcodeobject.co_kwonlyargcount(j&j&Ohttps://docs.python.org/3/reference/datamodel.html#codeobject.co_kwonlyargcountj tcodeobject.co_lnotab(j&j&Ghttps://docs.python.org/3/reference/datamodel.html#codeobject.co_lnotabj tcodeobject.co_name(j&j&Ehttps://docs.python.org/3/reference/datamodel.html#codeobject.co_namej tcodeobject.co_names(j&j&Fhttps://docs.python.org/3/reference/datamodel.html#codeobject.co_namesj tcodeobject.co_nlocals(j&j&Hhttps://docs.python.org/3/reference/datamodel.html#codeobject.co_nlocalsj tcodeobject.co_posonlyargcount(j&j&Phttps://docs.python.org/3/reference/datamodel.html#codeobject.co_posonlyargcountj tcodeobject.co_qualname(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#codeobject.co_qualnamej tcodeobject.co_stacksize(j&j&Jhttps://docs.python.org/3/reference/datamodel.html#codeobject.co_stacksizej tcodeobject.co_varnames(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#codeobject.co_varnamesj tcollections.ChainMap.maps(j&j&Lhttps://docs.python.org/3/library/collections.html#collections.ChainMap.mapsj tcollections.ChainMap.parents(j&j&Ohttps://docs.python.org/3/library/collections.html#collections.ChainMap.parentsj tcollections.UserDict.data(j&j&Lhttps://docs.python.org/3/library/collections.html#collections.UserDict.dataj tcollections.UserList.data(j&j&Lhttps://docs.python.org/3/library/collections.html#collections.UserList.dataj tcollections.UserString.data(j&j&Nhttps://docs.python.org/3/library/collections.html#collections.UserString.dataj t'collections.defaultdict.default_factory(j&j&Zhttps://docs.python.org/3/library/collections.html#collections.defaultdict.default_factoryj tcollections.deque.maxlen(j&j&Khttps://docs.python.org/3/library/collections.html#collections.deque.maxlenj t*collections.somenamedtuple._field_defaults(j&j&]https://docs.python.org/3/library/collections.html#collections.somenamedtuple._field_defaultsj t"collections.somenamedtuple._fields(j&j&Uhttps://docs.python.org/3/library/collections.html#collections.somenamedtuple._fieldsj t(configparser.ConfigParser.BOOLEAN_STATES(j&j&\https://docs.python.org/3/library/configparser.html#configparser.ConfigParser.BOOLEAN_STATESj t!configparser.ConfigParser.SECTCRE(j&j&Uhttps://docs.python.org/3/library/configparser.html#configparser.ConfigParser.SECTCREj tcontextvars.ContextVar.name(j&j&Nhttps://docs.python.org/3/library/contextvars.html#contextvars.ContextVar.namej tcontextvars.Token.MISSING(j&j&Lhttps://docs.python.org/3/library/contextvars.html#contextvars.Token.MISSINGj tcontextvars.Token.old_value(j&j&Nhttps://docs.python.org/3/library/contextvars.html#contextvars.Token.old_valuej tcontextvars.Token.var(j&j&Hhttps://docs.python.org/3/library/contextvars.html#contextvars.Token.varj t crypt.methods(j&j&:https://docs.python.org/3/library/crypt.html#crypt.methodsj tcsv.Dialect.delimiter(j&j&@https://docs.python.org/3/library/csv.html#csv.Dialect.delimiterj tcsv.Dialect.doublequote(j&j&Bhttps://docs.python.org/3/library/csv.html#csv.Dialect.doublequotej tcsv.Dialect.escapechar(j&j&Ahttps://docs.python.org/3/library/csv.html#csv.Dialect.escapecharj tcsv.Dialect.lineterminator(j&j&Ehttps://docs.python.org/3/library/csv.html#csv.Dialect.lineterminatorj tcsv.Dialect.quotechar(j&j&@https://docs.python.org/3/library/csv.html#csv.Dialect.quotecharj tcsv.Dialect.quoting(j&j&>https://docs.python.org/3/library/csv.html#csv.Dialect.quotingj tcsv.Dialect.skipinitialspace(j&j&Ghttps://docs.python.org/3/library/csv.html#csv.Dialect.skipinitialspacej tcsv.Dialect.strict(j&j&=https://docs.python.org/3/library/csv.html#csv.Dialect.strictj tcsv.DictReader.fieldnames(j&j&Dhttps://docs.python.org/3/library/csv.html#csv.DictReader.fieldnamesj tcsv.csvreader.dialect(j&j&@https://docs.python.org/3/library/csv.html#csv.csvreader.dialectj tcsv.csvreader.line_num(j&j&Ahttps://docs.python.org/3/library/csv.html#csv.csvreader.line_numj tcsv.csvwriter.dialect(j&j&@https://docs.python.org/3/library/csv.html#csv.csvwriter.dialectj tctypes.Array._length_(j&j&Chttps://docs.python.org/3/library/ctypes.html#ctypes.Array._length_j tctypes.Array._type_(j&j&Ahttps://docs.python.org/3/library/ctypes.html#ctypes.Array._type_j tctypes.PyDLL._handle(j&j&Bhttps://docs.python.org/3/library/ctypes.html#ctypes.PyDLL._handlej tctypes.PyDLL._name(j&j&@https://docs.python.org/3/library/ctypes.html#ctypes.PyDLL._namej tctypes.Structure._anonymous_(j&j&Jhttps://docs.python.org/3/library/ctypes.html#ctypes.Structure._anonymous_j tctypes.Structure._fields_(j&j&Ghttps://docs.python.org/3/library/ctypes.html#ctypes.Structure._fields_j tctypes.Structure._pack_(j&j&Ehttps://docs.python.org/3/library/ctypes.html#ctypes.Structure._pack_j tctypes._CData._b_base_(j&j&Dhttps://docs.python.org/3/library/ctypes.html#ctypes._CData._b_base_j tctypes._CData._b_needsfree_(j&j&Ihttps://docs.python.org/3/library/ctypes.html#ctypes._CData._b_needsfree_j tctypes._CData._objects(j&j&Dhttps://docs.python.org/3/library/ctypes.html#ctypes._CData._objectsj tctypes._FuncPtr.argtypes(j&j&Fhttps://docs.python.org/3/library/ctypes.html#ctypes._FuncPtr.argtypesj tctypes._FuncPtr.errcheck(j&j&Fhttps://docs.python.org/3/library/ctypes.html#ctypes._FuncPtr.errcheckj tctypes._FuncPtr.restype(j&j&Ehttps://docs.python.org/3/library/ctypes.html#ctypes._FuncPtr.restypej tctypes._Pointer._type_(j&j&Dhttps://docs.python.org/3/library/ctypes.html#ctypes._Pointer._type_j tctypes._Pointer.contents(j&j&Fhttps://docs.python.org/3/library/ctypes.html#ctypes._Pointer.contentsj tctypes._SimpleCData.value(j&j&Ghttps://docs.python.org/3/library/ctypes.html#ctypes._SimpleCData.valuej t"curses.textpad.Textbox.stripspaces(j&j&Phttps://docs.python.org/3/library/curses.html#curses.textpad.Textbox.stripspacesj tcurses.window.encoding(j&j&Dhttps://docs.python.org/3/library/curses.html#curses.window.encodingj t datetime.UTC(j&j&https://docs.python.org/3/library/enum.html#enum.Enum._ignore_j tenum.Enum._name_(j&j&https://docs.python.org/3/library/gzip.html#gzip.GzipFile.namej thashlib.hash.name(j&j&@https://docs.python.org/3/library/hashlib.html#hashlib.hash.namej thmac.HMAC.block_size(j&j&@https://docs.python.org/3/library/hmac.html#hmac.HMAC.block_sizej thmac.HMAC.digest_size(j&j&Ahttps://docs.python.org/3/library/hmac.html#hmac.HMAC.digest_sizej thmac.HMAC.name(j&j&:https://docs.python.org/3/library/hmac.html#hmac.HMAC.namej t$http.client.HTTPConnection.blocksize(j&j&Whttps://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.blocksizej thttp.client.HTTPResponse.closed(j&j&Rhttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.closedj t#http.client.HTTPResponse.debuglevel(j&j&Vhttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.debuglevelj t http.client.HTTPResponse.headers(j&j&Shttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.headersj thttp.client.HTTPResponse.msg(j&j&Ohttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.msgj thttp.client.HTTPResponse.reason(j&j&Rhttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.reasonj thttp.client.HTTPResponse.status(j&j&Rhttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.statusj thttp.client.HTTPResponse.url(j&j&Ohttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.urlj t http.client.HTTPResponse.version(j&j&Shttps://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.versionj thttp.cookiejar.Cookie.comment(j&j&Shttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.commentj t!http.cookiejar.Cookie.comment_url(j&j&Whttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.comment_urlj thttp.cookiejar.Cookie.discard(j&j&Shttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.discardj thttp.cookiejar.Cookie.domain(j&j&Rhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.domainj t(http.cookiejar.Cookie.domain_initial_dot(j&j&^https://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.domain_initial_dotj t&http.cookiejar.Cookie.domain_specified(j&j&\https://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.domain_specifiedj thttp.cookiejar.Cookie.expires(j&j&Shttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.expiresj thttp.cookiejar.Cookie.name(j&j&Phttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.namej thttp.cookiejar.Cookie.path(j&j&Phttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.pathj thttp.cookiejar.Cookie.port(j&j&Phttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.portj t$http.cookiejar.Cookie.port_specified(j&j&Zhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.port_specifiedj thttp.cookiejar.Cookie.rfc2109(j&j&Shttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.rfc2109j thttp.cookiejar.Cookie.secure(j&j&Rhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.securej thttp.cookiejar.Cookie.value(j&j&Qhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.valuej thttp.cookiejar.Cookie.version(j&j&Shttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.versionj t(http.cookiejar.CookiePolicy.hide_cookie2(j&j&^https://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.hide_cookie2j t$http.cookiejar.CookiePolicy.netscape(j&j&Zhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.netscapej t#http.cookiejar.CookiePolicy.rfc2965(j&j&Yhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.rfc2965j t0http.cookiejar.DefaultCookiePolicy.DomainLiberal(j&j&fhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainLiberalj t5http.cookiejar.DefaultCookiePolicy.DomainRFC2965Match(j&j&khttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainRFC2965Matchj t/http.cookiejar.DefaultCookiePolicy.DomainStrict(j&j&ehttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainStrictj t5http.cookiejar.DefaultCookiePolicy.DomainStrictNoDots(j&j&khttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainStrictNoDotsj t8http.cookiejar.DefaultCookiePolicy.DomainStrictNonDomain(j&j&nhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainStrictNonDomainj t6http.cookiejar.DefaultCookiePolicy.rfc2109_as_netscape(j&j&lhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.rfc2109_as_netscapej t0http.cookiejar.DefaultCookiePolicy.strict_domain(j&j&fhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_domainj t3http.cookiejar.DefaultCookiePolicy.strict_ns_domain(j&j&ihttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_domainj t?http.cookiejar.DefaultCookiePolicy.strict_ns_set_initial_dollar(j&j&uhttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_set_initial_dollarj t5http.cookiejar.DefaultCookiePolicy.strict_ns_set_path(j&j&khttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_set_pathj t9http.cookiejar.DefaultCookiePolicy.strict_ns_unverifiable(j&j&ohttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_unverifiablej t>http.cookiejar.DefaultCookiePolicy.strict_rfc2965_unverifiable(j&j&thttps://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_rfc2965_unverifiablej t&http.cookiejar.FileCookieJar.delayload(j&j&\https://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.delayloadj t%http.cookiejar.FileCookieJar.filename(j&j&[https://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.filenamej thttp.cookies.Morsel.coded_value(j&j&Shttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.coded_valuej thttp.cookies.Morsel.comment(j&j&Ohttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.commentj thttp.cookies.Morsel.domain(j&j&Nhttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.domainj thttp.cookies.Morsel.expires(j&j&Ohttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.expiresj thttp.cookies.Morsel.httponly(j&j&Phttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.httponlyj thttp.cookies.Morsel.key(j&j&Khttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.keyj thttp.cookies.Morsel.path(j&j&Lhttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.pathj thttp.cookies.Morsel.samesite(j&j&Phttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.samesitej thttp.cookies.Morsel.secure(j&j&Nhttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.securej thttp.cookies.Morsel.value(j&j&Mhttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.valuej thttp.cookies.Morsel.version(j&j&Ohttps://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.versionj t/http.server.BaseHTTPRequestHandler.MessageClass(j&j&bhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.MessageClassj t1http.server.BaseHTTPRequestHandler.client_address(j&j&dhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.client_addressj t3http.server.BaseHTTPRequestHandler.close_connection(j&j&fhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.close_connectionj t*http.server.BaseHTTPRequestHandler.command(j&j&]https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.commandj t5http.server.BaseHTTPRequestHandler.error_content_type(j&j&hhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.error_content_typej t7http.server.BaseHTTPRequestHandler.error_message_format(j&j&jhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.error_message_formatj t*http.server.BaseHTTPRequestHandler.headers(j&j&]https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.headersj t'http.server.BaseHTTPRequestHandler.path(j&j&Zhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.pathj t3http.server.BaseHTTPRequestHandler.protocol_version(j&j&fhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.protocol_versionj t2http.server.BaseHTTPRequestHandler.request_version(j&j&ehttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.request_versionj t.http.server.BaseHTTPRequestHandler.requestline(j&j&ahttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.requestlinej t,http.server.BaseHTTPRequestHandler.responses(j&j&_https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.responsesj t(http.server.BaseHTTPRequestHandler.rfile(j&j&[https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.rfilej t)http.server.BaseHTTPRequestHandler.server(j&j&\https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.serverj t1http.server.BaseHTTPRequestHandler.server_version(j&j&dhttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.server_versionj t.http.server.BaseHTTPRequestHandler.sys_version(j&j&ahttps://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.sys_versionj t(http.server.BaseHTTPRequestHandler.wfile(j&j&[https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.wfilej t1http.server.CGIHTTPRequestHandler.cgi_directories(j&j&dhttps://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandler.cgi_directoriesj t3http.server.SimpleHTTPRequestHandler.extensions_map(j&j&fhttps://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler.extensions_mapj t3http.server.SimpleHTTPRequestHandler.server_version(j&j&fhttps://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler.server_versionj timaplib.IMAP4.PROTOCOL_VERSION(j&j&Mhttps://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.PROTOCOL_VERSIONj timaplib.IMAP4.debug(j&j&Bhttps://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.debugj timaplib.IMAP4.utf8_enabled(j&j&Ihttps://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.utf8_enabledj timportlib.abc.FileLoader.name(j&j&Nhttps://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.namej timportlib.abc.FileLoader.path(j&j&Nhttps://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.pathj timportlib.abc.Traversable.name(j&j&Ohttps://docs.python.org/3/library/importlib.html#importlib.abc.Traversable.namej t%importlib.machinery.BYTECODE_SUFFIXES(j&j&Vhttps://docs.python.org/3/library/importlib.html#importlib.machinery.BYTECODE_SUFFIXESj t+importlib.machinery.DEBUG_BYTECODE_SUFFIXES(j&j&\https://docs.python.org/3/library/importlib.html#importlib.machinery.DEBUG_BYTECODE_SUFFIXESj t&importlib.machinery.EXTENSION_SUFFIXES(j&j&Whttps://docs.python.org/3/library/importlib.html#importlib.machinery.EXTENSION_SUFFIXESj t,importlib.machinery.ExtensionFileLoader.name(j&j&]https://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.namej t,importlib.machinery.ExtensionFileLoader.path(j&j&]https://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.pathj t#importlib.machinery.FileFinder.path(j&j&Thttps://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinder.pathj t%importlib.machinery.ModuleSpec.cached(j&j&Vhttps://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.cachedj t+importlib.machinery.ModuleSpec.has_location(j&j&\https://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.has_locationj t%importlib.machinery.ModuleSpec.loader(j&j&Vhttps://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.loaderj t+importlib.machinery.ModuleSpec.loader_state(j&j&\https://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.loader_statej t#importlib.machinery.ModuleSpec.name(j&j&Thttps://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.namej t%importlib.machinery.ModuleSpec.origin(j&j&Vhttps://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.originj t%importlib.machinery.ModuleSpec.parent(j&j&Vhttps://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.parentj t9importlib.machinery.ModuleSpec.submodule_search_locations(j&j&jhttps://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.submodule_search_locationsj t/importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES(j&j&`https://docs.python.org/3/library/importlib.html#importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXESj t#importlib.machinery.SOURCE_SUFFIXES(j&j&Thttps://docs.python.org/3/library/importlib.html#importlib.machinery.SOURCE_SUFFIXESj t)importlib.machinery.SourceFileLoader.name(j&j&Zhttps://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.namej t)importlib.machinery.SourceFileLoader.path(j&j&Zhttps://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.pathj t-importlib.machinery.SourcelessFileLoader.name(j&j&^https://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.namej t-importlib.machinery.SourcelessFileLoader.path(j&j&^https://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.pathj t(importlib.resources.abc.Traversable.name(j&j&ghttps://docs.python.org/3/library/importlib.resources.abc.html#importlib.resources.abc.Traversable.namej timportlib.util.MAGIC_NUMBER(j&j&Lhttps://docs.python.org/3/library/importlib.html#importlib.util.MAGIC_NUMBERj tinspect.BoundArguments.args(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.BoundArguments.argsj t inspect.BoundArguments.arguments(j&j&Ohttps://docs.python.org/3/library/inspect.html#inspect.BoundArguments.argumentsj tinspect.BoundArguments.kwargs(j&j&Lhttps://docs.python.org/3/library/inspect.html#inspect.BoundArguments.kwargsj t inspect.BoundArguments.signature(j&j&Ohttps://docs.python.org/3/library/inspect.html#inspect.BoundArguments.signaturej t"inspect.BufferFlags.ANY_CONTIGUOUS(j&j&Qhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.ANY_CONTIGUOUSj tinspect.BufferFlags.CONTIG(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.CONTIGj tinspect.BufferFlags.CONTIG_RO(j&j&Lhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.CONTIG_ROj t inspect.BufferFlags.C_CONTIGUOUS(j&j&Ohttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.C_CONTIGUOUSj tinspect.BufferFlags.FORMAT(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.FORMATj tinspect.BufferFlags.FULL(j&j&Ghttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.FULLj tinspect.BufferFlags.FULL_RO(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.FULL_ROj t inspect.BufferFlags.F_CONTIGUOUS(j&j&Ohttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.F_CONTIGUOUSj tinspect.BufferFlags.INDIRECT(j&j&Khttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.INDIRECTj tinspect.BufferFlags.ND(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.NDj tinspect.BufferFlags.READ(j&j&Ghttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.READj tinspect.BufferFlags.RECORDS(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.RECORDSj tinspect.BufferFlags.RECORDS_RO(j&j&Mhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.RECORDS_ROj tinspect.BufferFlags.SIMPLE(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.SIMPLEj tinspect.BufferFlags.STRIDED(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.STRIDEDj tinspect.BufferFlags.STRIDED_RO(j&j&Mhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.STRIDED_ROj tinspect.BufferFlags.STRIDES(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.STRIDESj tinspect.BufferFlags.WRITABLE(j&j&Khttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.WRITABLEj tinspect.BufferFlags.WRITE(j&j&Hhttps://docs.python.org/3/library/inspect.html#inspect.BufferFlags.WRITEj tinspect.FrameInfo.code_context(j&j&Mhttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.code_contextj tinspect.FrameInfo.filename(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.filenamej tinspect.FrameInfo.frame(j&j&Fhttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.framej tinspect.FrameInfo.function(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.functionj tinspect.FrameInfo.index(j&j&Fhttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.indexj tinspect.FrameInfo.lineno(j&j&Ghttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.linenoj tinspect.FrameInfo.positions(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.FrameInfo.positionsj tinspect.Parameter.annotation(j&j&Khttps://docs.python.org/3/library/inspect.html#inspect.Parameter.annotationj tinspect.Parameter.default(j&j&Hhttps://docs.python.org/3/library/inspect.html#inspect.Parameter.defaultj tinspect.Parameter.empty(j&j&Fhttps://docs.python.org/3/library/inspect.html#inspect.Parameter.emptyj tinspect.Parameter.kind(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.Parameter.kindj t"inspect.Parameter.kind.description(j&j&Qhttps://docs.python.org/3/library/inspect.html#inspect.Parameter.kind.descriptionj tinspect.Parameter.name(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.Parameter.namej tinspect.Signature.empty(j&j&Fhttps://docs.python.org/3/library/inspect.html#inspect.Signature.emptyj tinspect.Signature.parameters(j&j&Khttps://docs.python.org/3/library/inspect.html#inspect.Signature.parametersj t#inspect.Signature.return_annotation(j&j&Rhttps://docs.python.org/3/library/inspect.html#inspect.Signature.return_annotationj tinspect.Traceback.code_context(j&j&Mhttps://docs.python.org/3/library/inspect.html#inspect.Traceback.code_contextj tinspect.Traceback.filename(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.Traceback.filenamej tinspect.Traceback.function(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.Traceback.functionj tinspect.Traceback.index(j&j&Fhttps://docs.python.org/3/library/inspect.html#inspect.Traceback.indexj tinspect.Traceback.lineno(j&j&Ghttps://docs.python.org/3/library/inspect.html#inspect.Traceback.linenoj tinspect.Traceback.positions(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.Traceback.positionsj tinstance.__class__(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#instance.__class__j tio.BufferedIOBase.raw(j&j&?https://docs.python.org/3/library/io.html#io.BufferedIOBase.rawj tio.FileIO.mode(j&j&8https://docs.python.org/3/library/io.html#io.FileIO.modej tio.FileIO.name(j&j&8https://docs.python.org/3/library/io.html#io.FileIO.namej tio.IOBase.closed(j&j&:https://docs.python.org/3/library/io.html#io.IOBase.closedj tio.TextIOBase.buffer(j&j&>https://docs.python.org/3/library/io.html#io.TextIOBase.bufferj tio.TextIOBase.encoding(j&j&@https://docs.python.org/3/library/io.html#io.TextIOBase.encodingj tio.TextIOBase.errors(j&j&>https://docs.python.org/3/library/io.html#io.TextIOBase.errorsj tio.TextIOBase.newlines(j&j&@https://docs.python.org/3/library/io.html#io.TextIOBase.newlinesj tio.TextIOWrapper.line_buffering(j&j&Ihttps://docs.python.org/3/library/io.html#io.TextIOWrapper.line_bufferingj tio.TextIOWrapper.write_through(j&j&Hhttps://docs.python.org/3/library/io.html#io.TextIOWrapper.write_throughj t ipaddress.IPv4Address.compressed(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.compressedj tipaddress.IPv4Address.exploded(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.explodedj tipaddress.IPv4Address.is_global(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_globalj t#ipaddress.IPv4Address.is_link_local(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_link_localj t!ipaddress.IPv4Address.is_loopback(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_loopbackj t"ipaddress.IPv4Address.is_multicast(j&j&Shttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_multicastj t ipaddress.IPv4Address.is_private(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_privatej t!ipaddress.IPv4Address.is_reserved(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_reservedj t$ipaddress.IPv4Address.is_unspecified(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_unspecifiedj t#ipaddress.IPv4Address.max_prefixlen(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.max_prefixlenj tipaddress.IPv4Address.packed(j&j&Mhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.packedj t%ipaddress.IPv4Address.reverse_pointer(j&j&Vhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.reverse_pointerj tipaddress.IPv4Address.version(j&j&Nhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.versionj tipaddress.IPv4Interface.ip(j&j&Khttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.ipj tipaddress.IPv4Interface.network(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.networkj t%ipaddress.IPv4Interface.with_hostmask(j&j&Vhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.with_hostmaskj t$ipaddress.IPv4Interface.with_netmask(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.with_netmaskj t&ipaddress.IPv4Interface.with_prefixlen(j&j&Whttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.with_prefixlenj t'ipaddress.IPv4Network.broadcast_address(j&j&Xhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.broadcast_addressj t ipaddress.IPv4Network.compressed(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.compressedj tipaddress.IPv4Network.exploded(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.explodedj tipaddress.IPv4Network.hostmask(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.hostmaskj t#ipaddress.IPv4Network.is_link_local(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_link_localj t!ipaddress.IPv4Network.is_loopback(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_loopbackj t"ipaddress.IPv4Network.is_multicast(j&j&Shttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_multicastj t ipaddress.IPv4Network.is_private(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_privatej t!ipaddress.IPv4Network.is_reserved(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_reservedj t$ipaddress.IPv4Network.is_unspecified(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_unspecifiedj t#ipaddress.IPv4Network.max_prefixlen(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.max_prefixlenj tipaddress.IPv4Network.netmask(j&j&Nhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.netmaskj t%ipaddress.IPv4Network.network_address(j&j&Vhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.network_addressj t#ipaddress.IPv4Network.num_addresses(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.num_addressesj tipaddress.IPv4Network.prefixlen(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.prefixlenj tipaddress.IPv4Network.version(j&j&Nhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.versionj t#ipaddress.IPv4Network.with_hostmask(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.with_hostmaskj t"ipaddress.IPv4Network.with_netmask(j&j&Shttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.with_netmaskj t$ipaddress.IPv4Network.with_prefixlen(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.with_prefixlenj t ipaddress.IPv6Address.compressed(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.compressedj tipaddress.IPv6Address.exploded(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.explodedj t!ipaddress.IPv6Address.ipv4_mapped(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.ipv4_mappedj tipaddress.IPv6Address.is_global(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_globalj t#ipaddress.IPv6Address.is_link_local(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_link_localj t!ipaddress.IPv6Address.is_loopback(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_loopbackj t"ipaddress.IPv6Address.is_multicast(j&j&Shttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_multicastj t ipaddress.IPv6Address.is_private(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_privatej t!ipaddress.IPv6Address.is_reserved(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_reservedj t#ipaddress.IPv6Address.is_site_local(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_site_localj t$ipaddress.IPv6Address.is_unspecified(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_unspecifiedj t#ipaddress.IPv6Address.max_prefixlen(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.max_prefixlenj tipaddress.IPv6Address.packed(j&j&Mhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.packedj t%ipaddress.IPv6Address.reverse_pointer(j&j&Vhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.reverse_pointerj tipaddress.IPv6Address.scope_id(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.scope_idj tipaddress.IPv6Address.sixtofour(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.sixtofourj tipaddress.IPv6Address.teredo(j&j&Mhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.teredoj tipaddress.IPv6Address.version(j&j&Nhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.versionj tipaddress.IPv6Interface.ip(j&j&Khttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.ipj tipaddress.IPv6Interface.network(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.networkj t%ipaddress.IPv6Interface.with_hostmask(j&j&Vhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.with_hostmaskj t$ipaddress.IPv6Interface.with_netmask(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.with_netmaskj t&ipaddress.IPv6Interface.with_prefixlen(j&j&Whttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.with_prefixlenj t'ipaddress.IPv6Network.broadcast_address(j&j&Xhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.broadcast_addressj t ipaddress.IPv6Network.compressed(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.compressedj tipaddress.IPv6Network.exploded(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.explodedj tipaddress.IPv6Network.hostmask(j&j&Ohttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.hostmaskj t#ipaddress.IPv6Network.is_link_local(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_link_localj t!ipaddress.IPv6Network.is_loopback(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_loopbackj t"ipaddress.IPv6Network.is_multicast(j&j&Shttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_multicastj t ipaddress.IPv6Network.is_private(j&j&Qhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_privatej t!ipaddress.IPv6Network.is_reserved(j&j&Rhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_reservedj t#ipaddress.IPv6Network.is_site_local(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_site_localj t$ipaddress.IPv6Network.is_unspecified(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_unspecifiedj t#ipaddress.IPv6Network.max_prefixlen(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.max_prefixlenj tipaddress.IPv6Network.netmask(j&j&Nhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.netmaskj t%ipaddress.IPv6Network.network_address(j&j&Vhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.network_addressj t#ipaddress.IPv6Network.num_addresses(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.num_addressesj tipaddress.IPv6Network.prefixlen(j&j&Phttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.prefixlenj tipaddress.IPv6Network.version(j&j&Nhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.versionj t#ipaddress.IPv6Network.with_hostmask(j&j&Thttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.with_hostmaskj t"ipaddress.IPv6Network.with_netmask(j&j&Shttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.with_netmaskj t$ipaddress.IPv6Network.with_prefixlen(j&j&Uhttps://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.with_prefixlenj tjson.JSONDecodeError.colno(j&j&Fhttps://docs.python.org/3/library/json.html#json.JSONDecodeError.colnoj tjson.JSONDecodeError.doc(j&j&Dhttps://docs.python.org/3/library/json.html#json.JSONDecodeError.docj tjson.JSONDecodeError.lineno(j&j&Ghttps://docs.python.org/3/library/json.html#json.JSONDecodeError.linenoj tjson.JSONDecodeError.msg(j&j&Dhttps://docs.python.org/3/library/json.html#json.JSONDecodeError.msgj tjson.JSONDecodeError.pos(j&j&Dhttps://docs.python.org/3/library/json.html#json.JSONDecodeError.posj tlogging.Logger.disabled(j&j&Fhttps://docs.python.org/3/library/logging.html#logging.Logger.disabledj tlogging.Logger.handlers(j&j&Fhttps://docs.python.org/3/library/logging.html#logging.Logger.handlersj tlogging.Logger.level(j&j&Chttps://docs.python.org/3/library/logging.html#logging.Logger.levelj tlogging.Logger.name(j&j&Bhttps://docs.python.org/3/library/logging.html#logging.Logger.namej tlogging.Logger.parent(j&j&Dhttps://docs.python.org/3/library/logging.html#logging.Logger.parentj tlogging.Logger.propagate(j&j&Ghttps://docs.python.org/3/library/logging.html#logging.Logger.propagatej tlogging.LoggerAdapter._log(j&j&Ihttps://docs.python.org/3/library/logging.html#logging.LoggerAdapter._logj tlogging.LoggerAdapter.manager(j&j&Lhttps://docs.python.org/3/library/logging.html#logging.LoggerAdapter.managerj t logging.StreamHandler.terminator(j&j&Xhttps://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler.terminatorj t*logging.handlers.BaseRotatingHandler.namer(j&j&bhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandler.namerj t,logging.handlers.BaseRotatingHandler.rotator(j&j&dhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandler.rotatorj t&logging.handlers.QueueHandler.listener(j&j&^https://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueHandler.listenerj tlogging.lastResort(j&j&Ahttps://docs.python.org/3/library/logging.html#logging.lastResortj tlogging.raiseExceptions(j&j&Fhttps://docs.python.org/3/library/logging.html#logging.raiseExceptionsj tlzma.LZMADecompressor.check(j&j&Ghttps://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.checkj tlzma.LZMADecompressor.eof(j&j&Ehttps://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.eofj t!lzma.LZMADecompressor.needs_input(j&j&Mhttps://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.needs_inputj t!lzma.LZMADecompressor.unused_data(j&j&Mhttps://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.unused_dataj tmailbox.Maildir.colon(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.colonj tmemoryview.c_contiguous(j&j&Ghttps://docs.python.org/3/library/stdtypes.html#memoryview.c_contiguousj tmemoryview.contiguous(j&j&Ehttps://docs.python.org/3/library/stdtypes.html#memoryview.contiguousj tmemoryview.f_contiguous(j&j&Ghttps://docs.python.org/3/library/stdtypes.html#memoryview.f_contiguousj tmemoryview.format(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#memoryview.formatj tmemoryview.itemsize(j&j&Chttps://docs.python.org/3/library/stdtypes.html#memoryview.itemsizej tmemoryview.nbytes(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#memoryview.nbytesj tmemoryview.ndim(j&j&?https://docs.python.org/3/library/stdtypes.html#memoryview.ndimj tmemoryview.obj(j&j&>https://docs.python.org/3/library/stdtypes.html#memoryview.objj tmemoryview.readonly(j&j&Chttps://docs.python.org/3/library/stdtypes.html#memoryview.readonlyj tmemoryview.shape(j&j&@https://docs.python.org/3/library/stdtypes.html#memoryview.shapej tmemoryview.strides(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#memoryview.stridesj tmemoryview.suboffsets(j&j&Ehttps://docs.python.org/3/library/stdtypes.html#memoryview.suboffsetsj tmethod.__doc__(j&j&Ahttps://docs.python.org/3/reference/datamodel.html#method.__doc__j tmethod.__func__(j&j&Bhttps://docs.python.org/3/reference/datamodel.html#method.__func__j tmethod.__module__(j&j&Dhttps://docs.python.org/3/reference/datamodel.html#method.__module__j tmethod.__name__(j&j&Bhttps://docs.python.org/3/reference/datamodel.html#method.__name__j tmethod.__self__(j&j&Bhttps://docs.python.org/3/reference/datamodel.html#method.__self__j t!mimetypes.MimeTypes.encodings_map(j&j&Rhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.encodings_mapj tmimetypes.MimeTypes.suffix_map(j&j&Ohttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.suffix_mapj tmimetypes.MimeTypes.types_map(j&j&Nhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.types_mapj t!mimetypes.MimeTypes.types_map_inv(j&j&Rhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.types_map_invj tmmap.mmap.closed(j&j&https://docs.python.org/3/library/netrc.html#netrc.netrc.hostsj tnetrc.netrc.macros(j&j&?https://docs.python.org/3/library/netrc.html#netrc.netrc.macrosj t nntplib.NNTP.nntp_implementation(j&j&Ohttps://docs.python.org/3/library/nntplib.html#nntplib.NNTP.nntp_implementationj tnntplib.NNTP.nntp_version(j&j&Hhttps://docs.python.org/3/library/nntplib.html#nntplib.NNTP.nntp_versionj tnntplib.NNTPError.response(j&j&Ihttps://docs.python.org/3/library/nntplib.html#nntplib.NNTPError.responsej tnumbers.Complex.imag(j&j&Chttps://docs.python.org/3/library/numbers.html#numbers.Complex.imagj tnumbers.Complex.real(j&j&Chttps://docs.python.org/3/library/numbers.html#numbers.Complex.realj tnumbers.Rational.denominator(j&j&Khttps://docs.python.org/3/library/numbers.html#numbers.Rational.denominatorj tnumbers.Rational.numerator(j&j&Ihttps://docs.python.org/3/library/numbers.html#numbers.Rational.numeratorj tobject.__dict__(j&j&?https://docs.python.org/3/library/stdtypes.html#object.__dict__j tobject.__objclass__(j&j&Fhttps://docs.python.org/3/reference/datamodel.html#object.__objclass__j toptparse.Option.ACTIONS(j&j&Ghttps://docs.python.org/3/library/optparse.html#optparse.Option.ACTIONSj t$optparse.Option.ALWAYS_TYPED_ACTIONS(j&j&Thttps://docs.python.org/3/library/optparse.html#optparse.Option.ALWAYS_TYPED_ACTIONSj toptparse.Option.STORE_ACTIONS(j&j&Mhttps://docs.python.org/3/library/optparse.html#optparse.Option.STORE_ACTIONSj toptparse.Option.TYPED_ACTIONS(j&j&Mhttps://docs.python.org/3/library/optparse.html#optparse.Option.TYPED_ACTIONSj toptparse.Option.TYPES(j&j&Ehttps://docs.python.org/3/library/optparse.html#optparse.Option.TYPESj toptparse.Option.TYPE_CHECKER(j&j&Lhttps://docs.python.org/3/library/optparse.html#optparse.Option.TYPE_CHECKERj toptparse.Option.action(j&j&Fhttps://docs.python.org/3/library/optparse.html#optparse.Option.actionj toptparse.Option.callback(j&j&Hhttps://docs.python.org/3/library/optparse.html#optparse.Option.callbackj toptparse.Option.callback_args(j&j&Mhttps://docs.python.org/3/library/optparse.html#optparse.Option.callback_argsj toptparse.Option.callback_kwargs(j&j&Ohttps://docs.python.org/3/library/optparse.html#optparse.Option.callback_kwargsj toptparse.Option.choices(j&j&Ghttps://docs.python.org/3/library/optparse.html#optparse.Option.choicesj toptparse.Option.const(j&j&Ehttps://docs.python.org/3/library/optparse.html#optparse.Option.constj toptparse.Option.default(j&j&Ghttps://docs.python.org/3/library/optparse.html#optparse.Option.defaultj toptparse.Option.dest(j&j&Dhttps://docs.python.org/3/library/optparse.html#optparse.Option.destj toptparse.Option.help(j&j&Dhttps://docs.python.org/3/library/optparse.html#optparse.Option.helpj toptparse.Option.metavar(j&j&Ghttps://docs.python.org/3/library/optparse.html#optparse.Option.metavarj toptparse.Option.nargs(j&j&Ehttps://docs.python.org/3/library/optparse.html#optparse.Option.nargsj toptparse.Option.type(j&j&Dhttps://docs.python.org/3/library/optparse.html#optparse.Option.typej tos.DirEntry.name(j&j&:https://docs.python.org/3/library/os.html#os.DirEntry.namej tos.DirEntry.path(j&j&:https://docs.python.org/3/library/os.html#os.DirEntry.pathj tos.sched_param.sched_priority(j&j&Ghttps://docs.python.org/3/library/os.html#os.sched_param.sched_priorityj tos.stat_result.st_atime(j&j&Ahttps://docs.python.org/3/library/os.html#os.stat_result.st_atimej tos.stat_result.st_atime_ns(j&j&Dhttps://docs.python.org/3/library/os.html#os.stat_result.st_atime_nsj tos.stat_result.st_birthtime(j&j&Ehttps://docs.python.org/3/library/os.html#os.stat_result.st_birthtimej tos.stat_result.st_birthtime_ns(j&j&Hhttps://docs.python.org/3/library/os.html#os.stat_result.st_birthtime_nsj tos.stat_result.st_blksize(j&j&Chttps://docs.python.org/3/library/os.html#os.stat_result.st_blksizej tos.stat_result.st_blocks(j&j&Bhttps://docs.python.org/3/library/os.html#os.stat_result.st_blocksj tos.stat_result.st_creator(j&j&Chttps://docs.python.org/3/library/os.html#os.stat_result.st_creatorj tos.stat_result.st_ctime(j&j&Ahttps://docs.python.org/3/library/os.html#os.stat_result.st_ctimej tos.stat_result.st_ctime_ns(j&j&Dhttps://docs.python.org/3/library/os.html#os.stat_result.st_ctime_nsj tos.stat_result.st_dev(j&j&?https://docs.python.org/3/library/os.html#os.stat_result.st_devj t!os.stat_result.st_file_attributes(j&j&Khttps://docs.python.org/3/library/os.html#os.stat_result.st_file_attributesj tos.stat_result.st_flags(j&j&Ahttps://docs.python.org/3/library/os.html#os.stat_result.st_flagsj tos.stat_result.st_fstype(j&j&Bhttps://docs.python.org/3/library/os.html#os.stat_result.st_fstypej tos.stat_result.st_gen(j&j&?https://docs.python.org/3/library/os.html#os.stat_result.st_genj tos.stat_result.st_gid(j&j&?https://docs.python.org/3/library/os.html#os.stat_result.st_gidj tos.stat_result.st_ino(j&j&?https://docs.python.org/3/library/os.html#os.stat_result.st_inoj tos.stat_result.st_mode(j&j&@https://docs.python.org/3/library/os.html#os.stat_result.st_modej tos.stat_result.st_mtime(j&j&Ahttps://docs.python.org/3/library/os.html#os.stat_result.st_mtimej tos.stat_result.st_mtime_ns(j&j&Dhttps://docs.python.org/3/library/os.html#os.stat_result.st_mtime_nsj tos.stat_result.st_nlink(j&j&Ahttps://docs.python.org/3/library/os.html#os.stat_result.st_nlinkj tos.stat_result.st_rdev(j&j&@https://docs.python.org/3/library/os.html#os.stat_result.st_rdevj tos.stat_result.st_reparse_tag(j&j&Ghttps://docs.python.org/3/library/os.html#os.stat_result.st_reparse_tagj tos.stat_result.st_rsize(j&j&Ahttps://docs.python.org/3/library/os.html#os.stat_result.st_rsizej tos.stat_result.st_size(j&j&@https://docs.python.org/3/library/os.html#os.stat_result.st_sizej tos.stat_result.st_type(j&j&@https://docs.python.org/3/library/os.html#os.stat_result.st_typej tos.stat_result.st_uid(j&j&?https://docs.python.org/3/library/os.html#os.stat_result.st_uidj tos.terminal_size.columns(j&j&Bhttps://docs.python.org/3/library/os.html#os.terminal_size.columnsj tos.terminal_size.lines(j&j&@https://docs.python.org/3/library/os.html#os.terminal_size.linesj t#ossaudiodev.oss_audio_device.closed(j&j&Vhttps://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.closedj t!ossaudiodev.oss_audio_device.mode(j&j&Thttps://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.modej t!ossaudiodev.oss_audio_device.name(j&j&Thttps://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.namej tpathlib.PurePath.anchor(j&j&Fhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.anchorj tpathlib.PurePath.drive(j&j&Ehttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.drivej tpathlib.PurePath.name(j&j&Dhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.namej tpathlib.PurePath.parent(j&j&Fhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.parentj tpathlib.PurePath.parents(j&j&Ghttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.parentsj tpathlib.PurePath.parts(j&j&Ehttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.partsj tpathlib.PurePath.root(j&j&Dhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.rootj tpathlib.PurePath.stem(j&j&Dhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.stemj tpathlib.PurePath.suffix(j&j&Fhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.suffixj tpathlib.PurePath.suffixes(j&j&Hhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePath.suffixesj tpickle.Pickler.dispatch_table(j&j&Khttps://docs.python.org/3/library/pickle.html#pickle.Pickler.dispatch_tablej tpickle.Pickler.fast(j&j&Ahttps://docs.python.org/3/library/pickle.html#pickle.Pickler.fastj t+py_compile.PycInvalidationMode.CHECKED_HASH(j&j&]https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode.CHECKED_HASHj t(py_compile.PycInvalidationMode.TIMESTAMP(j&j&Zhttps://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode.TIMESTAMPj t-py_compile.PycInvalidationMode.UNCHECKED_HASH(j&j&_https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode.UNCHECKED_HASHj tpyclbr.Class.children(j&j&Chttps://docs.python.org/3/library/pyclbr.html#pyclbr.Class.childrenj tpyclbr.Class.file(j&j&?https://docs.python.org/3/library/pyclbr.html#pyclbr.Class.filej tpyclbr.Class.lineno(j&j&Ahttps://docs.python.org/3/library/pyclbr.html#pyclbr.Class.linenoj tpyclbr.Class.methods(j&j&Bhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Class.methodsj tpyclbr.Class.module(j&j&Ahttps://docs.python.org/3/library/pyclbr.html#pyclbr.Class.modulej tpyclbr.Class.name(j&j&?https://docs.python.org/3/library/pyclbr.html#pyclbr.Class.namej tpyclbr.Class.parent(j&j&Ahttps://docs.python.org/3/library/pyclbr.html#pyclbr.Class.parentj tpyclbr.Class.super(j&j&@https://docs.python.org/3/library/pyclbr.html#pyclbr.Class.superj tpyclbr.Function.children(j&j&Fhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.childrenj tpyclbr.Function.file(j&j&Bhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.filej tpyclbr.Function.is_async(j&j&Fhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.is_asyncj tpyclbr.Function.lineno(j&j&Dhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.linenoj tpyclbr.Function.module(j&j&Dhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.modulej tpyclbr.Function.name(j&j&Bhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.namej tpyclbr.Function.parent(j&j&Dhttps://docs.python.org/3/library/pyclbr.html#pyclbr.Function.parentj t range.start(j&j&;https://docs.python.org/3/library/stdtypes.html#range.startj t range.step(j&j&:https://docs.python.org/3/library/stdtypes.html#range.stepj t range.stop(j&j&:https://docs.python.org/3/library/stdtypes.html#range.stopj tre.Match.endpos(j&j&9https://docs.python.org/3/library/re.html#re.Match.endposj tre.Match.lastgroup(j&j&https://docs.python.org/3/library/shlex.html#shlex.shlex.debugj tshlex.shlex.eof(j&j&https://docs.python.org/3/library/shlex.html#shlex.shlex.tokenj tshlex.shlex.whitespace(j&j&Chttps://docs.python.org/3/library/shlex.html#shlex.shlex.whitespacej tshlex.shlex.whitespace_split(j&j&Ihttps://docs.python.org/3/library/shlex.html#shlex.shlex.whitespace_splitj tshlex.shlex.wordchars(j&j&Bhttps://docs.python.org/3/library/shlex.html#shlex.shlex.wordcharsj t$shutil.rmtree.avoids_symlink_attacks(j&j&Rhttps://docs.python.org/3/library/shutil.html#shutil.rmtree.avoids_symlink_attacksj t slice.start(j&j&https://docs.python.org/3/library/ssl.html#ssl.SSLError.reasonj tssl.SSLSession.has_ticket(j&j&Dhttps://docs.python.org/3/library/ssl.html#ssl.SSLSession.has_ticketj tssl.SSLSession.id(j&j&https://docs.python.org/3/library/ssl.html#ssl.SSLSession.timej tssl.SSLSession.timeout(j&j&Ahttps://docs.python.org/3/library/ssl.html#ssl.SSLSession.timeoutj tssl.SSLSocket.context(j&j&@https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.contextj tssl.SSLSocket.server_hostname(j&j&Hhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.server_hostnamej tssl.SSLSocket.server_side(j&j&Dhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.server_sidej tssl.SSLSocket.session(j&j&@https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.sessionj tssl.SSLSocket.session_reused(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.session_reusedj t ssl.TLSVersion.MAXIMUM_SUPPORTED(j&j&Khttps://docs.python.org/3/library/ssl.html#ssl.TLSVersion.MAXIMUM_SUPPORTEDj t ssl.TLSVersion.MINIMUM_SUPPORTED(j&j&Khttps://docs.python.org/3/library/ssl.html#ssl.TLSVersion.MINIMUM_SUPPORTEDj tssl.TLSVersion.SSLv3(j&j&?https://docs.python.org/3/library/ssl.html#ssl.TLSVersion.SSLv3j tssl.TLSVersion.TLSv1(j&j&?https://docs.python.org/3/library/ssl.html#ssl.TLSVersion.TLSv1j tssl.TLSVersion.TLSv1_1(j&j&Ahttps://docs.python.org/3/library/ssl.html#ssl.TLSVersion.TLSv1_1j tssl.TLSVersion.TLSv1_2(j&j&Ahttps://docs.python.org/3/library/ssl.html#ssl.TLSVersion.TLSv1_2j tssl.TLSVersion.TLSv1_3(j&j&Ahttps://docs.python.org/3/library/ssl.html#ssl.TLSVersion.TLSv1_3j tstatistics.NormalDist.mean(j&j&Lhttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.meanj tstatistics.NormalDist.median(j&j&Nhttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.medianj tstatistics.NormalDist.mode(j&j&Lhttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.modej tstatistics.NormalDist.stdev(j&j&Mhttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.stdevj tstatistics.NormalDist.variance(j&j&Phttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.variancej tstring.Template.template(j&j&Fhttps://docs.python.org/3/library/string.html#string.Template.templatej tstruct.Struct.format(j&j&Bhttps://docs.python.org/3/library/struct.html#struct.Struct.formatj tstruct.Struct.size(j&j&@https://docs.python.org/3/library/struct.html#struct.Struct.sizej t!subprocess.CalledProcessError.cmd(j&j&Shttps://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.cmdj t$subprocess.CalledProcessError.output(j&j&Vhttps://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.outputj t(subprocess.CalledProcessError.returncode(j&j&Zhttps://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.returncodej t$subprocess.CalledProcessError.stderr(j&j&Vhttps://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.stderrj t$subprocess.CalledProcessError.stdout(j&j&Vhttps://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.stdoutj t subprocess.CompletedProcess.args(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess.argsj t&subprocess.CompletedProcess.returncode(j&j&Xhttps://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess.returncodej t"subprocess.CompletedProcess.stderr(j&j&Thttps://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess.stderrj t"subprocess.CompletedProcess.stdout(j&j&Thttps://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess.stdoutj tsubprocess.Popen.args(j&j&Ghttps://docs.python.org/3/library/subprocess.html#subprocess.Popen.argsj tsubprocess.Popen.pid(j&j&Fhttps://docs.python.org/3/library/subprocess.html#subprocess.Popen.pidj tsubprocess.Popen.returncode(j&j&Mhttps://docs.python.org/3/library/subprocess.html#subprocess.Popen.returncodej tsubprocess.Popen.stderr(j&j&Ihttps://docs.python.org/3/library/subprocess.html#subprocess.Popen.stderrj tsubprocess.Popen.stdin(j&j&Hhttps://docs.python.org/3/library/subprocess.html#subprocess.Popen.stdinj tsubprocess.Popen.stdout(j&j&Ihttps://docs.python.org/3/library/subprocess.html#subprocess.Popen.stdoutj tsubprocess.STARTUPINFO.dwFlags(j&j&Phttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.dwFlagsj t subprocess.STARTUPINFO.hStdError(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.hStdErrorj t subprocess.STARTUPINFO.hStdInput(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.hStdInputj t!subprocess.STARTUPINFO.hStdOutput(j&j&Shttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.hStdOutputj t&subprocess.STARTUPINFO.lpAttributeList(j&j&Xhttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.lpAttributeListj t"subprocess.STARTUPINFO.wShowWindow(j&j&Thttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.wShowWindowj tsubprocess.TimeoutExpired.cmd(j&j&Ohttps://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.cmdj t subprocess.TimeoutExpired.output(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.outputj t subprocess.TimeoutExpired.stderr(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.stderrj t subprocess.TimeoutExpired.stdout(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.stdoutj t!subprocess.TimeoutExpired.timeout(j&j&Shttps://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.timeoutj t'sys._emscripten_info.emscripten_version(j&j&Rhttps://docs.python.org/3/library/sys.html#sys._emscripten_info.emscripten_versionj tsys._emscripten_info.pthreads(j&j&Hhttps://docs.python.org/3/library/sys.html#sys._emscripten_info.pthreadsj tsys._emscripten_info.runtime(j&j&Ghttps://docs.python.org/3/library/sys.html#sys._emscripten_info.runtimej t"sys._emscripten_info.shared_memory(j&j&Mhttps://docs.python.org/3/library/sys.html#sys._emscripten_info.shared_memoryj tsys.flags.bytes_warning(j&j&Bhttps://docs.python.org/3/library/sys.html#sys.flags.bytes_warningj tsys.flags.debug(j&j&:https://docs.python.org/3/library/sys.html#sys.flags.debugj tsys.flags.dev_mode(j&j&=https://docs.python.org/3/library/sys.html#sys.flags.dev_modej tsys.flags.dont_write_bytecode(j&j&Hhttps://docs.python.org/3/library/sys.html#sys.flags.dont_write_bytecodej tsys.flags.hash_randomization(j&j&Ghttps://docs.python.org/3/library/sys.html#sys.flags.hash_randomizationj tsys.flags.ignore_environment(j&j&Ghttps://docs.python.org/3/library/sys.html#sys.flags.ignore_environmentj tsys.flags.inspect(j&j&https://docs.python.org/3/library/sys.html#sys.flags.safe_pathj tsys.flags.utf8_mode(j&j&>https://docs.python.org/3/library/sys.html#sys.flags.utf8_modej tsys.flags.verbose(j&j&https://docs.python.org/3/library/sys.html#sys.hash_info.widthj tsys.int_info.bits_per_digit(j&j&Fhttps://docs.python.org/3/library/sys.html#sys.int_info.bits_per_digitj t#sys.int_info.default_max_str_digits(j&j&Nhttps://docs.python.org/3/library/sys.html#sys.int_info.default_max_str_digitsj tsys.int_info.sizeof_digit(j&j&Dhttps://docs.python.org/3/library/sys.html#sys.int_info.sizeof_digitj t'sys.int_info.str_digits_check_threshold(j&j&Rhttps://docs.python.org/3/library/sys.html#sys.int_info.str_digits_check_thresholdj tsys.thread_info.lock(j&j&?https://docs.python.org/3/library/sys.html#sys.thread_info.lockj tsys.thread_info.name(j&j&?https://docs.python.org/3/library/sys.html#sys.thread_info.namej tsys.thread_info.version(j&j&Bhttps://docs.python.org/3/library/sys.html#sys.thread_info.versionj ttarfile.FilterError.tarinfo(j&j&Jhttps://docs.python.org/3/library/tarfile.html#tarfile.FilterError.tarinfoj ttarfile.TarFile.errorlevel(j&j&Ihttps://docs.python.org/3/library/tarfile.html#tarfile.TarFile.errorlevelj t!tarfile.TarFile.extraction_filter(j&j&Phttps://docs.python.org/3/library/tarfile.html#tarfile.TarFile.extraction_filterj ttarfile.TarFile.pax_headers(j&j&Jhttps://docs.python.org/3/library/tarfile.html#tarfile.TarFile.pax_headersj ttarfile.TarInfo.chksum(j&j&Ehttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.chksumj ttarfile.TarInfo.devmajor(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.devmajorj ttarfile.TarInfo.devminor(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.devminorj ttarfile.TarInfo.gid(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.gidj ttarfile.TarInfo.gname(j&j&Dhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.gnamej ttarfile.TarInfo.linkname(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.linknamej ttarfile.TarInfo.mode(j&j&Chttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.modej ttarfile.TarInfo.mtime(j&j&Dhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.mtimej ttarfile.TarInfo.name(j&j&Chttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.namej ttarfile.TarInfo.offset(j&j&Ehttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.offsetj ttarfile.TarInfo.offset_data(j&j&Jhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.offset_dataj ttarfile.TarInfo.pax_headers(j&j&Jhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.pax_headersj ttarfile.TarInfo.size(j&j&Chttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.sizej ttarfile.TarInfo.sparse(j&j&Ehttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.sparsej ttarfile.TarInfo.type(j&j&Chttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.typej ttarfile.TarInfo.uid(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.uidj ttarfile.TarInfo.uname(j&j&Dhttps://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.unamej t tempfile.TemporaryDirectory.name(j&j&Phttps://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectory.namej t%textwrap.TextWrapper.break_long_words(j&j&Uhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.break_long_wordsj t%textwrap.TextWrapper.break_on_hyphens(j&j&Uhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.break_on_hyphensj t$textwrap.TextWrapper.drop_whitespace(j&j&Thttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.drop_whitespacej t textwrap.TextWrapper.expand_tabs(j&j&Phttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.expand_tabsj t)textwrap.TextWrapper.fix_sentence_endings(j&j&Yhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.fix_sentence_endingsj t#textwrap.TextWrapper.initial_indent(j&j&Shttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.initial_indentj ttextwrap.TextWrapper.max_lines(j&j&Nhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.max_linesj t textwrap.TextWrapper.placeholder(j&j&Phttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.placeholderj t'textwrap.TextWrapper.replace_whitespace(j&j&Whttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.replace_whitespacej t&textwrap.TextWrapper.subsequent_indent(j&j&Vhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.subsequent_indentj ttextwrap.TextWrapper.tabsize(j&j&Lhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.tabsizej ttextwrap.TextWrapper.width(j&j&Jhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.widthj tthreading.Barrier.broken(j&j&Ihttps://docs.python.org/3/library/threading.html#threading.Barrier.brokenj tthreading.Barrier.n_waiting(j&j&Lhttps://docs.python.org/3/library/threading.html#threading.Barrier.n_waitingj tthreading.Barrier.parties(j&j&Jhttps://docs.python.org/3/library/threading.html#threading.Barrier.partiesj tthreading.Thread.daemon(j&j&Hhttps://docs.python.org/3/library/threading.html#threading.Thread.daemonj tthreading.Thread.ident(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Thread.identj tthreading.Thread.name(j&j&Fhttps://docs.python.org/3/library/threading.html#threading.Thread.namej tthreading.Thread.native_id(j&j&Khttps://docs.python.org/3/library/threading.html#threading.Thread.native_idj ttime.struct_time.tm_gmtoff(j&j&Fhttps://docs.python.org/3/library/time.html#time.struct_time.tm_gmtoffj ttime.struct_time.tm_hour(j&j&Dhttps://docs.python.org/3/library/time.html#time.struct_time.tm_hourj ttime.struct_time.tm_isdst(j&j&Ehttps://docs.python.org/3/library/time.html#time.struct_time.tm_isdstj ttime.struct_time.tm_mday(j&j&Dhttps://docs.python.org/3/library/time.html#time.struct_time.tm_mdayj ttime.struct_time.tm_min(j&j&Chttps://docs.python.org/3/library/time.html#time.struct_time.tm_minj ttime.struct_time.tm_mon(j&j&Chttps://docs.python.org/3/library/time.html#time.struct_time.tm_monj ttime.struct_time.tm_sec(j&j&Chttps://docs.python.org/3/library/time.html#time.struct_time.tm_secj ttime.struct_time.tm_wday(j&j&Dhttps://docs.python.org/3/library/time.html#time.struct_time.tm_wdayj ttime.struct_time.tm_yday(j&j&Dhttps://docs.python.org/3/library/time.html#time.struct_time.tm_ydayj ttime.struct_time.tm_year(j&j&Dhttps://docs.python.org/3/library/time.html#time.struct_time.tm_yearj ttime.struct_time.tm_zone(j&j&Dhttps://docs.python.org/3/library/time.html#time.struct_time.tm_zonej ttkinter.Tk.children(j&j&Bhttps://docs.python.org/3/library/tkinter.html#tkinter.Tk.childrenj ttkinter.Tk.master(j&j&@https://docs.python.org/3/library/tkinter.html#tkinter.Tk.masterj t tkinter.Tk.tk(j&j&https://docs.python.org/3/library/uuid.html#uuid.SafeUUID.safej tuuid.SafeUUID.unknown(j&j&Ahttps://docs.python.org/3/library/uuid.html#uuid.SafeUUID.unknownj tuuid.SafeUUID.unsafe(j&j&@https://docs.python.org/3/library/uuid.html#uuid.SafeUUID.unsafej tuuid.UUID.bytes(j&j&;https://docs.python.org/3/library/uuid.html#uuid.UUID.bytesj tuuid.UUID.bytes_le(j&j&>https://docs.python.org/3/library/uuid.html#uuid.UUID.bytes_lej tuuid.UUID.clock_seq(j&j&?https://docs.python.org/3/library/uuid.html#uuid.UUID.clock_seqj tuuid.UUID.clock_seq_hi_variant(j&j&Jhttps://docs.python.org/3/library/uuid.html#uuid.UUID.clock_seq_hi_variantj tuuid.UUID.clock_seq_low(j&j&Chttps://docs.python.org/3/library/uuid.html#uuid.UUID.clock_seq_lowj tuuid.UUID.fields(j&j&https://docs.python.org/3/library/uuid.html#uuid.UUID.time_lowj tuuid.UUID.time_mid(j&j&>https://docs.python.org/3/library/uuid.html#uuid.UUID.time_midj t uuid.UUID.urn(j&j&9https://docs.python.org/3/library/uuid.html#uuid.UUID.urnj tuuid.UUID.variant(j&j&=https://docs.python.org/3/library/uuid.html#uuid.UUID.variantj tuuid.UUID.version(j&j&=https://docs.python.org/3/library/uuid.html#uuid.UUID.versionj tweakref.finalize.alive(j&j&Ehttps://docs.python.org/3/library/weakref.html#weakref.finalize.alivej tweakref.finalize.atexit(j&j&Fhttps://docs.python.org/3/library/weakref.html#weakref.finalize.atexitj tweakref.ref.__callback__(j&j&Ghttps://docs.python.org/3/library/weakref.html#weakref.ref.__callback__j twebbrowser.name(j&j&Ahttps://docs.python.org/3/library/webbrowser.html#webbrowser.namej t'wsgiref.handlers.BaseHandler.error_body(j&j&Vhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_bodyj t*wsgiref.handlers.BaseHandler.error_headers(j&j&Yhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_headersj t)wsgiref.handlers.BaseHandler.error_status(j&j&Xhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_statusj t)wsgiref.handlers.BaseHandler.http_version(j&j&Xhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.http_versionj t*wsgiref.handlers.BaseHandler.origin_server(j&j&Yhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.origin_serverj t'wsgiref.handlers.BaseHandler.os_environ(j&j&Vhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.os_environj t,wsgiref.handlers.BaseHandler.server_software(j&j&[https://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.server_softwarej t,wsgiref.handlers.BaseHandler.traceback_limit(j&j&[https://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.traceback_limitj t.wsgiref.handlers.BaseHandler.wsgi_file_wrapper(j&j&]https://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_file_wrapperj t.wsgiref.handlers.BaseHandler.wsgi_multiprocess(j&j&]https://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_multiprocessj t-wsgiref.handlers.BaseHandler.wsgi_multithread(j&j&\https://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_multithreadj t*wsgiref.handlers.BaseHandler.wsgi_run_once(j&j&Yhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_run_oncej txml.dom.Attr.localName(j&j&Ehttps://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.localNamej txml.dom.Attr.name(j&j&@https://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.namej txml.dom.Attr.prefix(j&j&Bhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.prefixj txml.dom.Attr.value(j&j&Ahttps://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.valuej txml.dom.Comment.data(j&j&Chttps://docs.python.org/3/library/xml.dom.html#xml.dom.Comment.dataj t xml.dom.Document.documentElement(j&j&Ohttps://docs.python.org/3/library/xml.dom.html#xml.dom.Document.documentElementj txml.dom.DocumentType.entities(j&j&Lhttps://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.entitiesj t#xml.dom.DocumentType.internalSubset(j&j&Rhttps://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.internalSubsetj txml.dom.DocumentType.name(j&j&Hhttps://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.namej txml.dom.DocumentType.notations(j&j&Mhttps://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.notationsj txml.dom.DocumentType.publicId(j&j&Lhttps://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.publicIdj txml.dom.DocumentType.systemId(j&j&Lhttps://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.systemIdj txml.dom.Element.tagName(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Element.tagNamej txml.dom.NamedNodeMap.length(j&j&Jhttps://docs.python.org/3/library/xml.dom.html#xml.dom.NamedNodeMap.lengthj txml.dom.Node.attributes(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.attributesj txml.dom.Node.childNodes(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.childNodesj txml.dom.Node.firstChild(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.firstChildj txml.dom.Node.lastChild(j&j&Ehttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.lastChildj txml.dom.Node.localName(j&j&Ehttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.localNamej txml.dom.Node.namespaceURI(j&j&Hhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.namespaceURIj txml.dom.Node.nextSibling(j&j&Ghttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nextSiblingj txml.dom.Node.nodeName(j&j&Dhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeNamej txml.dom.Node.nodeType(j&j&Dhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeTypej txml.dom.Node.nodeValue(j&j&Ehttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeValuej txml.dom.Node.parentNode(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.parentNodej txml.dom.Node.prefix(j&j&Bhttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.prefixj txml.dom.Node.previousSibling(j&j&Khttps://docs.python.org/3/library/xml.dom.html#xml.dom.Node.previousSiblingj txml.dom.NodeList.length(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.NodeList.lengthj t"xml.dom.ProcessingInstruction.data(j&j&Qhttps://docs.python.org/3/library/xml.dom.html#xml.dom.ProcessingInstruction.dataj t$xml.dom.ProcessingInstruction.target(j&j&Shttps://docs.python.org/3/library/xml.dom.html#xml.dom.ProcessingInstruction.targetj txml.dom.Text.data(j&j&@https://docs.python.org/3/library/xml.dom.html#xml.dom.Text.dataj t$xml.etree.ElementTree.Element.attrib(j&j&ahttps://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.attribj t!xml.etree.ElementTree.Element.tag(j&j&^https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.tagj t"xml.etree.ElementTree.Element.tail(j&j&_https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.tailj t"xml.etree.ElementTree.Element.text(j&j&_https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.textj t%xml.etree.ElementTree.ParseError.code(j&j&bhttps://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ParseError.codej t)xml.etree.ElementTree.ParseError.position(j&j&fhttps://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ParseError.positionj t!xml.parsers.expat.ExpatError.code(j&j&Phttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatError.codej t#xml.parsers.expat.ExpatError.lineno(j&j&Rhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatError.linenoj t#xml.parsers.expat.ExpatError.offset(j&j&Rhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatError.offsetj t,xml.parsers.expat.xmlparser.CurrentByteIndex(j&j&[https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CurrentByteIndexj t/xml.parsers.expat.xmlparser.CurrentColumnNumber(j&j&^https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CurrentColumnNumberj t-xml.parsers.expat.xmlparser.CurrentLineNumber(j&j&\https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CurrentLineNumberj t*xml.parsers.expat.xmlparser.ErrorByteIndex(j&j&Yhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorByteIndexj t%xml.parsers.expat.xmlparser.ErrorCode(j&j&Thttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorCodej t-xml.parsers.expat.xmlparser.ErrorColumnNumber(j&j&\https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorColumnNumberj t+xml.parsers.expat.xmlparser.ErrorLineNumber(j&j&Zhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorLineNumberj t'xml.parsers.expat.xmlparser.buffer_size(j&j&Vhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_sizej t'xml.parsers.expat.xmlparser.buffer_text(j&j&Vhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_textj t'xml.parsers.expat.xmlparser.buffer_used(j&j&Vhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_usedj t.xml.parsers.expat.xmlparser.ordered_attributes(j&j&]https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ordered_attributesj t0xml.parsers.expat.xmlparser.specified_attributes(j&j&_https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.specified_attributesj txmlrpc.client.Binary.data(j&j&Nhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Binary.dataj txmlrpc.client.Fault.faultCode(j&j&Rhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Fault.faultCodej txmlrpc.client.Fault.faultString(j&j&Thttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Fault.faultStringj t#xmlrpc.client.ProtocolError.errcode(j&j&Xhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.errcodej t"xmlrpc.client.ProtocolError.errmsg(j&j&Whttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.errmsgj t#xmlrpc.client.ProtocolError.headers(j&j&Xhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.headersj txmlrpc.client.ProtocolError.url(j&j&Thttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.urlj t2xmlrpc.server.SimpleXMLRPCRequestHandler.rpc_paths(j&j&ghttps://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCRequestHandler.rpc_pathsj tzipfile.Path.name(j&j&@https://docs.python.org/3/library/zipfile.html#zipfile.Path.namej tzipfile.ZipFile.comment(j&j&Fhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.commentj tzipfile.ZipFile.debug(j&j&Dhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.debugj tzipfile.ZipFile.filename(j&j&Ghttps://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.filenamej tzipfile.ZipInfo.CRC(j&j&Bhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.CRCj tzipfile.ZipInfo.comment(j&j&Fhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.commentj tzipfile.ZipInfo.compress_size(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.compress_sizej tzipfile.ZipInfo.compress_type(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.compress_typej tzipfile.ZipInfo.create_system(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.create_systemj tzipfile.ZipInfo.create_version(j&j&Mhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.create_versionj tzipfile.ZipInfo.date_time(j&j&Hhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.date_timej tzipfile.ZipInfo.external_attr(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.external_attrj tzipfile.ZipInfo.extra(j&j&Dhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.extraj tzipfile.ZipInfo.extract_version(j&j&Nhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.extract_versionj tzipfile.ZipInfo.file_size(j&j&Hhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.file_sizej tzipfile.ZipInfo.filename(j&j&Ghttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.filenamej tzipfile.ZipInfo.flag_bits(j&j&Hhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.flag_bitsj tzipfile.ZipInfo.header_offset(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.header_offsetj tzipfile.ZipInfo.internal_attr(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.internal_attrj tzipfile.ZipInfo.reserved(j&j&Ghttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.reservedj tzipfile.ZipInfo.volume(j&j&Ehttps://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.volumej tzipimport.zipimporter.archive(j&j&Nhttps://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.archivej tzipimport.zipimporter.prefix(j&j&Mhttps://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.prefixj tzlib.Decompress.eof(j&j&?https://docs.python.org/3/library/zlib.html#zlib.Decompress.eofj tzlib.Decompress.unconsumed_tail(j&j&Khttps://docs.python.org/3/library/zlib.html#zlib.Decompress.unconsumed_tailj tzlib.Decompress.unused_data(j&j&Ghttps://docs.python.org/3/library/zlib.html#zlib.Decompress.unused_dataj tzoneinfo.ZoneInfo.key(j&j&Ehttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.ZoneInfo.keyj tu py:method}(BaseException.add_note(j&j&Hhttps://docs.python.org/3/library/exceptions.html#BaseException.add_notej tBaseException.with_traceback(j&j&Nhttps://docs.python.org/3/library/exceptions.html#BaseException.with_tracebackj tBaseExceptionGroup.derive(j&j&Khttps://docs.python.org/3/library/exceptions.html#BaseExceptionGroup.derivej tBaseExceptionGroup.split(j&j&Jhttps://docs.python.org/3/library/exceptions.html#BaseExceptionGroup.splitj tBaseExceptionGroup.subgroup(j&j&Mhttps://docs.python.org/3/library/exceptions.html#BaseExceptionGroup.subgroupj t'__future__._Feature.getMandatoryRelease(j&j&Whttps://docs.python.org/3/library/__future__.html#future__._Feature.getMandatoryReleasej t&__future__._Feature.getOptionalRelease(j&j&Vhttps://docs.python.org/3/library/__future__.html#future__._Feature.getOptionalReleasej t_thread.lock.acquire(j&j&Bhttps://docs.python.org/3/library/_thread.html#thread.lock.acquirej t_thread.lock.locked(j&j&Ahttps://docs.python.org/3/library/_thread.html#thread.lock.lockedj t_thread.lock.release(j&j&Bhttps://docs.python.org/3/library/_thread.html#thread.lock.releasej t$_tkinter.Widget.tk.createfilehandler(j&j&Rhttps://docs.python.org/3/library/tkinter.html#tkinter.Widget.tk.createfilehandlerj t$_tkinter.Widget.tk.deletefilehandler(j&j&Rhttps://docs.python.org/3/library/tkinter.html#tkinter.Widget.tk.deletefilehandlerj tabc.ABCMeta.__subclasshook__(j&j&Ghttps://docs.python.org/3/library/abc.html#abc.ABCMeta.__subclasshook__j tabc.ABCMeta.register(j&j&?https://docs.python.org/3/library/abc.html#abc.ABCMeta.registerj tagen.__anext__(j&j&Chttps://docs.python.org/3/reference/expressions.html#agen.__anext__j t agen.aclose(j&j&@https://docs.python.org/3/reference/expressions.html#agen.aclosej t agen.asend(j&j&?https://docs.python.org/3/reference/expressions.html#agen.asendj t agen.athrow(j&j&@https://docs.python.org/3/reference/expressions.html#agen.athrowj taifc.aifc.aifc(j&j&:https://docs.python.org/3/library/aifc.html#aifc.aifc.aifcj taifc.aifc.aiff(j&j&:https://docs.python.org/3/library/aifc.html#aifc.aifc.aiffj taifc.aifc.close(j&j&;https://docs.python.org/3/library/aifc.html#aifc.aifc.closej taifc.aifc.getcompname(j&j&Ahttps://docs.python.org/3/library/aifc.html#aifc.aifc.getcompnamej taifc.aifc.getcomptype(j&j&Ahttps://docs.python.org/3/library/aifc.html#aifc.aifc.getcomptypej taifc.aifc.getframerate(j&j&Bhttps://docs.python.org/3/library/aifc.html#aifc.aifc.getframeratej taifc.aifc.getmark(j&j&=https://docs.python.org/3/library/aifc.html#aifc.aifc.getmarkj taifc.aifc.getmarkers(j&j&@https://docs.python.org/3/library/aifc.html#aifc.aifc.getmarkersj taifc.aifc.getnchannels(j&j&Bhttps://docs.python.org/3/library/aifc.html#aifc.aifc.getnchannelsj taifc.aifc.getnframes(j&j&@https://docs.python.org/3/library/aifc.html#aifc.aifc.getnframesj taifc.aifc.getparams(j&j&?https://docs.python.org/3/library/aifc.html#aifc.aifc.getparamsj taifc.aifc.getsampwidth(j&j&Bhttps://docs.python.org/3/library/aifc.html#aifc.aifc.getsampwidthj taifc.aifc.readframes(j&j&@https://docs.python.org/3/library/aifc.html#aifc.aifc.readframesj taifc.aifc.rewind(j&j&https://docs.python.org/3/library/array.html#array.array.countj tarray.array.extend(j&j&?https://docs.python.org/3/library/array.html#array.array.extendj tarray.array.frombytes(j&j&Bhttps://docs.python.org/3/library/array.html#array.array.frombytesj tarray.array.fromfile(j&j&Ahttps://docs.python.org/3/library/array.html#array.array.fromfilej tarray.array.fromlist(j&j&Ahttps://docs.python.org/3/library/array.html#array.array.fromlistj tarray.array.fromunicode(j&j&Dhttps://docs.python.org/3/library/array.html#array.array.fromunicodej tarray.array.index(j&j&>https://docs.python.org/3/library/array.html#array.array.indexj tarray.array.insert(j&j&?https://docs.python.org/3/library/array.html#array.array.insertj tarray.array.pop(j&j&https://docs.python.org/3/library/bdb.html#bdb.Bdb.clear_breakj tbdb.Bdb.dispatch_call(j&j&@https://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_callj tbdb.Bdb.dispatch_exception(j&j&Ehttps://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_exceptionj tbdb.Bdb.dispatch_line(j&j&@https://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_linej tbdb.Bdb.dispatch_return(j&j&Bhttps://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_returnj tbdb.Bdb.do_clear(j&j&;https://docs.python.org/3/library/bdb.html#bdb.Bdb.do_clearj tbdb.Bdb.format_stack_entry(j&j&Ehttps://docs.python.org/3/library/bdb.html#bdb.Bdb.format_stack_entryj tbdb.Bdb.get_all_breaks(j&j&Ahttps://docs.python.org/3/library/bdb.html#bdb.Bdb.get_all_breaksj tbdb.Bdb.get_bpbynumber(j&j&Ahttps://docs.python.org/3/library/bdb.html#bdb.Bdb.get_bpbynumberj tbdb.Bdb.get_break(j&j&https://docs.python.org/3/library/bdb.html#bdb.Bdb.user_returnj tbdb.Breakpoint.bpformat(j&j&Bhttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.bpformatj tbdb.Breakpoint.bpprint(j&j&Ahttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.bpprintj tbdb.Breakpoint.deleteMe(j&j&Bhttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.deleteMej tbdb.Breakpoint.disable(j&j&Ahttps://docs.python.org/3/library/bdb.html#bdb.Breakpoint.disablej tbdb.Breakpoint.enable(j&j&@https://docs.python.org/3/library/bdb.html#bdb.Breakpoint.enablej tbytearray.capitalize(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#bytearray.capitalizej tbytearray.center(j&j&@https://docs.python.org/3/library/stdtypes.html#bytearray.centerj tbytearray.count(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.countj tbytearray.decode(j&j&@https://docs.python.org/3/library/stdtypes.html#bytearray.decodej tbytearray.endswith(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#bytearray.endswithj tbytearray.expandtabs(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#bytearray.expandtabsj tbytearray.find(j&j&>https://docs.python.org/3/library/stdtypes.html#bytearray.findj tbytearray.fromhex(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.fromhexj t bytearray.hex(j&j&=https://docs.python.org/3/library/stdtypes.html#bytearray.hexj tbytearray.index(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.indexj tbytearray.isalnum(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.isalnumj tbytearray.isalpha(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.isalphaj tbytearray.isascii(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.isasciij tbytearray.isdigit(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.isdigitj tbytearray.islower(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.islowerj tbytearray.isspace(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.isspacej tbytearray.istitle(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.istitlej tbytearray.isupper(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.isupperj tbytearray.join(j&j&>https://docs.python.org/3/library/stdtypes.html#bytearray.joinj tbytearray.ljust(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.ljustj tbytearray.lower(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.lowerj tbytearray.lstrip(j&j&@https://docs.python.org/3/library/stdtypes.html#bytearray.lstripj tbytearray.maketrans(j&j&Chttps://docs.python.org/3/library/stdtypes.html#bytearray.maketransj tbytearray.partition(j&j&Chttps://docs.python.org/3/library/stdtypes.html#bytearray.partitionj tbytearray.removeprefix(j&j&Fhttps://docs.python.org/3/library/stdtypes.html#bytearray.removeprefixj tbytearray.removesuffix(j&j&Fhttps://docs.python.org/3/library/stdtypes.html#bytearray.removesuffixj tbytearray.replace(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#bytearray.replacej tbytearray.rfind(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.rfindj tbytearray.rindex(j&j&@https://docs.python.org/3/library/stdtypes.html#bytearray.rindexj tbytearray.rjust(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.rjustj tbytearray.rpartition(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#bytearray.rpartitionj tbytearray.rsplit(j&j&@https://docs.python.org/3/library/stdtypes.html#bytearray.rsplitj tbytearray.rstrip(j&j&@https://docs.python.org/3/library/stdtypes.html#bytearray.rstripj tbytearray.split(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.splitj tbytearray.splitlines(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#bytearray.splitlinesj tbytearray.startswith(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#bytearray.startswithj tbytearray.strip(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.stripj tbytearray.swapcase(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#bytearray.swapcasej tbytearray.title(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.titlej tbytearray.translate(j&j&Chttps://docs.python.org/3/library/stdtypes.html#bytearray.translatej tbytearray.upper(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.upperj tbytearray.zfill(j&j&?https://docs.python.org/3/library/stdtypes.html#bytearray.zfillj tbytes.capitalize(j&j&@https://docs.python.org/3/library/stdtypes.html#bytes.capitalizej t bytes.center(j&j&https://docs.python.org/3/library/stdtypes.html#bytes.endswithj tbytes.expandtabs(j&j&@https://docs.python.org/3/library/stdtypes.html#bytes.expandtabsj t bytes.find(j&j&:https://docs.python.org/3/library/stdtypes.html#bytes.findj t bytes.fromhex(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.fromhexj t bytes.hex(j&j&9https://docs.python.org/3/library/stdtypes.html#bytes.hexj t bytes.index(j&j&;https://docs.python.org/3/library/stdtypes.html#bytes.indexj t bytes.isalnum(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.isalnumj t bytes.isalpha(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.isalphaj t bytes.isascii(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.isasciij t bytes.isdigit(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.isdigitj t bytes.islower(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.islowerj t bytes.isspace(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.isspacej t bytes.istitle(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.istitlej t bytes.isupper(j&j&=https://docs.python.org/3/library/stdtypes.html#bytes.isupperj t bytes.join(j&j&:https://docs.python.org/3/library/stdtypes.html#bytes.joinj t bytes.ljust(j&j&;https://docs.python.org/3/library/stdtypes.html#bytes.ljustSj t bytes.lower(j&j&;https://docs.python.org/3/library/stdtypes.html#bytes.lowerj t bytes.lstrip(j&j&https://docs.python.org/3/library/stdtypes.html#bytes.swapcasej t bytes.title(j&j&;https://docs.python.org/3/library/stdtypes.html#bytes.titlej tbytes.translate(j&j&?https://docs.python.org/3/library/stdtypes.html#bytes.translatej t bytes.upper(j&j&;https://docs.python.org/3/library/stdtypes.html#bytes.upperj t bytes.zfill(j&j&;https://docs.python.org/3/library/stdtypes.html#bytes.zfillj tbz2.BZ2Compressor.compress(j&j&Ehttps://docs.python.org/3/library/bz2.html#bz2.BZ2Compressor.compressj tbz2.BZ2Compressor.flush(j&j&Bhttps://docs.python.org/3/library/bz2.html#bz2.BZ2Compressor.flushj tbz2.BZ2Decompressor.decompress(j&j&Ihttps://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.decompressj tbz2.BZ2File.fileno(j&j&=https://docs.python.org/3/library/bz2.html#bz2.BZ2File.filenoj tbz2.BZ2File.peek(j&j&;https://docs.python.org/3/library/bz2.html#bz2.BZ2File.peekj tbz2.BZ2File.read1(j&j&https://docs.python.org/3/library/chunk.html#chunk.Chunk.closej tchunk.Chunk.getname(j&j&@https://docs.python.org/3/library/chunk.html#chunk.Chunk.getnamej tchunk.Chunk.getsize(j&j&@https://docs.python.org/3/library/chunk.html#chunk.Chunk.getsizej tchunk.Chunk.isatty(j&j&?https://docs.python.org/3/library/chunk.html#chunk.Chunk.isattyj tchunk.Chunk.read(j&j&=https://docs.python.org/3/library/chunk.html#chunk.Chunk.readj tchunk.Chunk.seek(j&j&=https://docs.python.org/3/library/chunk.html#chunk.Chunk.seekj tchunk.Chunk.skip(j&j&=https://docs.python.org/3/library/chunk.html#chunk.Chunk.skipj tchunk.Chunk.tell(j&j&=https://docs.python.org/3/library/chunk.html#chunk.Chunk.tellj tclass.__instancecheck__(j&j&Jhttps://docs.python.org/3/reference/datamodel.html#class.__instancecheck__j tclass.__subclasscheck__(j&j&Jhttps://docs.python.org/3/reference/datamodel.html#class.__subclasscheck__j tclass.__subclasses__(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#class.__subclasses__j t class.mro(j&j&9https://docs.python.org/3/library/stdtypes.html#class.mroj tcmd.Cmd.cmdloop(j&j&:https://docs.python.org/3/library/cmd.html#cmd.Cmd.cmdloopj tcmd.Cmd.columnize(j&j&https://docs.python.org/3/library/dbm.html#dbm.ndbm.ndbm.closej tdecimal.Context.Etiny(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Context.Etinyj tdecimal.Context.Etop(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Context.Etopj tdecimal.Context.abs(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Context.absj tdecimal.Context.add(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Context.addj tdecimal.Context.canonical(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.canonicalj tdecimal.Context.clear_flags(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.clear_flagsj tdecimal.Context.clear_traps(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.clear_trapsj tdecimal.Context.compare(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Context.comparej tdecimal.Context.compare_signal(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Context.compare_signalj tdecimal.Context.compare_total(j&j&Lhttps://docs.python.org/3/library/decimal.html#decimal.Context.compare_totalj t!decimal.Context.compare_total_mag(j&j&Phttps://docs.python.org/3/library/decimal.html#decimal.Context.compare_total_magj tdecimal.Context.copy(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Context.copyj tdecimal.Context.copy_abs(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Context.copy_absj tdecimal.Context.copy_decimal(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Context.copy_decimalj tdecimal.Context.copy_negate(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.copy_negatej tdecimal.Context.copy_sign(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.copy_signj tdecimal.Context.create_decimal(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Context.create_decimalj t)decimal.Context.create_decimal_from_float(j&j&Xhttps://docs.python.org/3/library/decimal.html#decimal.Context.create_decimal_from_floatj tdecimal.Context.divide(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Context.dividej tdecimal.Context.divide_int(j&j&Ihttps://docs.python.org/3/library/decimal.html#decimal.Context.divide_intj tdecimal.Context.divmod(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Context.divmodj tdecimal.Context.exp(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Context.expj tdecimal.Context.fma(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Context.fmaj tdecimal.Context.is_canonical(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Context.is_canonicalj tdecimal.Context.is_finite(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_finitej tdecimal.Context.is_infinite(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_infinitej tdecimal.Context.is_nan(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Context.is_nanj tdecimal.Context.is_normal(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_normalj tdecimal.Context.is_qnan(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_qnanj tdecimal.Context.is_signed(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_signedj tdecimal.Context.is_snan(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_snanj tdecimal.Context.is_subnormal(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Context.is_subnormalj tdecimal.Context.is_zero(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Context.is_zeroj tdecimal.Context.ln(j&j&Ahttps://docs.python.org/3/library/decimal.html#decimal.Context.lnj tdecimal.Context.log10(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Context.log10j tdecimal.Context.logb(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Context.logbj tdecimal.Context.logical_and(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.logical_andj tdecimal.Context.logical_invert(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Context.logical_invertj tdecimal.Context.logical_or(j&j&Ihttps://docs.python.org/3/library/decimal.html#decimal.Context.logical_orj tdecimal.Context.logical_xor(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.logical_xorj tdecimal.Context.max(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Context.maxj tdecimal.Context.max_mag(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Context.max_magj tdecimal.Context.min(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Context.minj tdecimal.Context.min_mag(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Context.min_magj tdecimal.Context.minus(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Context.minusj tdecimal.Context.multiply(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Context.multiplyj tdecimal.Context.next_minus(j&j&Ihttps://docs.python.org/3/library/decimal.html#decimal.Context.next_minusj tdecimal.Context.next_plus(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.next_plusj tdecimal.Context.next_toward(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Context.next_towardj tdecimal.Context.normalize(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.normalizej tdecimal.Context.number_class(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Context.number_classj tdecimal.Context.plus(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Context.plusj tdecimal.Context.power(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Context.powerj tdecimal.Context.quantize(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Context.quantizej tdecimal.Context.radix(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Context.radixj tdecimal.Context.remainder(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Context.remainderj tdecimal.Context.remainder_near(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Context.remainder_nearj tdecimal.Context.rotate(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Context.rotatej tdecimal.Context.same_quantum(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Context.same_quantumj tdecimal.Context.scaleb(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Context.scalebj tdecimal.Context.shift(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Context.shiftj tdecimal.Context.sqrt(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Context.sqrtj tdecimal.Context.subtract(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Context.subtractj tdecimal.Context.to_eng_string(j&j&Lhttps://docs.python.org/3/library/decimal.html#decimal.Context.to_eng_stringj t!decimal.Context.to_integral_exact(j&j&Phttps://docs.python.org/3/library/decimal.html#decimal.Context.to_integral_exactj tdecimal.Context.to_sci_string(j&j&Lhttps://docs.python.org/3/library/decimal.html#decimal.Context.to_sci_stringj tdecimal.Decimal.adjusted(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Decimal.adjustedj t decimal.Decimal.as_integer_ratio(j&j&Ohttps://docs.python.org/3/library/decimal.html#decimal.Decimal.as_integer_ratioj tdecimal.Decimal.as_tuple(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Decimal.as_tuplej tdecimal.Decimal.canonical(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.canonicalj tdecimal.Decimal.compare(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.comparej tdecimal.Decimal.compare_signal(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.compare_signalj tdecimal.Decimal.compare_total(j&j&Lhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.compare_totalj t!decimal.Decimal.compare_total_mag(j&j&Phttps://docs.python.org/3/library/decimal.html#decimal.Decimal.compare_total_magj tdecimal.Decimal.conjugate(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.conjugatej tdecimal.Decimal.copy_abs(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Decimal.copy_absj tdecimal.Decimal.copy_negate(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.copy_negatej tdecimal.Decimal.copy_sign(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.copy_signj tdecimal.Decimal.exp(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.expj tdecimal.Decimal.fma(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.fmaj tdecimal.Decimal.from_float(j&j&Ihttps://docs.python.org/3/library/decimal.html#decimal.Decimal.from_floatj tdecimal.Decimal.is_canonical(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_canonicalj tdecimal.Decimal.is_finite(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_finitej tdecimal.Decimal.is_infinite(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_infinitej tdecimal.Decimal.is_nan(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_nanj tdecimal.Decimal.is_normal(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_normalj tdecimal.Decimal.is_qnan(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_qnanj tdecimal.Decimal.is_signed(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_signedj tdecimal.Decimal.is_snan(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_snanj tdecimal.Decimal.is_subnormal(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_subnormalj tdecimal.Decimal.is_zero(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.is_zeroj tdecimal.Decimal.ln(j&j&Ahttps://docs.python.org/3/library/decimal.html#decimal.Decimal.lnj tdecimal.Decimal.log10(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.log10j tdecimal.Decimal.logb(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Decimal.logbj tdecimal.Decimal.logical_and(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_andj tdecimal.Decimal.logical_invert(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_invertj tdecimal.Decimal.logical_or(j&j&Ihttps://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_orj tdecimal.Decimal.logical_xor(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_xorj tdecimal.Decimal.max(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.maxj tdecimal.Decimal.max_mag(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.max_magj tdecimal.Decimal.min(j&j&Bhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.minj tdecimal.Decimal.min_mag(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.min_magj tdecimal.Decimal.next_minus(j&j&Ihttps://docs.python.org/3/library/decimal.html#decimal.Decimal.next_minusj tdecimal.Decimal.next_plus(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.next_plusj tdecimal.Decimal.next_toward(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.next_towardj tdecimal.Decimal.normalize(j&j&Hhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.normalizej tdecimal.Decimal.number_class(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Decimal.number_classj tdecimal.Decimal.quantize(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.Decimal.quantizej tdecimal.Decimal.radix(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.radixj tdecimal.Decimal.remainder_near(j&j&Mhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.remainder_nearj tdecimal.Decimal.rotate(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Decimal.rotatej tdecimal.Decimal.same_quantum(j&j&Khttps://docs.python.org/3/library/decimal.html#decimal.Decimal.same_quantumj tdecimal.Decimal.scaleb(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.Decimal.scalebj tdecimal.Decimal.shift(j&j&Dhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.shiftj tdecimal.Decimal.sqrt(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.Decimal.sqrtj tdecimal.Decimal.to_eng_string(j&j&Lhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.to_eng_stringj tdecimal.Decimal.to_integral(j&j&Jhttps://docs.python.org/3/library/decimal.html#decimal.Decimal.to_integralj t!decimal.Decimal.to_integral_exact(j&j&Phttps://docs.python.org/3/library/decimal.html#decimal.Decimal.to_integral_exactj t!decimal.Decimal.to_integral_value(j&j&Phttps://docs.python.org/3/library/decimal.html#decimal.Decimal.to_integral_valuej t dict.clear(j&j&:https://docs.python.org/3/library/stdtypes.html#dict.clearj t dict.copy(j&j&9https://docs.python.org/3/library/stdtypes.html#dict.copyj t dict.fromkeys(j&j&=https://docs.python.org/3/library/stdtypes.html#dict.fromkeysj tdict.get(j&j&8https://docs.python.org/3/library/stdtypes.html#dict.getj t dict.items(j&j&:https://docs.python.org/3/library/stdtypes.html#dict.itemsj t dict.keys(j&j&9https://docs.python.org/3/library/stdtypes.html#dict.keysj tdict.pop(j&j&8https://docs.python.org/3/library/stdtypes.html#dict.popj t dict.popitem(j&j&https://docs.python.org/3/library/enum.html#enum.Enum.__init__j tenum.Enum.__init_subclass__(j&j&Ghttps://docs.python.org/3/library/enum.html#enum.Enum.__init_subclass__j tenum.Enum.__new__(j&j&=https://docs.python.org/3/library/enum.html#enum.Enum.__new__j tenum.Enum.__repr__(j&j&>https://docs.python.org/3/library/enum.html#enum.Enum.__repr__j tenum.Enum.__str__(j&j&=https://docs.python.org/3/library/enum.html#enum.Enum.__str__j tenum.Enum._generate_next_value_(j&j&Khttps://docs.python.org/3/library/enum.html#enum.Enum._generate_next_value_j tenum.Enum._missing_(j&j&?https://docs.python.org/3/library/enum.html#enum.Enum._missing_j tenum.EnumType.__call__(j&j&Bhttps://docs.python.org/3/library/enum.html#enum.EnumType.__call__j tenum.EnumType.__contains__(j&j&Fhttps://docs.python.org/3/library/enum.html#enum.EnumType.__contains__j tenum.EnumType.__dir__(j&j&Ahttps://docs.python.org/3/library/enum.html#enum.EnumType.__dir__j tenum.EnumType.__getitem__(j&j&Ehttps://docs.python.org/3/library/enum.html#enum.EnumType.__getitem__j tenum.EnumType.__iter__(j&j&Bhttps://docs.python.org/3/library/enum.html#enum.EnumType.__iter__j tenum.EnumType.__len__(j&j&Ahttps://docs.python.org/3/library/enum.html#enum.EnumType.__len__j tenum.EnumType.__reversed__(j&j&Fhttps://docs.python.org/3/library/enum.html#enum.EnumType.__reversed__j tenum.Flag.__and__(j&j&=https://docs.python.org/3/library/enum.html#enum.Flag.__and__j tenum.Flag.__contains__(j&j&Bhttps://docs.python.org/3/library/enum.html#enum.Flag.__contains__j tenum.Flag.__or__(j&j&https://docs.python.org/3/reference/datamodel.html#frame.clearj t frozenset.add(j&j&=https://docs.python.org/3/library/stdtypes.html#frozenset.addj tfrozenset.clear(j&j&?https://docs.python.org/3/library/stdtypes.html#frozenset.clearj tfrozenset.copy(j&j&>https://docs.python.org/3/library/stdtypes.html#frozenset.copyj tfrozenset.difference(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#frozenset.differencej tfrozenset.difference_update(j&j&Khttps://docs.python.org/3/library/stdtypes.html#frozenset.difference_updatej tfrozenset.discard(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#frozenset.discardj tfrozenset.intersection(j&j&Fhttps://docs.python.org/3/library/stdtypes.html#frozenset.intersectionj tfrozenset.intersection_update(j&j&Mhttps://docs.python.org/3/library/stdtypes.html#frozenset.intersection_updatej tfrozenset.isdisjoint(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#frozenset.isdisjointj tfrozenset.issubset(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#frozenset.issubsetj tfrozenset.issuperset(j&j&Dhttps://docs.python.org/3/library/stdtypes.html#frozenset.issupersetj t frozenset.pop(j&j&=https://docs.python.org/3/library/stdtypes.html#frozenset.popj tfrozenset.remove(j&j&@https://docs.python.org/3/library/stdtypes.html#frozenset.removej tfrozenset.symmetric_difference(j&j&Nhttps://docs.python.org/3/library/stdtypes.html#frozenset.symmetric_differencej t%frozenset.symmetric_difference_update(j&j&Uhttps://docs.python.org/3/library/stdtypes.html#frozenset.symmetric_difference_updatej tfrozenset.union(j&j&?https://docs.python.org/3/library/stdtypes.html#frozenset.unionj tfrozenset.update(j&j&@https://docs.python.org/3/library/stdtypes.html#frozenset.updatej tftplib.FTP.abort(j&j&>https://docs.python.org/3/library/ftplib.html#ftplib.FTP.abortj tftplib.FTP.close(j&j&>https://docs.python.org/3/library/ftplib.html#ftplib.FTP.closej tftplib.FTP.connect(j&j&@https://docs.python.org/3/library/ftplib.html#ftplib.FTP.connectj tftplib.FTP.cwd(j&j&https://docs.python.org/3/library/ftplib.html#ftplib.FTP.loginj tftplib.FTP.mkd(j&j&https://docs.python.org/3/library/gzip.html#gzip.GzipFile.peekj thashlib.hash.copy(j&j&@https://docs.python.org/3/library/hashlib.html#hashlib.hash.copyj thashlib.hash.digest(j&j&Bhttps://docs.python.org/3/library/hashlib.html#hashlib.hash.digestj thashlib.hash.hexdigest(j&j&Ehttps://docs.python.org/3/library/hashlib.html#hashlib.hash.hexdigestj thashlib.hash.update(j&j&Bhttps://docs.python.org/3/library/hashlib.html#hashlib.hash.updatej thashlib.shake.digest(j&j&Chttps://docs.python.org/3/library/hashlib.html#hashlib.shake.digestj thashlib.shake.hexdigest(j&j&Fhttps://docs.python.org/3/library/hashlib.html#hashlib.shake.hexdigestj thmac.HMAC.copy(j&j&:https://docs.python.org/3/library/hmac.html#hmac.HMAC.copyj thmac.HMAC.digest(j&j&https://docs.python.org/3/library/stdtypes.html#int.bit_lengthj tint.from_bytes(j&j&>https://docs.python.org/3/library/stdtypes.html#int.from_bytesj tint.is_integer(j&j&>https://docs.python.org/3/library/stdtypes.html#int.is_integerj t int.to_bytes(j&j&https://docs.python.org/3/library/io.html#io.BytesIO.getbufferj tio.BytesIO.getvalue(j&j&=https://docs.python.org/3/library/io.html#io.BytesIO.getvaluej tio.BytesIO.read1(j&j&:https://docs.python.org/3/library/io.html#io.BytesIO.read1j tio.BytesIO.readinto1(j&j&>https://docs.python.org/3/library/io.html#io.BytesIO.readinto1j tio.IOBase.__del__(j&j&;https://docs.python.org/3/library/io.html#io.IOBase.__del__j tio.IOBase.close(j&j&9https://docs.python.org/3/library/io.html#io.IOBase.closej tio.IOBase.fileno(j&j&:https://docs.python.org/3/library/io.html#io.IOBase.filenoj tio.IOBase.flush(j&j&9https://docs.python.org/3/library/io.html#io.IOBase.flushj tio.IOBase.isatty(j&j&:https://docs.python.org/3/library/io.html#io.IOBase.isattyj tio.IOBase.readable(j&j&https://docs.python.org/3/library/io.html#io.IOBase.writelinesj tio.RawIOBase.read(j&j&;https://docs.python.org/3/library/io.html#io.RawIOBase.readj tio.RawIOBase.readall(j&j&>https://docs.python.org/3/library/io.html#io.RawIOBase.readallj tio.RawIOBase.readinto(j&j&?https://docs.python.org/3/library/io.html#io.RawIOBase.readintoj tio.RawIOBase.write(j&j&https://docs.python.org/3/library/io.html#io.StringIO.getvaluej tio.TextIOBase.detach(j&j&>https://docs.python.org/3/library/io.html#io.TextIOBase.detachj tio.TextIOBase.read(j&j&https://docs.python.org/3/library/lzma.html#lzma.LZMAFile.peekj tmailbox.Babyl.get_file(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Babyl.get_filej tmailbox.Babyl.get_labels(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.Babyl.get_labelsj tmailbox.Babyl.lock(j&j&Ahttps://docs.python.org/3/library/mailbox.html#mailbox.Babyl.lockj tmailbox.Babyl.unlock(j&j&Chttps://docs.python.org/3/library/mailbox.html#mailbox.Babyl.unlockj tmailbox.BabylMessage.add_label(j&j&Mhttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.add_labelj tmailbox.BabylMessage.get_labels(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.get_labelsj t mailbox.BabylMessage.get_visible(j&j&Ohttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.get_visiblej t!mailbox.BabylMessage.remove_label(j&j&Phttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.remove_labelj tmailbox.BabylMessage.set_labels(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.set_labelsj t mailbox.BabylMessage.set_visible(j&j&Ohttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.set_visiblej t#mailbox.BabylMessage.update_visible(j&j&Rhttps://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.update_visiblej tmailbox.MH.__delitem__(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.MH.__delitem__j tmailbox.MH.add_folder(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.MH.add_folderj tmailbox.MH.close(j&j&?https://docs.python.org/3/library/mailbox.html#mailbox.MH.closej tmailbox.MH.discard(j&j&Ahttps://docs.python.org/3/library/mailbox.html#mailbox.MH.discardj tmailbox.MH.flush(j&j&?https://docs.python.org/3/library/mailbox.html#mailbox.MH.flushj tmailbox.MH.get_file(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.MH.get_filej tmailbox.MH.get_folder(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.MH.get_folderj tmailbox.MH.get_sequences(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.MH.get_sequencesj tmailbox.MH.list_folders(j&j&Fhttps://docs.python.org/3/library/mailbox.html#mailbox.MH.list_foldersj tmailbox.MH.lock(j&j&>https://docs.python.org/3/library/mailbox.html#mailbox.MH.lockj tmailbox.MH.pack(j&j&>https://docs.python.org/3/library/mailbox.html#mailbox.MH.packj tmailbox.MH.remove(j&j&@https://docs.python.org/3/library/mailbox.html#mailbox.MH.removej tmailbox.MH.remove_folder(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.MH.remove_folderj tmailbox.MH.set_sequences(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.MH.set_sequencesj tmailbox.MH.unlock(j&j&@https://docs.python.org/3/library/mailbox.html#mailbox.MH.unlockj tmailbox.MHMessage.add_sequence(j&j&Mhttps://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.add_sequencej tmailbox.MHMessage.get_sequences(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.get_sequencesj t!mailbox.MHMessage.remove_sequence(j&j&Phttps://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.remove_sequencej tmailbox.MHMessage.set_sequences(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.set_sequencesj tmailbox.MMDF.get_file(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.MMDF.get_filej tmailbox.MMDF.lock(j&j&@https://docs.python.org/3/library/mailbox.html#mailbox.MMDF.lockj tmailbox.MMDF.unlock(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.MMDF.unlockj tmailbox.MMDFMessage.add_flag(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.add_flagj tmailbox.MMDFMessage.get_flags(j&j&Lhttps://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.get_flagsj tmailbox.MMDFMessage.get_from(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.get_fromj tmailbox.MMDFMessage.remove_flag(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.remove_flagj tmailbox.MMDFMessage.set_flags(j&j&Lhttps://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.set_flagsj tmailbox.MMDFMessage.set_from(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.set_fromj tmailbox.Mailbox.__contains__(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__contains__j tmailbox.Mailbox.__delitem__(j&j&Jhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__delitem__j tmailbox.Mailbox.__getitem__(j&j&Jhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__getitem__j tmailbox.Mailbox.__iter__(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__iter__j tmailbox.Mailbox.__len__(j&j&Fhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__len__j tmailbox.Mailbox.__setitem__(j&j&Jhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__setitem__j tmailbox.Mailbox.add(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.addj tmailbox.Mailbox.clear(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.clearj tmailbox.Mailbox.close(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.closej tmailbox.Mailbox.discard(j&j&Fhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.discardj tmailbox.Mailbox.flush(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.flushj tmailbox.Mailbox.get(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.getj tmailbox.Mailbox.get_bytes(j&j&Hhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_bytesj tmailbox.Mailbox.get_file(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_filej tmailbox.Mailbox.get_message(j&j&Jhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_messagej tmailbox.Mailbox.get_string(j&j&Ihttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_stringj tmailbox.Mailbox.items(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.itemsj tmailbox.Mailbox.iteritems(j&j&Hhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.iteritemsj tmailbox.Mailbox.iterkeys(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.iterkeysj tmailbox.Mailbox.itervalues(j&j&Ihttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.itervaluesj tmailbox.Mailbox.keys(j&j&Chttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.keysj tmailbox.Mailbox.lock(j&j&Chttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.lockj tmailbox.Mailbox.pop(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.popj tmailbox.Mailbox.popitem(j&j&Fhttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.popitemj tmailbox.Mailbox.remove(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.removej tmailbox.Mailbox.unlock(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.unlockj tmailbox.Mailbox.update(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.updatej tmailbox.Mailbox.values(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.valuesj tmailbox.Maildir.__setitem__(j&j&Jhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.__setitem__j tmailbox.Maildir.add(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.addj tmailbox.Maildir.add_folder(j&j&Ihttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.add_folderj tmailbox.Maildir.clean(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.cleanj tmailbox.Maildir.close(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.closej tmailbox.Maildir.flush(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.flushj tmailbox.Maildir.get_file(j&j&Ghttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.get_filej tmailbox.Maildir.get_folder(j&j&Ihttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.get_folderj tmailbox.Maildir.list_folders(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.list_foldersj tmailbox.Maildir.lock(j&j&Chttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.lockj tmailbox.Maildir.remove_folder(j&j&Lhttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.remove_folderj tmailbox.Maildir.unlock(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.unlockj tmailbox.Maildir.update(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.Maildir.updatej tmailbox.MaildirMessage.add_flag(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.add_flagj tmailbox.MaildirMessage.get_date(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_datej t mailbox.MaildirMessage.get_flags(j&j&Ohttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_flagsj tmailbox.MaildirMessage.get_info(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_infoj t!mailbox.MaildirMessage.get_subdir(j&j&Phttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_subdirj t"mailbox.MaildirMessage.remove_flag(j&j&Qhttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.remove_flagj tmailbox.MaildirMessage.set_date(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_datej t mailbox.MaildirMessage.set_flags(j&j&Ohttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_flagsj tmailbox.MaildirMessage.set_info(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_infoj t!mailbox.MaildirMessage.set_subdir(j&j&Phttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_subdirj tmailbox.mbox.get_file(j&j&Dhttps://docs.python.org/3/library/mailbox.html#mailbox.mbox.get_filej tmailbox.mbox.lock(j&j&@https://docs.python.org/3/library/mailbox.html#mailbox.mbox.lockj tmailbox.mbox.unlock(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.mbox.unlockj tmailbox.mboxMessage.add_flag(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.add_flagj tmailbox.mboxMessage.get_flags(j&j&Lhttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.get_flagsj tmailbox.mboxMessage.get_from(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.get_fromj tmailbox.mboxMessage.remove_flag(j&j&Nhttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.remove_flagj tmailbox.mboxMessage.set_flags(j&j&Lhttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.set_flagsj tmailbox.mboxMessage.set_from(j&j&Khttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.set_fromj tmemoryview.__eq__(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#memoryview.__eq__j tmemoryview.cast(j&j&?https://docs.python.org/3/library/stdtypes.html#memoryview.castj tmemoryview.hex(j&j&>https://docs.python.org/3/library/stdtypes.html#memoryview.hexj tmemoryview.release(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#memoryview.releasej tmemoryview.tobytes(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#memoryview.tobytesj tmemoryview.tolist(j&j&Ahttps://docs.python.org/3/library/stdtypes.html#memoryview.tolistj tmemoryview.toreadonly(j&j&Ehttps://docs.python.org/3/library/stdtypes.html#memoryview.toreadonlyj tmimetypes.MimeTypes.add_type(j&j&Mhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.add_typej t(mimetypes.MimeTypes.guess_all_extensions(j&j&Yhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.guess_all_extensionsj t#mimetypes.MimeTypes.guess_extension(j&j&Thttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.guess_extensionj tmimetypes.MimeTypes.guess_type(j&j&Ohttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.guess_typej tmimetypes.MimeTypes.read(j&j&Ihttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.readj t)mimetypes.MimeTypes.read_windows_registry(j&j&Zhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.read_windows_registryj tmimetypes.MimeTypes.readfp(j&j&Khttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.readfpj tmmap.mmap.close(j&j&;https://docs.python.org/3/library/mmap.html#mmap.mmap.closej tmmap.mmap.find(j&j&:https://docs.python.org/3/library/mmap.html#mmap.mmap.findj tmmap.mmap.flush(j&j&;https://docs.python.org/3/library/mmap.html#mmap.mmap.flushj tmmap.mmap.madvise(j&j&=https://docs.python.org/3/library/mmap.html#mmap.mmap.madvisej tmmap.mmap.move(j&j&:https://docs.python.org/3/library/mmap.html#mmap.mmap.movej tmmap.mmap.read(j&j&:https://docs.python.org/3/library/mmap.html#mmap.mmap.readj tmmap.mmap.read_byte(j&j&?https://docs.python.org/3/library/mmap.html#mmap.mmap.read_bytej tmmap.mmap.readline(j&j&>https://docs.python.org/3/library/mmap.html#mmap.mmap.readlinej tmmap.mmap.resize(j&j&https://docs.python.org/3/library/poplib.html#poplib.POP3.apopj tpoplib.POP3.capa(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.capaj tpoplib.POP3.dele(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.delej tpoplib.POP3.getwelcome(j&j&Dhttps://docs.python.org/3/library/poplib.html#poplib.POP3.getwelcomej tpoplib.POP3.list(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.listj tpoplib.POP3.noop(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.noopj tpoplib.POP3.pass_(j&j&?https://docs.python.org/3/library/poplib.html#poplib.POP3.pass_j tpoplib.POP3.quit(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.quitj tpoplib.POP3.retr(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.retrj tpoplib.POP3.rpop(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.rpopj tpoplib.POP3.rset(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.rsetj tpoplib.POP3.set_debuglevel(j&j&Hhttps://docs.python.org/3/library/poplib.html#poplib.POP3.set_debuglevelj tpoplib.POP3.stat(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.statj tpoplib.POP3.stls(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.stlsj tpoplib.POP3.top(j&j&=https://docs.python.org/3/library/poplib.html#poplib.POP3.topj tpoplib.POP3.uidl(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.uidlj tpoplib.POP3.user(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.userj tpoplib.POP3.utf8(j&j&>https://docs.python.org/3/library/poplib.html#poplib.POP3.utf8j tpprint.PrettyPrinter.format(j&j&Ihttps://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.formatj tpprint.PrettyPrinter.isreadable(j&j&Mhttps://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.isreadablej t pprint.PrettyPrinter.isrecursive(j&j&Nhttps://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.isrecursivej tpprint.PrettyPrinter.pformat(j&j&Jhttps://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.pformatj tpprint.PrettyPrinter.pprint(j&j&Ihttps://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.pprintj tprofile.Profile.create_stats(j&j&Khttps://docs.python.org/3/library/profile.html#profile.Profile.create_statsj tprofile.Profile.disable(j&j&Fhttps://docs.python.org/3/library/profile.html#profile.Profile.disablej tprofile.Profile.dump_stats(j&j&Ihttps://docs.python.org/3/library/profile.html#profile.Profile.dump_statsj tprofile.Profile.enable(j&j&Ehttps://docs.python.org/3/library/profile.html#profile.Profile.enablej tprofile.Profile.print_stats(j&j&Jhttps://docs.python.org/3/library/profile.html#profile.Profile.print_statsj tprofile.Profile.run(j&j&Bhttps://docs.python.org/3/library/profile.html#profile.Profile.runj tprofile.Profile.runcall(j&j&Fhttps://docs.python.org/3/library/profile.html#profile.Profile.runcallj tprofile.Profile.runctx(j&j&Ehttps://docs.python.org/3/library/profile.html#profile.Profile.runctxj tpstats.Stats.add(j&j&?https://docs.python.org/3/library/profile.html#pstats.Stats.addj tpstats.Stats.dump_stats(j&j&Fhttps://docs.python.org/3/library/profile.html#pstats.Stats.dump_statsj tpstats.Stats.get_stats_profile(j&j&Mhttps://docs.python.org/3/library/profile.html#pstats.Stats.get_stats_profilej tpstats.Stats.print_callees(j&j&Ihttps://docs.python.org/3/library/profile.html#pstats.Stats.print_calleesj tpstats.Stats.print_callers(j&j&Ihttps://docs.python.org/3/library/profile.html#pstats.Stats.print_callersj tpstats.Stats.print_stats(j&j&Ghttps://docs.python.org/3/library/profile.html#pstats.Stats.print_statsj tpstats.Stats.reverse_order(j&j&Ihttps://docs.python.org/3/library/profile.html#pstats.Stats.reverse_orderj tpstats.Stats.sort_stats(j&j&Fhttps://docs.python.org/3/library/profile.html#pstats.Stats.sort_statsj tpstats.Stats.strip_dirs(j&j&Fhttps://docs.python.org/3/library/profile.html#pstats.Stats.strip_dirsj tqueue.Queue.empty(j&j&>https://docs.python.org/3/library/queue.html#queue.Queue.emptyj tqueue.Queue.full(j&j&=https://docs.python.org/3/library/queue.html#queue.Queue.fullj tqueue.Queue.get(j&j&https://docs.python.org/3/library/queue.html#queue.Queue.qsizej tqueue.Queue.task_done(j&j&Bhttps://docs.python.org/3/library/queue.html#queue.Queue.task_donej tqueue.SimpleQueue.empty(j&j&Dhttps://docs.python.org/3/library/queue.html#queue.SimpleQueue.emptyj tqueue.SimpleQueue.get(j&j&Bhttps://docs.python.org/3/library/queue.html#queue.SimpleQueue.getj tqueue.SimpleQueue.get_nowait(j&j&Ihttps://docs.python.org/3/library/queue.html#queue.SimpleQueue.get_nowaitj tqueue.SimpleQueue.put(j&j&Bhttps://docs.python.org/3/library/queue.html#queue.SimpleQueue.putj tqueue.SimpleQueue.put_nowait(j&j&Ihttps://docs.python.org/3/library/queue.html#queue.SimpleQueue.put_nowaitj tqueue.SimpleQueue.qsize(j&j&Dhttps://docs.python.org/3/library/queue.html#queue.SimpleQueue.qsizej trandom.Random.getrandbits(j&j&Ghttps://docs.python.org/3/library/random.html#random.Random.getrandbitsj trandom.Random.getstate(j&j&Dhttps://docs.python.org/3/library/random.html#random.Random.getstatej trandom.Random.random(j&j&Bhttps://docs.python.org/3/library/random.html#random.Random.randomj trandom.Random.seed(j&j&@https://docs.python.org/3/library/random.html#random.Random.seedj trandom.Random.setstate(j&j&Dhttps://docs.python.org/3/library/random.html#random.Random.setstatej tre.Match.__getitem__(j&j&>https://docs.python.org/3/library/re.html#re.Match.__getitem__j t re.Match.end(j&j&6https://docs.python.org/3/library/re.html#re.Match.endj tre.Match.expand(j&j&9https://docs.python.org/3/library/re.html#re.Match.expandj tre.Match.group(j&j&8https://docs.python.org/3/library/re.html#re.Match.groupj tre.Match.groupdict(j&j&https://docs.python.org/3/library/re.html#re.Pattern.fullmatchj tre.Pattern.match(j&j&:https://docs.python.org/3/library/re.html#re.Pattern.matchj tre.Pattern.search(j&j&;https://docs.python.org/3/library/re.html#re.Pattern.searchj tre.Pattern.split(j&j&:https://docs.python.org/3/library/re.html#re.Pattern.splitj tre.Pattern.sub(j&j&8https://docs.python.org/3/library/re.html#re.Pattern.subj tre.Pattern.subn(j&j&9https://docs.python.org/3/library/re.html#re.Pattern.subnj treprlib.Repr.repr(j&j&@https://docs.python.org/3/library/reprlib.html#reprlib.Repr.reprj treprlib.Repr.repr1(j&j&Ahttps://docs.python.org/3/library/reprlib.html#reprlib.Repr.repr1j trlcompleter.Completer.complete(j&j&Qhttps://docs.python.org/3/library/rlcompleter.html#rlcompleter.Completer.completej tsched.scheduler.cancel(j&j&Chttps://docs.python.org/3/library/sched.html#sched.scheduler.cancelj tsched.scheduler.empty(j&j&Bhttps://docs.python.org/3/library/sched.html#sched.scheduler.emptyj tsched.scheduler.enter(j&j&Bhttps://docs.python.org/3/library/sched.html#sched.scheduler.enterj tsched.scheduler.enterabs(j&j&Ehttps://docs.python.org/3/library/sched.html#sched.scheduler.enterabsj tsched.scheduler.run(j&j&@https://docs.python.org/3/library/sched.html#sched.scheduler.runj tselect.devpoll.close(j&j&Bhttps://docs.python.org/3/library/select.html#select.devpoll.closej tselect.devpoll.fileno(j&j&Chttps://docs.python.org/3/library/select.html#select.devpoll.filenoj tselect.devpoll.modify(j&j&Chttps://docs.python.org/3/library/select.html#select.devpoll.modifyj tselect.devpoll.poll(j&j&Ahttps://docs.python.org/3/library/select.html#select.devpoll.pollj tselect.devpoll.register(j&j&Ehttps://docs.python.org/3/library/select.html#select.devpoll.registerj tselect.devpoll.unregister(j&j&Ghttps://docs.python.org/3/library/select.html#select.devpoll.unregisterj tselect.epoll.close(j&j&@https://docs.python.org/3/library/select.html#select.epoll.closej tselect.epoll.fileno(j&j&Ahttps://docs.python.org/3/library/select.html#select.epoll.filenoj tselect.epoll.fromfd(j&j&Ahttps://docs.python.org/3/library/select.html#select.epoll.fromfdj tselect.epoll.modify(j&j&Ahttps://docs.python.org/3/library/select.html#select.epoll.modifyj tselect.epoll.poll(j&j&?https://docs.python.org/3/library/select.html#select.epoll.pollj tselect.epoll.register(j&j&Chttps://docs.python.org/3/library/select.html#select.epoll.registerj tselect.epoll.unregister(j&j&Ehttps://docs.python.org/3/library/select.html#select.epoll.unregisterj tselect.kqueue.close(j&j&Ahttps://docs.python.org/3/library/select.html#select.kqueue.closej tselect.kqueue.control(j&j&Chttps://docs.python.org/3/library/select.html#select.kqueue.controlj tselect.kqueue.fileno(j&j&Bhttps://docs.python.org/3/library/select.html#select.kqueue.filenoj tselect.kqueue.fromfd(j&j&Bhttps://docs.python.org/3/library/select.html#select.kqueue.fromfdj tselect.poll.modify(j&j&@https://docs.python.org/3/library/select.html#select.poll.modifyj tselect.poll.poll(j&j&>https://docs.python.org/3/library/select.html#select.poll.pollj tselect.poll.register(j&j&Bhttps://docs.python.org/3/library/select.html#select.poll.registerj tselect.poll.unregister(j&j&Dhttps://docs.python.org/3/library/select.html#select.poll.unregisterj tselectors.BaseSelector.close(j&j&Mhttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.closej tselectors.BaseSelector.get_key(j&j&Ohttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.get_keyj tselectors.BaseSelector.get_map(j&j&Ohttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.get_mapj tselectors.BaseSelector.modify(j&j&Nhttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.modifyj tselectors.BaseSelector.register(j&j&Phttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.registerj tselectors.BaseSelector.select(j&j&Nhttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.selectj t!selectors.BaseSelector.unregister(j&j&Rhttps://docs.python.org/3/library/selectors.html#selectors.BaseSelector.unregisterj t selectors.DevpollSelector.fileno(j&j&Qhttps://docs.python.org/3/library/selectors.html#selectors.DevpollSelector.filenoj tselectors.EpollSelector.fileno(j&j&Ohttps://docs.python.org/3/library/selectors.html#selectors.EpollSelector.filenoj tselectors.KqueueSelector.fileno(j&j&Phttps://docs.python.org/3/library/selectors.html#selectors.KqueueSelector.filenoj tshelve.Shelf.close(j&j&@https://docs.python.org/3/library/shelve.html#shelve.Shelf.closej tshelve.Shelf.sync(j&j&?https://docs.python.org/3/library/shelve.html#shelve.Shelf.syncj tshlex.shlex.error_leader(j&j&Ehttps://docs.python.org/3/library/shlex.html#shlex.shlex.error_leaderj tshlex.shlex.get_token(j&j&Bhttps://docs.python.org/3/library/shlex.html#shlex.shlex.get_tokenj tshlex.shlex.pop_source(j&j&Chttps://docs.python.org/3/library/shlex.html#shlex.shlex.pop_sourcej tshlex.shlex.push_source(j&j&Dhttps://docs.python.org/3/library/shlex.html#shlex.shlex.push_sourcej tshlex.shlex.push_token(j&j&Chttps://docs.python.org/3/library/shlex.html#shlex.shlex.push_tokenj tshlex.shlex.read_token(j&j&Chttps://docs.python.org/3/library/shlex.html#shlex.shlex.read_tokenj tshlex.shlex.sourcehook(j&j&Chttps://docs.python.org/3/library/shlex.html#shlex.shlex.sourcehookj t slice.indices(j&j&@https://docs.python.org/3/reference/datamodel.html#slice.indicesj tsmtplib.SMTP.auth(j&j&@https://docs.python.org/3/library/smtplib.html#smtplib.SMTP.authj tsmtplib.SMTP.connect(j&j&Chttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.connectj tsmtplib.SMTP.docmd(j&j&Ahttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.docmdj tsmtplib.SMTP.ehlo(j&j&@https://docs.python.org/3/library/smtplib.html#smtplib.SMTP.ehloj t#smtplib.SMTP.ehlo_or_helo_if_needed(j&j&Rhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.ehlo_or_helo_if_neededj tsmtplib.SMTP.has_extn(j&j&Dhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.has_extnj tsmtplib.SMTP.helo(j&j&@https://docs.python.org/3/library/smtplib.html#smtplib.SMTP.heloj tsmtplib.SMTP.login(j&j&Ahttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.loginj tsmtplib.SMTP.quit(j&j&@https://docs.python.org/3/library/smtplib.html#smtplib.SMTP.quitj tsmtplib.SMTP.send_message(j&j&Hhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.send_messagej tsmtplib.SMTP.sendmail(j&j&Dhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.sendmailj tsmtplib.SMTP.set_debuglevel(j&j&Jhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.set_debuglevelj tsmtplib.SMTP.starttls(j&j&Dhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.starttlsj tsmtplib.SMTP.verify(j&j&Bhttps://docs.python.org/3/library/smtplib.html#smtplib.SMTP.verifyj tsocket.socket.accept(j&j&Bhttps://docs.python.org/3/library/socket.html#socket.socket.acceptj tsocket.socket.bind(j&j&@https://docs.python.org/3/library/socket.html#socket.socket.bindj tsocket.socket.close(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.socket.closej tsocket.socket.connect(j&j&Chttps://docs.python.org/3/library/socket.html#socket.socket.connectj tsocket.socket.connect_ex(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.socket.connect_exj tsocket.socket.detach(j&j&Bhttps://docs.python.org/3/library/socket.html#socket.socket.detachj tsocket.socket.dup(j&j&?https://docs.python.org/3/library/socket.html#socket.socket.dupj tsocket.socket.fileno(j&j&Bhttps://docs.python.org/3/library/socket.html#socket.socket.filenoj tsocket.socket.get_inheritable(j&j&Khttps://docs.python.org/3/library/socket.html#socket.socket.get_inheritablej tsocket.socket.getblocking(j&j&Ghttps://docs.python.org/3/library/socket.html#socket.socket.getblockingj tsocket.socket.getpeername(j&j&Ghttps://docs.python.org/3/library/socket.html#socket.socket.getpeernamej tsocket.socket.getsockname(j&j&Ghttps://docs.python.org/3/library/socket.html#socket.socket.getsocknamej tsocket.socket.getsockopt(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.socket.getsockoptj tsocket.socket.gettimeout(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.socket.gettimeoutj tsocket.socket.ioctl(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.socket.ioctlj tsocket.socket.listen(j&j&Bhttps://docs.python.org/3/library/socket.html#socket.socket.listenj tsocket.socket.makefile(j&j&Dhttps://docs.python.org/3/library/socket.html#socket.socket.makefilej tsocket.socket.recv(j&j&@https://docs.python.org/3/library/socket.html#socket.socket.recvj tsocket.socket.recv_into(j&j&Ehttps://docs.python.org/3/library/socket.html#socket.socket.recv_intoj tsocket.socket.recvfrom(j&j&Dhttps://docs.python.org/3/library/socket.html#socket.socket.recvfromj tsocket.socket.recvfrom_into(j&j&Ihttps://docs.python.org/3/library/socket.html#socket.socket.recvfrom_intoj tsocket.socket.recvmsg(j&j&Chttps://docs.python.org/3/library/socket.html#socket.socket.recvmsgj tsocket.socket.recvmsg_into(j&j&Hhttps://docs.python.org/3/library/socket.html#socket.socket.recvmsg_intoj tsocket.socket.send(j&j&@https://docs.python.org/3/library/socket.html#socket.socket.sendj tsocket.socket.sendall(j&j&Chttps://docs.python.org/3/library/socket.html#socket.socket.sendallj tsocket.socket.sendfile(j&j&Dhttps://docs.python.org/3/library/socket.html#socket.socket.sendfilej tsocket.socket.sendmsg(j&j&Chttps://docs.python.org/3/library/socket.html#socket.socket.sendmsgj tsocket.socket.sendmsg_afalg(j&j&Ihttps://docs.python.org/3/library/socket.html#socket.socket.sendmsg_afalgj tsocket.socket.sendto(j&j&Bhttps://docs.python.org/3/library/socket.html#socket.socket.sendtoj tsocket.socket.set_inheritable(j&j&Khttps://docs.python.org/3/library/socket.html#socket.socket.set_inheritablej tsocket.socket.setblocking(j&j&Ghttps://docs.python.org/3/library/socket.html#socket.socket.setblockingj tsocket.socket.setsockopt(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.socket.setsockoptj tsocket.socket.settimeout(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.socket.settimeoutj tsocket.socket.share(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.socket.sharej tsocket.socket.shutdown(j&j&Dhttps://docs.python.org/3/library/socket.html#socket.socket.shutdownj t&socketserver.BaseRequestHandler.finish(j&j&Zhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseRequestHandler.finishj t&socketserver.BaseRequestHandler.handle(j&j&Zhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseRequestHandler.handlej t%socketserver.BaseRequestHandler.setup(j&j&Yhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseRequestHandler.setupj tsocketserver.BaseServer.fileno(j&j&Rhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.filenoj t&socketserver.BaseServer.finish_request(j&j&Zhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.finish_requestj t#socketserver.BaseServer.get_request(j&j&Whttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.get_requestj t$socketserver.BaseServer.handle_error(j&j&Xhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.handle_errorj t&socketserver.BaseServer.handle_request(j&j&Zhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.handle_requestj t&socketserver.BaseServer.handle_timeout(j&j&Zhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.handle_timeoutj t'socketserver.BaseServer.process_request(j&j&[https://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.process_requestj t%socketserver.BaseServer.serve_forever(j&j&Yhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.serve_foreverj t'socketserver.BaseServer.server_activate(j&j&[https://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.server_activatej t#socketserver.BaseServer.server_bind(j&j&Whttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.server_bindj t$socketserver.BaseServer.server_close(j&j&Xhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.server_closej t'socketserver.BaseServer.service_actions(j&j&[https://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.service_actionsj t socketserver.BaseServer.shutdown(j&j&Thttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.shutdownj t&socketserver.BaseServer.verify_request(j&j&Zhttps://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.verify_requestj tsqlite3.Blob.close(j&j&Ahttps://docs.python.org/3/library/sqlite3.html#sqlite3.Blob.closej tsqlite3.Blob.read(j&j&@https://docs.python.org/3/library/sqlite3.html#sqlite3.Blob.readj tsqlite3.Blob.seek(j&j&@https://docs.python.org/3/library/sqlite3.html#sqlite3.Blob.seekj tsqlite3.Blob.tell(j&j&@https://docs.python.org/3/library/sqlite3.html#sqlite3.Blob.tellj tsqlite3.Blob.write(j&j&Ahttps://docs.python.org/3/library/sqlite3.html#sqlite3.Blob.writej tsqlite3.Connection.backup(j&j&Hhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.backupj tsqlite3.Connection.blobopen(j&j&Jhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.blobopenj tsqlite3.Connection.close(j&j&Ghttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.closej tsqlite3.Connection.commit(j&j&Hhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.commitj t#sqlite3.Connection.create_aggregate(j&j&Rhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_aggregatej t#sqlite3.Connection.create_collation(j&j&Rhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_collationj t"sqlite3.Connection.create_function(j&j&Qhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_functionj t)sqlite3.Connection.create_window_function(j&j&Xhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_window_functionj tsqlite3.Connection.cursor(j&j&Hhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.cursorj tsqlite3.Connection.deserialize(j&j&Mhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.deserializej t(sqlite3.Connection.enable_load_extension(j&j&Whttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extensionj tsqlite3.Connection.execute(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.executej tsqlite3.Connection.executemany(j&j&Mhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.executemanyj t sqlite3.Connection.executescript(j&j&Ohttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.executescriptj tsqlite3.Connection.getconfig(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.getconfigj tsqlite3.Connection.getlimit(j&j&Jhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.getlimitj tsqlite3.Connection.interrupt(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.interruptj tsqlite3.Connection.iterdump(j&j&Jhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.iterdumpj t!sqlite3.Connection.load_extension(j&j&Phttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.load_extensionj tsqlite3.Connection.rollback(j&j&Jhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.rollbackj tsqlite3.Connection.serialize(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.serializej t!sqlite3.Connection.set_authorizer(j&j&Phttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.set_authorizerj t'sqlite3.Connection.set_progress_handler(j&j&Vhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.set_progress_handlerj t%sqlite3.Connection.set_trace_callback(j&j&Thttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.set_trace_callbackj tsqlite3.Connection.setconfig(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.setconfigj tsqlite3.Connection.setlimit(j&j&Jhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.setlimitj tsqlite3.Cursor.close(j&j&Chttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.closej tsqlite3.Cursor.execute(j&j&Ehttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.executej tsqlite3.Cursor.executemany(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.executemanyj tsqlite3.Cursor.executescript(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.executescriptj tsqlite3.Cursor.fetchall(j&j&Fhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchallj tsqlite3.Cursor.fetchmany(j&j&Ghttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchmanyj tsqlite3.Cursor.fetchone(j&j&Fhttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchonej tsqlite3.Cursor.setinputsizes(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.setinputsizesj tsqlite3.Cursor.setoutputsize(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.setoutputsizej tsqlite3.Row.keys(j&j&?https://docs.python.org/3/library/sqlite3.html#sqlite3.Row.keysj tssl.MemoryBIO.read(j&j&=https://docs.python.org/3/library/ssl.html#ssl.MemoryBIO.readj tssl.MemoryBIO.write(j&j&>https://docs.python.org/3/library/ssl.html#ssl.MemoryBIO.writej tssl.MemoryBIO.write_eof(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.MemoryBIO.write_eofj tssl.SSLContext.cert_store_stats(j&j&Jhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.cert_store_statsj tssl.SSLContext.get_ca_certs(j&j&Fhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.get_ca_certsj tssl.SSLContext.get_ciphers(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.get_ciphersj tssl.SSLContext.load_cert_chain(j&j&Ihttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_cert_chainj t!ssl.SSLContext.load_default_certs(j&j&Lhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_default_certsj tssl.SSLContext.load_dh_params(j&j&Hhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_dh_paramsj t$ssl.SSLContext.load_verify_locations(j&j&Ohttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_verify_locationsj tssl.SSLContext.session_stats(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.session_statsj t!ssl.SSLContext.set_alpn_protocols(j&j&Lhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_alpn_protocolsj tssl.SSLContext.set_ciphers(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_ciphersj t'ssl.SSLContext.set_default_verify_paths(j&j&Rhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_default_verify_pathsj tssl.SSLContext.set_ecdh_curve(j&j&Hhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_ecdh_curvej t ssl.SSLContext.set_npn_protocols(j&j&Khttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_npn_protocolsj tssl.SSLContext.wrap_bio(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.wrap_bioj tssl.SSLContext.wrap_socket(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.SSLContext.wrap_socketj tssl.SSLSocket.cipher(j&j&?https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.cipherj tssl.SSLSocket.compression(j&j&Dhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.compressionj tssl.SSLSocket.do_handshake(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.do_handshakej t!ssl.SSLSocket.get_channel_binding(j&j&Lhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.get_channel_bindingj tssl.SSLSocket.getpeercert(j&j&Dhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.getpeercertj tssl.SSLSocket.pending(j&j&@https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.pendingj tssl.SSLSocket.read(j&j&=https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.readj t$ssl.SSLSocket.selected_alpn_protocol(j&j&Ohttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.selected_alpn_protocolj t#ssl.SSLSocket.selected_npn_protocol(j&j&Nhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.selected_npn_protocolj tssl.SSLSocket.shared_ciphers(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.shared_ciphersj tssl.SSLSocket.unwrap(j&j&?https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.unwrapj t*ssl.SSLSocket.verify_client_post_handshake(j&j&Uhttps://docs.python.org/3/library/ssl.html#ssl.SSLSocket.verify_client_post_handshakej tssl.SSLSocket.version(j&j&@https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.versionj tssl.SSLSocket.write(j&j&>https://docs.python.org/3/library/ssl.html#ssl.SSLSocket.writej tstatistics.NormalDist.cdf(j&j&Khttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.cdfj t"statistics.NormalDist.from_samples(j&j&Thttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.from_samplesj tstatistics.NormalDist.inv_cdf(j&j&Ohttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.inv_cdfj tstatistics.NormalDist.overlap(j&j&Ohttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.overlapj tstatistics.NormalDist.pdf(j&j&Khttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.pdfj tstatistics.NormalDist.quantiles(j&j&Qhttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.quantilesj tstatistics.NormalDist.samples(j&j&Ohttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.samplesj tstatistics.NormalDist.zscore(j&j&Nhttps://docs.python.org/3/library/statistics.html#statistics.NormalDist.zscorej tstr.capitalize(j&j&>https://docs.python.org/3/library/stdtypes.html#str.capitalizej t str.casefold(j&j&https://docs.python.org/3/library/stdtypes.html#str.expandtabsj tstr.find(j&j&8https://docs.python.org/3/library/stdtypes.html#str.findj t str.format(j&j&:https://docs.python.org/3/library/stdtypes.html#str.formatj tstr.format_map(j&j&>https://docs.python.org/3/library/stdtypes.html#str.format_mapj t str.index(j&j&9https://docs.python.org/3/library/stdtypes.html#str.indexj t str.isalnum(j&j&;https://docs.python.org/3/library/stdtypes.html#str.isalnumj t str.isalpha(j&j&;https://docs.python.org/3/library/stdtypes.html#str.isalphaj t str.isascii(j&j&;https://docs.python.org/3/library/stdtypes.html#str.isasciij t str.isdecimal(j&j&=https://docs.python.org/3/library/stdtypes.html#str.isdecimalj t str.isdigit(j&j&;https://docs.python.org/3/library/stdtypes.html#str.isdigitj tstr.isidentifier(j&j&@https://docs.python.org/3/library/stdtypes.html#str.isidentifierj t str.islower(j&j&;https://docs.python.org/3/library/stdtypes.html#str.islowerj t str.isnumeric(j&j&=https://docs.python.org/3/library/stdtypes.html#str.isnumericj tstr.isprintable(j&j&?https://docs.python.org/3/library/stdtypes.html#str.isprintablej t str.isspace(j&j&;https://docs.python.org/3/library/stdtypes.html#str.isspacej t str.istitle(j&j&;https://docs.python.org/3/library/stdtypes.html#str.istitlej t str.isupper(j&j&;https://docs.python.org/3/library/stdtypes.html#str.isupperj tstr.join(j&j&8https://docs.python.org/3/library/stdtypes.html#str.joinj t str.ljust(j&j&9https://docs.python.org/3/library/stdtypes.html#str.ljustj t str.lower(j&j&9https://docs.python.org/3/library/stdtypes.html#str.lowerj t str.lstrip(j&j&:https://docs.python.org/3/library/stdtypes.html#str.lstripj t str.maketrans(j&j&=https://docs.python.org/3/library/stdtypes.html#str.maketransj t str.partition(j&j&=https://docs.python.org/3/library/stdtypes.html#str.partitionj tstr.removeprefix(j&j&@https://docs.python.org/3/library/stdtypes.html#str.removeprefixj tstr.removesuffix(j&j&@https://docs.python.org/3/library/stdtypes.html#str.removesuffixj t str.replace(j&j&;https://docs.python.org/3/library/stdtypes.html#str.replacej t str.rfind(j&j&9https://docs.python.org/3/library/stdtypes.html#str.rfindj t str.rindex(j&j&:https://docs.python.org/3/library/stdtypes.html#str.rindexj t str.rjust(j&j&9https://docs.python.org/3/library/stdtypes.html#str.rjustj tstr.rpartition(j&j&>https://docs.python.org/3/library/stdtypes.html#str.rpartitionj t str.rsplit(j&j&:https://docs.python.org/3/library/stdtypes.html#str.rsplitj t str.rstrip(j&j&:https://docs.python.org/3/library/stdtypes.html#str.rstripj t str.split(j&j&9https://docs.python.org/3/library/stdtypes.html#str.splitj tstr.splitlines(j&j&>https://docs.python.org/3/library/stdtypes.html#str.splitlinesj tstr.startswith(j&j&>https://docs.python.org/3/library/stdtypes.html#str.startswithj t str.strip(j&j&9https://docs.python.org/3/library/stdtypes.html#str.stripj t str.swapcase(j&j&test.support.bytecode_helper.BytecodeTestCase.assertInBytecode(j&j&jhttps://docs.python.org/3/library/test.html#test.support.bytecode_helper.BytecodeTestCase.assertInBytecodej tAtest.support.bytecode_helper.BytecodeTestCase.assertNotInBytecode(j&j&mhttps://docs.python.org/3/library/test.html#test.support.bytecode_helper.BytecodeTestCase.assertNotInBytecodej tGtest.support.bytecode_helper.BytecodeTestCase.get_disassembly_as_string(j&j&shttps://docs.python.org/3/library/test.html#test.support.bytecode_helper.BytecodeTestCase.get_disassembly_as_stringj t.test.support.os_helper.EnvironmentVarGuard.set(j&j&Zhttps://docs.python.org/3/library/test.html#test.support.os_helper.EnvironmentVarGuard.setj t0test.support.os_helper.EnvironmentVarGuard.unset(j&j&\https://docs.python.org/3/library/test.html#test.support.os_helper.EnvironmentVarGuard.unsetj ttextwrap.TextWrapper.fill(j&j&Ihttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.fillj ttextwrap.TextWrapper.wrap(j&j&Ihttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.wrapj tthreading.Barrier.abort(j&j&Hhttps://docs.python.org/3/library/threading.html#threading.Barrier.abortj tthreading.Barrier.reset(j&j&Hhttps://docs.python.org/3/library/threading.html#threading.Barrier.resetj tthreading.Barrier.wait(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Barrier.waitj tthreading.Condition.acquire(j&j&Lhttps://docs.python.org/3/library/threading.html#threading.Condition.acquirej tthreading.Condition.notify(j&j&Khttps://docs.python.org/3/library/threading.html#threading.Condition.notifyj tthreading.Condition.notify_all(j&j&Ohttps://docs.python.org/3/library/threading.html#threading.Condition.notify_allj tthreading.Condition.release(j&j&Lhttps://docs.python.org/3/library/threading.html#threading.Condition.releasej tthreading.Condition.wait(j&j&Ihttps://docs.python.org/3/library/threading.html#threading.Condition.waitj tthreading.Condition.wait_for(j&j&Mhttps://docs.python.org/3/library/threading.html#threading.Condition.wait_forj tthreading.Event.clear(j&j&Fhttps://docs.python.org/3/library/threading.html#threading.Event.clearj tthreading.Event.is_set(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Event.is_setj tthreading.Event.set(j&j&Dhttps://docs.python.org/3/library/threading.html#threading.Event.setj tthreading.Event.wait(j&j&Ehttps://docs.python.org/3/library/threading.html#threading.Event.waitj tthreading.Lock.acquire(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Lock.acquirej tthreading.Lock.locked(j&j&Fhttps://docs.python.org/3/library/threading.html#threading.Lock.lockedj tthreading.Lock.release(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Lock.releasej tthreading.RLock.acquire(j&j&Hhttps://docs.python.org/3/library/threading.html#threading.RLock.acquirej tthreading.RLock.release(j&j&Hhttps://docs.python.org/3/library/threading.html#threading.RLock.releasej tthreading.Semaphore.acquire(j&j&Lhttps://docs.python.org/3/library/threading.html#threading.Semaphore.acquirej tthreading.Semaphore.release(j&j&Lhttps://docs.python.org/3/library/threading.html#threading.Semaphore.releasej tthreading.Thread.getName(j&j&Ihttps://docs.python.org/3/library/threading.html#threading.Thread.getNamej tthreading.Thread.isDaemon(j&j&Jhttps://docs.python.org/3/library/threading.html#threading.Thread.isDaemonj tthreading.Thread.is_alive(j&j&Jhttps://docs.python.org/3/library/threading.html#threading.Thread.is_alivej tthreading.Thread.join(j&j&Fhttps://docs.python.org/3/library/threading.html#threading.Thread.joinj tthreading.Thread.run(j&j&Ehttps://docs.python.org/3/library/threading.html#threading.Thread.runj tthreading.Thread.setDaemon(j&j&Khttps://docs.python.org/3/library/threading.html#threading.Thread.setDaemonj tthreading.Thread.setName(j&j&Ihttps://docs.python.org/3/library/threading.html#threading.Thread.setNamej tthreading.Thread.start(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Thread.startj tthreading.Timer.cancel(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.Timer.cancelj ttimeit.Timer.autorange(j&j&Dhttps://docs.python.org/3/library/timeit.html#timeit.Timer.autorangej ttimeit.Timer.print_exc(j&j&Dhttps://docs.python.org/3/library/timeit.html#timeit.Timer.print_excj ttimeit.Timer.repeat(j&j&Ahttps://docs.python.org/3/library/timeit.html#timeit.Timer.repeatj ttimeit.Timer.timeit(j&j&Ahttps://docs.python.org/3/library/timeit.html#timeit.Timer.timeitj t tkinter.commondialog.Dialog.show(j&j&Nhttps://docs.python.org/3/library/dialog.html#tkinter.commondialog.Dialog.showj ttkinter.dnd.DndHandler.cancel(j&j&Phttps://docs.python.org/3/library/tkinter.dnd.html#tkinter.dnd.DndHandler.cancelj ttkinter.dnd.DndHandler.finish(j&j&Phttps://docs.python.org/3/library/tkinter.dnd.html#tkinter.dnd.DndHandler.finishj t tkinter.dnd.DndHandler.on_motion(j&j&Shttps://docs.python.org/3/library/tkinter.dnd.html#tkinter.dnd.DndHandler.on_motionj t!tkinter.dnd.DndHandler.on_release(j&j&Thttps://docs.python.org/3/library/tkinter.dnd.html#tkinter.dnd.DndHandler.on_releasej t,tkinter.filedialog.FileDialog.cancel_command(j&j&Zhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.cancel_commandj t/tkinter.filedialog.FileDialog.dirs_double_event(j&j&]https://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.dirs_double_eventj t/tkinter.filedialog.FileDialog.dirs_select_event(j&j&]https://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.dirs_select_eventj t0tkinter.filedialog.FileDialog.files_double_event(j&j&^https://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.files_double_eventj t0tkinter.filedialog.FileDialog.files_select_event(j&j&^https://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.files_select_eventj t,tkinter.filedialog.FileDialog.filter_command(j&j&Zhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.filter_commandj t(tkinter.filedialog.FileDialog.get_filter(j&j&Vhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.get_filterj t+tkinter.filedialog.FileDialog.get_selection(j&j&Yhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.get_selectionj t tkinter.filedialog.FileDialog.go(j&j&Nhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.goj t&tkinter.filedialog.FileDialog.ok_event(j&j&Thttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.ok_eventj t"tkinter.filedialog.FileDialog.quit(j&j&Phttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.quitj t(tkinter.filedialog.FileDialog.set_filter(j&j&Vhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.set_filterj t+tkinter.filedialog.FileDialog.set_selection(j&j&Yhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.FileDialog.set_selectionj t,tkinter.filedialog.LoadFileDialog.ok_command(j&j&Zhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.LoadFileDialog.ok_commandj t,tkinter.filedialog.SaveFileDialog.ok_command(j&j&Zhttps://docs.python.org/3/library/dialog.html#tkinter.filedialog.SaveFileDialog.ok_commandj ttkinter.font.Font.actual(j&j&Lhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.Font.actualj ttkinter.font.Font.cget(j&j&Jhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.Font.cgetj ttkinter.font.Font.config(j&j&Lhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.Font.configj ttkinter.font.Font.copy(j&j&Jhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.Font.copyj ttkinter.font.Font.measure(j&j&Mhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.Font.measurej ttkinter.font.Font.metrics(j&j&Mhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.Font.metricsj ttkinter.messagebox.Message.show(j&j&Yhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.Message.showj t tkinter.simpledialog.Dialog.body(j&j&Nhttps://docs.python.org/3/library/dialog.html#tkinter.simpledialog.Dialog.bodyj t%tkinter.simpledialog.Dialog.buttonbox(j&j&Shttps://docs.python.org/3/library/dialog.html#tkinter.simpledialog.Dialog.buttonboxj t'tkinter.tix.tixCommand.tix_addbitmapdir(j&j&Zhttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_addbitmapdirj ttkinter.tix.tixCommand.tix_cget(j&j&Rhttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_cgetj t$tkinter.tix.tixCommand.tix_configure(j&j&Whttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_configurej t%tkinter.tix.tixCommand.tix_filedialog(j&j&Xhttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_filedialogj t$tkinter.tix.tixCommand.tix_getbitmap(j&j&Whttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getbitmapj t#tkinter.tix.tixCommand.tix_getimage(j&j&Vhttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getimagej t%tkinter.tix.tixCommand.tix_option_get(j&j&Xhttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_option_getj t'tkinter.tix.tixCommand.tix_resetoptions(j&j&Zhttps://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_resetoptionsj ttkinter.ttk.Combobox.current(j&j&Ohttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Combobox.currentj ttkinter.ttk.Combobox.get(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Combobox.getj ttkinter.ttk.Combobox.set(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Combobox.setj ttkinter.ttk.Notebook.add(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.addj t%tkinter.ttk.Notebook.enable_traversal(j&j&Xhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.enable_traversalj ttkinter.ttk.Notebook.forget(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.forgetj ttkinter.ttk.Notebook.hide(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.hidej ttkinter.ttk.Notebook.identify(j&j&Phttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.identifyj ttkinter.ttk.Notebook.index(j&j&Mhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.indexj ttkinter.ttk.Notebook.insert(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.insertj ttkinter.ttk.Notebook.select(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.selectj ttkinter.ttk.Notebook.tab(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.tabj ttkinter.ttk.Notebook.tabs(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.tabsj ttkinter.ttk.Progressbar.start(j&j&Phttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Progressbar.startj ttkinter.ttk.Progressbar.step(j&j&Ohttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Progressbar.stepj ttkinter.ttk.Progressbar.stop(j&j&Ohttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Progressbar.stopj ttkinter.ttk.Spinbox.get(j&j&Jhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Spinbox.getj ttkinter.ttk.Spinbox.set(j&j&Jhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Spinbox.setj ttkinter.ttk.Style.configure(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.configurej t tkinter.ttk.Style.element_create(j&j&Shttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_createj ttkinter.ttk.Style.element_names(j&j&Rhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_namesj t!tkinter.ttk.Style.element_options(j&j&Thttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_optionsj ttkinter.ttk.Style.layout(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.layoutj ttkinter.ttk.Style.lookup(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.lookupj ttkinter.ttk.Style.map(j&j&Hhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.mapj ttkinter.ttk.Style.theme_create(j&j&Qhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_createj ttkinter.ttk.Style.theme_names(j&j&Phttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_namesj t tkinter.ttk.Style.theme_settings(j&j&Shttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_settingsj ttkinter.ttk.Style.theme_use(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_usej ttkinter.ttk.Treeview.bbox(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.bboxj ttkinter.ttk.Treeview.column(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.columnj ttkinter.ttk.Treeview.delete(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.deletej ttkinter.ttk.Treeview.detach(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.detachj ttkinter.ttk.Treeview.exists(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.existsj ttkinter.ttk.Treeview.focus(j&j&Mhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.focusj t!tkinter.ttk.Treeview.get_children(j&j&Thttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.get_childrenj ttkinter.ttk.Treeview.heading(j&j&Ohttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.headingj ttkinter.ttk.Treeview.identify(j&j&Phttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identifyj t$tkinter.ttk.Treeview.identify_column(j&j&Whttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_columnj t%tkinter.ttk.Treeview.identify_element(j&j&Xhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_elementj t$tkinter.ttk.Treeview.identify_region(j&j&Whttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_regionj t!tkinter.ttk.Treeview.identify_row(j&j&Thttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_rowj ttkinter.ttk.Treeview.index(j&j&Mhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.indexj ttkinter.ttk.Treeview.insert(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.insertj ttkinter.ttk.Treeview.item(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.itemj ttkinter.ttk.Treeview.move(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.movej ttkinter.ttk.Treeview.next(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.nextj ttkinter.ttk.Treeview.parent(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.parentj ttkinter.ttk.Treeview.prev(j&j&Lhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.prevj ttkinter.ttk.Treeview.reattach(j&j&Phttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.reattachj ttkinter.ttk.Treeview.see(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.seej ttkinter.ttk.Treeview.selection(j&j&Qhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selectionj t"tkinter.ttk.Treeview.selection_add(j&j&Uhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_addj t%tkinter.ttk.Treeview.selection_remove(j&j&Xhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_removej t"tkinter.ttk.Treeview.selection_set(j&j&Uhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_setj t%tkinter.ttk.Treeview.selection_toggle(j&j&Xhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_togglej ttkinter.ttk.Treeview.set(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.setj t!tkinter.ttk.Treeview.set_children(j&j&Thttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.set_childrenj ttkinter.ttk.Treeview.tag_bind(j&j&Phttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.tag_bindj t"tkinter.ttk.Treeview.tag_configure(j&j&Uhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.tag_configurej ttkinter.ttk.Treeview.tag_has(j&j&Ohttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.tag_hasj ttkinter.ttk.Treeview.xview(j&j&Mhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.xviewj ttkinter.ttk.Treeview.yview(j&j&Mhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.yviewj ttkinter.ttk.Widget.identify(j&j&Nhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget.identifyj ttkinter.ttk.Widget.instate(j&j&Mhttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget.instatej ttkinter.ttk.Widget.state(j&j&Khttps://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget.statej ttrace.CoverageResults.update(j&j&Ihttps://docs.python.org/3/library/trace.html#trace.CoverageResults.updatej t#trace.CoverageResults.write_results(j&j&Phttps://docs.python.org/3/library/trace.html#trace.CoverageResults.write_resultsj ttrace.Trace.results(j&j&@https://docs.python.org/3/library/trace.html#trace.Trace.resultsj ttrace.Trace.run(j&j&urllib.request.AbstractDigestAuthHandler.http_error_auth_reqed(j&j&thttps://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractDigestAuthHandler.http_error_auth_reqedj t%urllib.request.BaseHandler.add_parent(j&j&[https://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.add_parentj t urllib.request.BaseHandler.close(j&j&Vhttps://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.closej t'urllib.request.BaseHandler.default_open(j&j&]https://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.default_openj t-urllib.request.BaseHandler.http_error_default(j&j&chttps://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.http_error_defaultj t'urllib.request.BaseHandler.unknown_open(j&j&]https://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.unknown_openj t*urllib.request.CacheFTPHandler.setMaxConns(j&j&`https://docs.python.org/3/library/urllib.request.html#urllib.request.CacheFTPHandler.setMaxConnsj t)urllib.request.CacheFTPHandler.setTimeout(j&j&_https://docs.python.org/3/library/urllib.request.html#urllib.request.CacheFTPHandler.setTimeoutj t$urllib.request.DataHandler.data_open(j&j&Zhttps://docs.python.org/3/library/urllib.request.html#urllib.request.DataHandler.data_openj t"urllib.request.FTPHandler.ftp_open(j&j&Xhttps://docs.python.org/3/library/urllib.request.html#urllib.request.FTPHandler.ftp_openj t0urllib.request.FancyURLopener.prompt_user_passwd(j&j&fhttps://docs.python.org/3/library/urllib.request.html#urllib.request.FancyURLopener.prompt_user_passwdj t$urllib.request.FileHandler.file_open(j&j&Zhttps://docs.python.org/3/library/urllib.request.html#urllib.request.FileHandler.file_openj t2urllib.request.HTTPBasicAuthHandler.http_error_401(j&j&hhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPBasicAuthHandler.http_error_401j t3urllib.request.HTTPDigestAuthHandler.http_error_401(j&j&ihttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPDigestAuthHandler.http_error_401j t/urllib.request.HTTPErrorProcessor.http_response(j&j&ehttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPErrorProcessor.http_responsej t0urllib.request.HTTPErrorProcessor.https_response(j&j&fhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPErrorProcessor.https_responsej t$urllib.request.HTTPHandler.http_open(j&j&Zhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPHandler.http_openj t+urllib.request.HTTPPasswordMgr.add_password(j&j&ahttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgr.add_passwordj t1urllib.request.HTTPPasswordMgr.find_user_password(j&j&ghttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgr.find_user_passwordj t8urllib.request.HTTPPasswordMgrWithPriorAuth.add_password(j&j&nhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrWithPriorAuth.add_passwordj t>urllib.request.HTTPPasswordMgrWithPriorAuth.find_user_password(j&j&thttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrWithPriorAuth.find_user_passwordj thttps://docs.python.org/3/library/zlib.html#zlib.Compress.copyj tzlib.Compress.flush(j&j&?https://docs.python.org/3/library/zlib.html#zlib.Compress.flushj tzlib.Decompress.copy(j&j&@https://docs.python.org/3/library/zlib.html#zlib.Decompress.copyj tzlib.Decompress.decompress(j&j&Fhttps://docs.python.org/3/library/zlib.html#zlib.Decompress.decompressj tzlib.Decompress.flush(j&j&Ahttps://docs.python.org/3/library/zlib.html#zlib.Decompress.flushj tzoneinfo.ZoneInfo.clear_cache(j&j&Mhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.ZoneInfo.clear_cachej tzoneinfo.ZoneInfo.from_file(j&j&Khttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.ZoneInfo.from_filej tzoneinfo.ZoneInfo.no_cache(j&j&Jhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.ZoneInfo.no_cachej tupy:data}(Ellipsis(j&j&9https://docs.python.org/3/library/constants.html#Ellipsisj tFalse(j&j&6https://docs.python.org/3/library/constants.html#Falsej tNone(j&j&5https://docs.python.org/3/library/constants.html#Nonej tNotImplemented(j&j&?https://docs.python.org/3/library/constants.html#NotImplementedj tTrue(j&j&5https://docs.python.org/3/library/constants.html#Truej t __debug__(j&j&8https://docs.python.org/3/library/constants.html#debug__j t_thread.LockType(j&j&>https://docs.python.org/3/library/_thread.html#thread.LockTypej t_thread.TIMEOUT_MAX(j&j&Ahttps://docs.python.org/3/library/_thread.html#thread.TIMEOUT_MAXj t_tkinter.EXCEPTION(j&j&@https://docs.python.org/3/library/tkinter.html#tkinter.EXCEPTIONj t_tkinter.READABLE(j&j&?https://docs.python.org/3/library/tkinter.html#tkinter.READABLEj t_tkinter.WRITABLE(j&j&?https://docs.python.org/3/library/tkinter.html#tkinter.WRITABLEj tarray.typecodes(j&j&https://docs.python.org/3/library/calendar.html#calendar.APRILj tcalendar.AUGUST(j&j&?https://docs.python.org/3/library/calendar.html#calendar.AUGUSTj tcalendar.DECEMBER(j&j&Ahttps://docs.python.org/3/library/calendar.html#calendar.DECEMBERj tcalendar.FEBRUARY(j&j&Ahttps://docs.python.org/3/library/calendar.html#calendar.FEBRUARYj tcalendar.FRIDAY(j&j&?https://docs.python.org/3/library/calendar.html#calendar.FRIDAYj tcalendar.JANUARY(j&j&@https://docs.python.org/3/library/calendar.html#calendar.JANUARYj t calendar.JULY(j&j&=https://docs.python.org/3/library/calendar.html#calendar.JULYj t calendar.JUNE(j&j&=https://docs.python.org/3/library/calendar.html#calendar.JUNEj tcalendar.MARCH(j&j&>https://docs.python.org/3/library/calendar.html#calendar.MARCHj t calendar.MAY(j&j&https://docs.python.org/3/library/codecs.html#codecs.BOM_UTF16j tcodecs.BOM_UTF16_BE(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.BOM_UTF16_BEj tcodecs.BOM_UTF16_LE(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.BOM_UTF16_LEj tcodecs.BOM_UTF32(j&j&>https://docs.python.org/3/library/codecs.html#codecs.BOM_UTF32j tcodecs.BOM_UTF32_BE(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.BOM_UTF32_BEj tcodecs.BOM_UTF32_LE(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.BOM_UTF32_LEj tcodecs.BOM_UTF8(j&j&=https://docs.python.org/3/library/codecs.html#codecs.BOM_UTF8j t concurrent.futures.ALL_COMPLETED(j&j&Zhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ALL_COMPLETEDj t"concurrent.futures.FIRST_COMPLETED(j&j&\https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.FIRST_COMPLETEDj t"concurrent.futures.FIRST_EXCEPTION(j&j&\https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.FIRST_EXCEPTIONj t$configparser.MAX_INTERPOLATION_DEPTH(j&j&Xhttps://docs.python.org/3/library/configparser.html#configparser.MAX_INTERPOLATION_DEPTHj t copyright(j&j&:https://docs.python.org/3/library/constants.html#copyrightj tcredits(j&j&8https://docs.python.org/3/library/constants.html#creditsj tcrypt.METHOD_BLOWFISH(j&j&Bhttps://docs.python.org/3/library/crypt.html#crypt.METHOD_BLOWFISHj tcrypt.METHOD_CRYPT(j&j&?https://docs.python.org/3/library/crypt.html#crypt.METHOD_CRYPTj tcrypt.METHOD_MD5(j&j&=https://docs.python.org/3/library/crypt.html#crypt.METHOD_MD5j tcrypt.METHOD_SHA256(j&j&@https://docs.python.org/3/library/crypt.html#crypt.METHOD_SHA256j tcrypt.METHOD_SHA512(j&j&@https://docs.python.org/3/library/crypt.html#crypt.METHOD_SHA512j t csv.QUOTE_ALL(j&j&8https://docs.python.org/3/library/csv.html#csv.QUOTE_ALLj tcsv.QUOTE_MINIMAL(j&j&https://docs.python.org/3/library/curses.html#curses.ACS_BLOCKj tcurses.ACS_BOARD(j&j&>https://docs.python.org/3/library/curses.html#curses.ACS_BOARDj tcurses.ACS_BSBS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_BSBSj tcurses.ACS_BSSB(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_BSSBj tcurses.ACS_BSSS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_BSSSj tcurses.ACS_BTEE(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_BTEEj tcurses.ACS_BULLET(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_BULLETj tcurses.ACS_CKBOARD(j&j&@https://docs.python.org/3/library/curses.html#curses.ACS_CKBOARDj tcurses.ACS_DARROW(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_DARROWj tcurses.ACS_DEGREE(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_DEGREEj tcurses.ACS_DIAMOND(j&j&@https://docs.python.org/3/library/curses.html#curses.ACS_DIAMONDj tcurses.ACS_GEQUAL(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_GEQUALj tcurses.ACS_HLINE(j&j&>https://docs.python.org/3/library/curses.html#curses.ACS_HLINEj tcurses.ACS_LANTERN(j&j&@https://docs.python.org/3/library/curses.html#curses.ACS_LANTERNj tcurses.ACS_LARROW(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_LARROWj tcurses.ACS_LEQUAL(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_LEQUALj tcurses.ACS_LLCORNER(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.ACS_LLCORNERj tcurses.ACS_LRCORNER(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.ACS_LRCORNERj tcurses.ACS_LTEE(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_LTEEj tcurses.ACS_NEQUAL(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_NEQUALj t curses.ACS_PI(j&j&;https://docs.python.org/3/library/curses.html#curses.ACS_PIj tcurses.ACS_PLMINUS(j&j&@https://docs.python.org/3/library/curses.html#curses.ACS_PLMINUSj tcurses.ACS_PLUS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_PLUSj tcurses.ACS_RARROW(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_RARROWj tcurses.ACS_RTEE(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_RTEEj t curses.ACS_S1(j&j&;https://docs.python.org/3/library/curses.html#curses.ACS_S1j t curses.ACS_S3(j&j&;https://docs.python.org/3/library/curses.html#curses.ACS_S3j t curses.ACS_S7(j&j&;https://docs.python.org/3/library/curses.html#curses.ACS_S7j t curses.ACS_S9(j&j&;https://docs.python.org/3/library/curses.html#curses.ACS_S9j tcurses.ACS_SBBS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SBBSj tcurses.ACS_SBSB(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SBSBj tcurses.ACS_SBSS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SBSSj tcurses.ACS_SSBB(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SSBBj tcurses.ACS_SSBS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SSBSj tcurses.ACS_SSSB(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SSSBj tcurses.ACS_SSSS(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_SSSSj tcurses.ACS_STERLING(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.ACS_STERLINGj tcurses.ACS_TTEE(j&j&=https://docs.python.org/3/library/curses.html#curses.ACS_TTEEj tcurses.ACS_UARROW(j&j&?https://docs.python.org/3/library/curses.html#curses.ACS_UARROWj tcurses.ACS_ULCORNER(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.ACS_ULCORNERj tcurses.ACS_URCORNER(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.ACS_URCORNERj tcurses.ACS_VLINE(j&j&>https://docs.python.org/3/library/curses.html#curses.ACS_VLINEj tcurses.A_ALTCHARSET(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.A_ALTCHARSETj tcurses.A_ATTRIBUTES(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.A_ATTRIBUTESj tcurses.A_BLINK(j&j&https://docs.python.org/3/library/curses.html#curses.A_PROTECTj tcurses.A_REVERSE(j&j&>https://docs.python.org/3/library/curses.html#curses.A_REVERSEj tcurses.A_RIGHT(j&j&https://docs.python.org/3/library/curses.html#curses.COLOR_REDj tcurses.COLOR_WHITE(j&j&@https://docs.python.org/3/library/curses.html#curses.COLOR_WHITEj tcurses.COLOR_YELLOW(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.COLOR_YELLOWj t curses.COLS(j&j&9https://docs.python.org/3/library/curses.html#curses.COLSj t curses.ERR(j&j&8https://docs.python.org/3/library/curses.html#curses.ERRj t curses.KEY_A1(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_A1j t curses.KEY_A3(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_A3j t curses.KEY_B2(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_B2j tcurses.KEY_BACKSPACE(j&j&Bhttps://docs.python.org/3/library/curses.html#curses.KEY_BACKSPACEj tcurses.KEY_BEG(j&j&https://docs.python.org/3/library/curses.html#curses.KEY_BREAKj tcurses.KEY_BTAB(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_BTABj t curses.KEY_C1(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_C1j t curses.KEY_C3(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_C3j tcurses.KEY_CANCEL(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_CANCELj tcurses.KEY_CATAB(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_CATABj tcurses.KEY_CLEAR(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_CLEARj tcurses.KEY_CLOSE(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_CLOSEj tcurses.KEY_COMMAND(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_COMMANDj tcurses.KEY_COPY(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_COPYj tcurses.KEY_CREATE(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_CREATEj tcurses.KEY_CTAB(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_CTABj t curses.KEY_DC(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_DCj t curses.KEY_DL(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_DLj tcurses.KEY_DOWN(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_DOWNj tcurses.KEY_EIC(j&j&https://docs.python.org/3/library/curses.html#curses.KEY_ENTERj tcurses.KEY_EOL(j&j&https://docs.python.org/3/library/curses.html#curses.KEY_MOUSEj tcurses.KEY_MOVE(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_MOVEj tcurses.KEY_NEXT(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_NEXTj tcurses.KEY_NPAGE(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_NPAGEj tcurses.KEY_OPEN(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_OPENj tcurses.KEY_OPTIONS(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_OPTIONSj tcurses.KEY_PPAGE(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_PPAGEj tcurses.KEY_PREVIOUS(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.KEY_PREVIOUSj tcurses.KEY_PRINT(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_PRINTj tcurses.KEY_REDO(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_REDOj tcurses.KEY_REFERENCE(j&j&Bhttps://docs.python.org/3/library/curses.html#curses.KEY_REFERENCEj tcurses.KEY_REFRESH(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_REFRESHj tcurses.KEY_REPLACE(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_REPLACEj tcurses.KEY_RESET(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_RESETj tcurses.KEY_RESIZE(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_RESIZEj tcurses.KEY_RESTART(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_RESTARTj tcurses.KEY_RESUME(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_RESUMEj tcurses.KEY_RIGHT(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_RIGHTj tcurses.KEY_SAVE(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_SAVEj tcurses.KEY_SBEG(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_SBEGj tcurses.KEY_SCANCEL(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_SCANCELj tcurses.KEY_SCOMMAND(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.KEY_SCOMMANDj tcurses.KEY_SCOPY(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SCOPYj tcurses.KEY_SCREATE(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_SCREATEj tcurses.KEY_SDC(j&j&https://docs.python.org/3/library/curses.html#curses.KEY_SEXITj t curses.KEY_SF(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_SFj tcurses.KEY_SFIND(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SFINDj tcurses.KEY_SHELP(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SHELPj tcurses.KEY_SHOME(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SHOMEj tcurses.KEY_SIC(j&j&https://docs.python.org/3/library/curses.html#curses.KEY_SLEFTj tcurses.KEY_SMESSAGE(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.KEY_SMESSAGEj tcurses.KEY_SMOVE(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SMOVEj tcurses.KEY_SNEXT(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SNEXTj tcurses.KEY_SOPTIONS(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.KEY_SOPTIONSj tcurses.KEY_SPREVIOUS(j&j&Bhttps://docs.python.org/3/library/curses.html#curses.KEY_SPREVIOUSj tcurses.KEY_SPRINT(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_SPRINTj t curses.KEY_SR(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_SRj tcurses.KEY_SREDO(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SREDOj tcurses.KEY_SREPLACE(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.KEY_SREPLACEj tcurses.KEY_SRESET(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_SRESETj tcurses.KEY_SRIGHT(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_SRIGHTj tcurses.KEY_SRSUME(j&j&?https://docs.python.org/3/library/curses.html#curses.KEY_SRSUMEj tcurses.KEY_SSAVE(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SSAVEj tcurses.KEY_SSUSPEND(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.KEY_SSUSPENDj tcurses.KEY_STAB(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_STABj tcurses.KEY_SUNDO(j&j&>https://docs.python.org/3/library/curses.html#curses.KEY_SUNDOj tcurses.KEY_SUSPEND(j&j&@https://docs.python.org/3/library/curses.html#curses.KEY_SUSPENDj tcurses.KEY_UNDO(j&j&=https://docs.python.org/3/library/curses.html#curses.KEY_UNDOj t curses.KEY_UP(j&j&;https://docs.python.org/3/library/curses.html#curses.KEY_UPj t curses.LINES(j&j&:https://docs.python.org/3/library/curses.html#curses.LINESj t curses.OK(j&j&7https://docs.python.org/3/library/curses.html#curses.OKj tcurses.__version__(j&j&@https://docs.python.org/3/library/curses.html#curses.__version__j tcurses.ascii.ACK(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ACKj tcurses.ascii.BEL(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.BELj tcurses.ascii.BS(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.BSj tcurses.ascii.CAN(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.CANj tcurses.ascii.CR(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.CRj tcurses.ascii.DC1(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.DC1j tcurses.ascii.DC2(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.DC2j tcurses.ascii.DC3(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.DC3j tcurses.ascii.DC4(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.DC4j tcurses.ascii.DEL(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.DELj tcurses.ascii.DLE(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.DLEj tcurses.ascii.EM(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.EMj tcurses.ascii.ENQ(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ENQj tcurses.ascii.EOT(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.EOTj tcurses.ascii.ESC(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ESCj tcurses.ascii.ETB(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ETBj tcurses.ascii.ETX(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ETXj tcurses.ascii.FF(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.FFj tcurses.ascii.FS(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.FSj tcurses.ascii.GS(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.GSj tcurses.ascii.HT(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.HTj tcurses.ascii.LF(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.LFj tcurses.ascii.NAK(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.NAKj tcurses.ascii.NL(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.NLj tcurses.ascii.NUL(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.NULj tcurses.ascii.RS(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.RSj tcurses.ascii.SI(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.SIj tcurses.ascii.SO(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.SOj tcurses.ascii.SOH(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.SOHj tcurses.ascii.SP(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.SPj tcurses.ascii.STX(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.STXj tcurses.ascii.SUB(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.SUBj tcurses.ascii.SYN(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.SYNj tcurses.ascii.TAB(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.TABj tcurses.ascii.US(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.USj tcurses.ascii.VT(j&j&Chttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.VTj tcurses.ascii.controlnames(j&j&Mhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.controlnamesj tcurses.ncurses_version(j&j&Dhttps://docs.python.org/3/library/curses.html#curses.ncurses_versionj tcurses.version(j&j&https://docs.python.org/3/library/dis.html#dis.Instruction.argj tdis.Instruction.argrepr(j&j&Bhttps://docs.python.org/3/library/dis.html#dis.Instruction.argreprj tdis.Instruction.argval(j&j&Ahttps://docs.python.org/3/library/dis.html#dis.Instruction.argvalj tdis.Instruction.is_jump_target(j&j&Ihttps://docs.python.org/3/library/dis.html#dis.Instruction.is_jump_targetj tdis.Instruction.offset(j&j&Ahttps://docs.python.org/3/library/dis.html#dis.Instruction.offsetj tdis.Instruction.opcode(j&j&Ahttps://docs.python.org/3/library/dis.html#dis.Instruction.opcodej tdis.Instruction.opname(j&j&Ahttps://docs.python.org/3/library/dis.html#dis.Instruction.opnamej tdis.Instruction.positions(j&j&Dhttps://docs.python.org/3/library/dis.html#dis.Instruction.positionsj tdis.Instruction.starts_line(j&j&Fhttps://docs.python.org/3/library/dis.html#dis.Instruction.starts_linej tdis.Positions.col_offset(j&j&Chttps://docs.python.org/3/library/dis.html#dis.Positions.col_offsetj tdis.Positions.end_col_offset(j&j&Ghttps://docs.python.org/3/library/dis.html#dis.Positions.end_col_offsetj tdis.Positions.end_lineno(j&j&Chttps://docs.python.org/3/library/dis.html#dis.Positions.end_linenoj tdis.Positions.lineno(j&j&?https://docs.python.org/3/library/dis.html#dis.Positions.linenoj t dis.cmp_op(j&j&5https://docs.python.org/3/library/dis.html#dis.cmp_opj t dis.hasarg(j&j&5https://docs.python.org/3/library/dis.html#dis.hasargj tdis.hascompare(j&j&9https://docs.python.org/3/library/dis.html#dis.hascomparej t dis.hasconst(j&j&7https://docs.python.org/3/library/dis.html#dis.hasconstj t dis.hasexc(j&j&5https://docs.python.org/3/library/dis.html#dis.hasexcj t dis.hasfree(j&j&6https://docs.python.org/3/library/dis.html#dis.hasfreej t dis.hasjabs(j&j&6https://docs.python.org/3/library/dis.html#dis.hasjabsj t dis.hasjrel(j&j&6https://docs.python.org/3/library/dis.html#dis.hasjrelj t dis.haslocal(j&j&7https://docs.python.org/3/library/dis.html#dis.haslocalj t dis.hasname(j&j&6https://docs.python.org/3/library/dis.html#dis.hasnamej t dis.opmap(j&j&4https://docs.python.org/3/library/dis.html#dis.opmapj t dis.opname(j&j&5https://docs.python.org/3/library/dis.html#dis.opnamej tdoctest.COMPARISON_FLAGS(j&j&Ghttps://docs.python.org/3/library/doctest.html#doctest.COMPARISON_FLAGSj tdoctest.DONT_ACCEPT_BLANKLINE(j&j&Lhttps://docs.python.org/3/library/doctest.html#doctest.DONT_ACCEPT_BLANKLINEj tdoctest.DONT_ACCEPT_TRUE_FOR_1(j&j&Mhttps://docs.python.org/3/library/doctest.html#doctest.DONT_ACCEPT_TRUE_FOR_1j tdoctest.ELLIPSIS(j&j&?https://docs.python.org/3/library/doctest.html#doctest.ELLIPSISj tdoctest.FAIL_FAST(j&j&@https://docs.python.org/3/library/doctest.html#doctest.FAIL_FASTj tdoctest.IGNORE_EXCEPTION_DETAIL(j&j&Nhttps://docs.python.org/3/library/doctest.html#doctest.IGNORE_EXCEPTION_DETAILj tdoctest.NORMALIZE_WHITESPACE(j&j&Khttps://docs.python.org/3/library/doctest.html#doctest.NORMALIZE_WHITESPACEj tdoctest.REPORTING_FLAGS(j&j&Fhttps://docs.python.org/3/library/doctest.html#doctest.REPORTING_FLAGSj tdoctest.REPORT_CDIFF(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest.REPORT_CDIFFj tdoctest.REPORT_NDIFF(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest.REPORT_NDIFFj t!doctest.REPORT_ONLY_FIRST_FAILURE(j&j&Phttps://docs.python.org/3/library/doctest.html#doctest.REPORT_ONLY_FIRST_FAILUREj tdoctest.REPORT_UDIFF(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest.REPORT_UDIFFj t doctest.SKIP(j&j&;https://docs.python.org/3/library/doctest.html#doctest.SKIPj t%email.contentmanager.raw_data_manager(j&j&ahttps://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.raw_data_managerj temail.policy.HTTP(j&j&Ehttps://docs.python.org/3/library/email.policy.html#email.policy.HTTPj temail.policy.SMTP(j&j&Ehttps://docs.python.org/3/library/email.policy.html#email.policy.SMTPj temail.policy.SMTPUTF8(j&j&Ihttps://docs.python.org/3/library/email.policy.html#email.policy.SMTPUTF8j temail.policy.compat32(j&j&Ihttps://docs.python.org/3/library/email.policy.html#email.policy.compat32j temail.policy.default(j&j&Hhttps://docs.python.org/3/library/email.policy.html#email.policy.defaultj temail.policy.strict(j&j&Ghttps://docs.python.org/3/library/email.policy.html#email.policy.strictj t errno.E2BIG(j&j&8https://docs.python.org/3/library/errno.html#errno.E2BIGj t errno.EACCES(j&j&9https://docs.python.org/3/library/errno.html#errno.EACCESj terrno.EADDRINUSE(j&j&=https://docs.python.org/3/library/errno.html#errno.EADDRINUSEj terrno.EADDRNOTAVAIL(j&j&@https://docs.python.org/3/library/errno.html#errno.EADDRNOTAVAILj t errno.EADV(j&j&7https://docs.python.org/3/library/errno.html#errno.EADVj terrno.EAFNOSUPPORT(j&j&?https://docs.python.org/3/library/errno.html#errno.EAFNOSUPPORTj t errno.EAGAIN(j&j&9https://docs.python.org/3/library/errno.html#errno.EAGAINj terrno.EALREADY(j&j&;https://docs.python.org/3/library/errno.html#errno.EALREADYj t errno.EBADE(j&j&8https://docs.python.org/3/library/errno.html#errno.EBADEj t errno.EBADF(j&j&8https://docs.python.org/3/library/errno.html#errno.EBADFj t errno.EBADFD(j&j&9https://docs.python.org/3/library/errno.html#errno.EBADFDj t errno.EBADMSG(j&j&:https://docs.python.org/3/library/errno.html#errno.EBADMSGj t errno.EBADR(j&j&8https://docs.python.org/3/library/errno.html#errno.EBADRj t errno.EBADRQC(j&j&:https://docs.python.org/3/library/errno.html#errno.EBADRQCj t errno.EBADSLT(j&j&:https://docs.python.org/3/library/errno.html#errno.EBADSLTj t errno.EBFONT(j&j&9https://docs.python.org/3/library/errno.html#errno.EBFONTj t errno.EBUSY(j&j&8https://docs.python.org/3/library/errno.html#errno.EBUSYj terrno.ECANCELED(j&j&https://docs.python.org/3/library/errno.html#errno.EINPROGRESSj t errno.EINTR(j&j&8https://docs.python.org/3/library/errno.html#errno.EINTRj t errno.EINVAL(j&j&9https://docs.python.org/3/library/errno.html#errno.EINVALj t errno.EIO(j&j&6https://docs.python.org/3/library/errno.html#errno.EIOj t errno.EISCONN(j&j&:https://docs.python.org/3/library/errno.html#errno.EISCONNj t errno.EISDIR(j&j&9https://docs.python.org/3/library/errno.html#errno.EISDIRj t errno.EISNAM(j&j&9https://docs.python.org/3/library/errno.html#errno.EISNAMj t errno.EL2HLT(j&j&9https://docs.python.org/3/library/errno.html#errno.EL2HLTj terrno.EL2NSYNC(j&j&;https://docs.python.org/3/library/errno.html#errno.EL2NSYNCj t errno.EL3HLT(j&j&9https://docs.python.org/3/library/errno.html#errno.EL3HLTj t errno.EL3RST(j&j&9https://docs.python.org/3/library/errno.html#errno.EL3RSTj t errno.ELIBACC(j&j&:https://docs.python.org/3/library/errno.html#errno.ELIBACCj t errno.ELIBBAD(j&j&:https://docs.python.org/3/library/errno.html#errno.ELIBBADj terrno.ELIBEXEC(j&j&;https://docs.python.org/3/library/errno.html#errno.ELIBEXECj t errno.ELIBMAX(j&j&:https://docs.python.org/3/library/errno.html#errno.ELIBMAXj t errno.ELIBSCN(j&j&:https://docs.python.org/3/library/errno.html#errno.ELIBSCNj t errno.ELNRNG(j&j&9https://docs.python.org/3/library/errno.html#errno.ELNRNGj t errno.ELOOP(j&j&8https://docs.python.org/3/library/errno.html#errno.ELOOPj t errno.EMFILE(j&j&9https://docs.python.org/3/library/errno.html#errno.EMFILEj t errno.EMLINK(j&j&9https://docs.python.org/3/library/errno.html#errno.EMLINKj terrno.EMSGSIZE(j&j&;https://docs.python.org/3/library/errno.html#errno.EMSGSIZEj terrno.EMULTIHOP(j&j&https://docs.python.org/3/library/errno.html#errno.ENETUNREACHj t errno.ENFILE(j&j&9https://docs.python.org/3/library/errno.html#errno.ENFILEj t errno.ENOANO(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOANOj t errno.ENOBUFS(j&j&:https://docs.python.org/3/library/errno.html#errno.ENOBUFSj t errno.ENOCSI(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOCSIj t errno.ENODATA(j&j&:https://docs.python.org/3/library/errno.html#errno.ENODATAj t errno.ENODEV(j&j&9https://docs.python.org/3/library/errno.html#errno.ENODEVj t errno.ENOENT(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOENTj t errno.ENOEXEC(j&j&:https://docs.python.org/3/library/errno.html#errno.ENOEXECj t errno.ENOLCK(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOLCKj t errno.ENOLINK(j&j&:https://docs.python.org/3/library/errno.html#errno.ENOLINKj t errno.ENOMEM(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOMEMj t errno.ENOMSG(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOMSGj t errno.ENONET(j&j&9https://docs.python.org/3/library/errno.html#errno.ENONETj t errno.ENOPKG(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOPKGj terrno.ENOPROTOOPT(j&j&>https://docs.python.org/3/library/errno.html#errno.ENOPROTOOPTj t errno.ENOSPC(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOSPCj t errno.ENOSR(j&j&8https://docs.python.org/3/library/errno.html#errno.ENOSRj t errno.ENOSTR(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOSTRj t errno.ENOSYS(j&j&9https://docs.python.org/3/library/errno.html#errno.ENOSYSj t errno.ENOTBLK(j&j&:https://docs.python.org/3/library/errno.html#errno.ENOTBLKj terrno.ENOTCAPABLE(j&j&>https://docs.python.org/3/library/errno.html#errno.ENOTCAPABLEj terrno.ENOTCONN(j&j&;https://docs.python.org/3/library/errno.html#errno.ENOTCONNj t errno.ENOTDIR(j&j&:https://docs.python.org/3/library/errno.html#errno.ENOTDIRj terrno.ENOTEMPTY(j&j&https://docs.python.org/3/library/errno.html#errno.EWOULDBLOCKj t errno.EXDEV(j&j&8https://docs.python.org/3/library/errno.html#errno.EXDEVj t errno.EXFULL(j&j&9https://docs.python.org/3/library/errno.html#errno.EXFULLj terrno.errorcode(j&j&https://docs.python.org/3/library/gc.html#gc.DEBUG_COLLECTABLEj t gc.DEBUG_LEAK(j&j&7https://docs.python.org/3/library/gc.html#gc.DEBUG_LEAKj tgc.DEBUG_SAVEALL(j&j&:https://docs.python.org/3/library/gc.html#gc.DEBUG_SAVEALLj tgc.DEBUG_STATS(j&j&8https://docs.python.org/3/library/gc.html#gc.DEBUG_STATSj tgc.DEBUG_UNCOLLECTABLE(j&j&@https://docs.python.org/3/library/gc.html#gc.DEBUG_UNCOLLECTABLEj t gc.callbacks(j&j&6https://docs.python.org/3/library/gc.html#gc.callbacksj t gc.garbage(j&j&4https://docs.python.org/3/library/gc.html#gc.garbagej thashlib.algorithms_available(j&j&Khttps://docs.python.org/3/library/hashlib.html#hashlib.algorithms_availablej thashlib.algorithms_guaranteed(j&j&Lhttps://docs.python.org/3/library/hashlib.html#hashlib.algorithms_guaranteedj thashlib.blake2b.MAX_DIGEST_SIZE(j&j&Nhttps://docs.python.org/3/library/hashlib.html#hashlib.blake2b.MAX_DIGEST_SIZEj thashlib.blake2b.MAX_KEY_SIZE(j&j&Khttps://docs.python.org/3/library/hashlib.html#hashlib.blake2b.MAX_KEY_SIZEj thashlib.blake2b.PERSON_SIZE(j&j&Jhttps://docs.python.org/3/library/hashlib.html#hashlib.blake2b.PERSON_SIZEj thashlib.blake2b.SALT_SIZE(j&j&Hhttps://docs.python.org/3/library/hashlib.html#hashlib.blake2b.SALT_SIZEj thashlib.blake2s.MAX_DIGEST_SIZE(j&j&Nhttps://docs.python.org/3/library/hashlib.html#hashlib.blake2s.MAX_DIGEST_SIZEj thashlib.blake2s.MAX_KEY_SIZE(j&j&Khttps://docs.python.org/3/library/hashlib.html#hashlib.blake2s.MAX_KEY_SIZEj thashlib.blake2s.PERSON_SIZE(j&j&Jhttps://docs.python.org/3/library/hashlib.html#hashlib.blake2s.PERSON_SIZEj thashlib.blake2s.SALT_SIZE(j&j&Hhttps://docs.python.org/3/library/hashlib.html#hashlib.blake2s.SALT_SIZEj thashlib.hash.block_size(j&j&Fhttps://docs.python.org/3/library/hashlib.html#hashlib.hash.block_sizej thashlib.hash.digest_size(j&j&Ghttps://docs.python.org/3/library/hashlib.html#hashlib.hash.digest_sizej thtml.entities.codepoint2name(j&j&Qhttps://docs.python.org/3/library/html.entities.html#html.entities.codepoint2namej thtml.entities.entitydefs(j&j&Mhttps://docs.python.org/3/library/html.entities.html#html.entities.entitydefsj thtml.entities.html5(j&j&Hhttps://docs.python.org/3/library/html.entities.html#html.entities.html5j thtml.entities.name2codepoint(j&j&Qhttps://docs.python.org/3/library/html.entities.html#html.entities.name2codepointj thttp.client.HTTPS_PORT(j&j&Ihttps://docs.python.org/3/library/http.client.html#http.client.HTTPS_PORTj thttp.client.HTTP_PORT(j&j&Hhttps://docs.python.org/3/library/http.client.html#http.client.HTTP_PORTj thttp.client.responses(j&j&Hhttps://docs.python.org/3/library/http.client.html#http.client.responsesj t imghdr.tests(j&j&:https://docs.python.org/3/library/imghdr.html#imghdr.testsj timportlib.resources.Package(j&j&Vhttps://docs.python.org/3/library/importlib.resources.html#importlib.resources.Packagej timportlib.resources.Resource(j&j&Whttps://docs.python.org/3/library/importlib.resources.html#importlib.resources.Resourcej tinspect.CO_ASYNC_GENERATOR(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.CO_ASYNC_GENERATORj tinspect.CO_COROUTINE(j&j&Chttps://docs.python.org/3/library/inspect.html#inspect.CO_COROUTINEj tinspect.CO_GENERATOR(j&j&Chttps://docs.python.org/3/library/inspect.html#inspect.CO_GENERATORj tinspect.CO_ITERABLE_COROUTINE(j&j&Lhttps://docs.python.org/3/library/inspect.html#inspect.CO_ITERABLE_COROUTINEj tinspect.CO_NESTED(j&j&@https://docs.python.org/3/library/inspect.html#inspect.CO_NESTEDj tinspect.CO_NEWLOCALS(j&j&Chttps://docs.python.org/3/library/inspect.html#inspect.CO_NEWLOCALSj tinspect.CO_OPTIMIZED(j&j&Chttps://docs.python.org/3/library/inspect.html#inspect.CO_OPTIMIZEDj tinspect.CO_VARARGS(j&j&Ahttps://docs.python.org/3/library/inspect.html#inspect.CO_VARARGSj tinspect.CO_VARKEYWORDS(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.CO_VARKEYWORDSj tio.DEFAULT_BUFFER_SIZE(j&j&@https://docs.python.org/3/library/io.html#io.DEFAULT_BUFFER_SIZEj tkeyword.kwlist(j&j&=https://docs.python.org/3/library/keyword.html#keyword.kwlistj tkeyword.softkwlist(j&j&Ahttps://docs.python.org/3/library/keyword.html#keyword.softkwlistj tlicense(j&j&8https://docs.python.org/3/library/constants.html#licensej tlocale.ABDAY_1(j&j&https://docs.python.org/3/library/locale.html#locale.ERA_D_FMTj tlocale.ERA_D_T_FMT(j&j&@https://docs.python.org/3/library/locale.html#locale.ERA_D_T_FMTj tlocale.ERA_T_FMT(j&j&>https://docs.python.org/3/library/locale.html#locale.ERA_T_FMTj t locale.LC_ALL(j&j&;https://docs.python.org/3/library/locale.html#locale.LC_ALLj tlocale.LC_COLLATE(j&j&?https://docs.python.org/3/library/locale.html#locale.LC_COLLATEj tlocale.LC_CTYPE(j&j&=https://docs.python.org/3/library/locale.html#locale.LC_CTYPEj tlocale.LC_MESSAGES(j&j&@https://docs.python.org/3/library/locale.html#locale.LC_MESSAGESj tlocale.LC_MONETARY(j&j&@https://docs.python.org/3/library/locale.html#locale.LC_MONETARYj tlocale.LC_NUMERIC(j&j&?https://docs.python.org/3/library/locale.html#locale.LC_NUMERICj tlocale.LC_TIME(j&j&https://docs.python.org/3/library/locale.html#locale.RADIXCHARj tlocale.THOUSEP(j&j&https://docs.python.org/3/library/logging.html#logging.WARNINGj tmarshal.version(j&j&>https://docs.python.org/3/library/marshal.html#marshal.versionj tmath.e(j&j&2https://docs.python.org/3/library/math.html#math.ej tmath.inf(j&j&4https://docs.python.org/3/library/math.html#math.infj tmath.nan(j&j&4https://docs.python.org/3/library/math.html#math.nanj tmath.pi(j&j&3https://docs.python.org/3/library/math.html#math.pij tmath.tau(j&j&4https://docs.python.org/3/library/math.html#math.tauj tmimetypes.common_types(j&j&Ghttps://docs.python.org/3/library/mimetypes.html#mimetypes.common_typesj tmimetypes.encodings_map(j&j&Hhttps://docs.python.org/3/library/mimetypes.html#mimetypes.encodings_mapj tmimetypes.inited(j&j&Ahttps://docs.python.org/3/library/mimetypes.html#mimetypes.initedj tmimetypes.knownfiles(j&j&Ehttps://docs.python.org/3/library/mimetypes.html#mimetypes.knownfilesj tmimetypes.suffix_map(j&j&Ehttps://docs.python.org/3/library/mimetypes.html#mimetypes.suffix_mapj tmimetypes.types_map(j&j&Dhttps://docs.python.org/3/library/mimetypes.html#mimetypes.types_mapj tmmap.MADV_AUTOSYNC(j&j&>https://docs.python.org/3/library/mmap.html#mmap.MADV_AUTOSYNCj tmmap.MADV_CORE(j&j&:https://docs.python.org/3/library/mmap.html#mmap.MADV_COREj tmmap.MADV_DODUMP(j&j&https://docs.python.org/3/library/mmap.html#mmap.MADV_DONTDUMPj tmmap.MADV_DONTFORK(j&j&>https://docs.python.org/3/library/mmap.html#mmap.MADV_DONTFORKj tmmap.MADV_DONTNEED(j&j&>https://docs.python.org/3/library/mmap.html#mmap.MADV_DONTNEEDj tmmap.MADV_FREE(j&j&:https://docs.python.org/3/library/mmap.html#mmap.MADV_FREEj tmmap.MADV_FREE_REUSABLE(j&j&Chttps://docs.python.org/3/library/mmap.html#mmap.MADV_FREE_REUSABLEj tmmap.MADV_FREE_REUSE(j&j&@https://docs.python.org/3/library/mmap.html#mmap.MADV_FREE_REUSEj tmmap.MADV_HUGEPAGE(j&j&>https://docs.python.org/3/library/mmap.html#mmap.MADV_HUGEPAGEj tmmap.MADV_HWPOISON(j&j&>https://docs.python.org/3/library/mmap.html#mmap.MADV_HWPOISONj tmmap.MADV_MERGEABLE(j&j&?https://docs.python.org/3/library/mmap.html#mmap.MADV_MERGEABLEj tmmap.MADV_NOCORE(j&j&https://docs.python.org/3/library/mmap.html#mmap.MADV_WILLNEEDj tmmap.MAP_ALIGNED_SUPER(j&j&Bhttps://docs.python.org/3/library/mmap.html#mmap.MAP_ALIGNED_SUPERj t mmap.MAP_ANON(j&j&9https://docs.python.org/3/library/mmap.html#mmap.MAP_ANONj tmmap.MAP_ANONYMOUS(j&j&>https://docs.python.org/3/library/mmap.html#mmap.MAP_ANONYMOUSj tmmap.MAP_CONCEAL(j&j&https://docs.python.org/3/library/mmap.html#mmap.MAP_DENYWRITEj tmmap.MAP_EXECUTABLE(j&j&?https://docs.python.org/3/library/mmap.html#mmap.MAP_EXECUTABLEj tmmap.MAP_POPULATE(j&j&=https://docs.python.org/3/library/mmap.html#mmap.MAP_POPULATEj tmmap.MAP_PRIVATE(j&j&https://docs.python.org/3/library/msvcrt.html#msvcrt.LK_NBRLCKj tmsvcrt.LK_RLCK(j&j&https://docs.python.org/3/library/os.html#os.MFD_ALLOW_SEALINGj tos.MFD_CLOEXEC(j&j&8https://docs.python.org/3/library/os.html#os.MFD_CLOEXECj tos.MFD_HUGETLB(j&j&8https://docs.python.org/3/library/os.html#os.MFD_HUGETLBj tos.MFD_HUGE_16GB(j&j&:https://docs.python.org/3/library/os.html#os.MFD_HUGE_16GBj tos.MFD_HUGE_16MB(j&j&:https://docs.python.org/3/library/os.html#os.MFD_HUGE_16MBj tos.MFD_HUGE_1GB(j&j&9https://docs.python.org/3/library/os.html#os.MFD_HUGE_1GBj tos.MFD_HUGE_1MB(j&j&9https://docs.python.org/3/library/os.html#os.MFD_HUGE_1MBj tos.MFD_HUGE_256MB(j&j&;https://docs.python.org/3/library/os.html#os.MFD_HUGE_256MBj tos.MFD_HUGE_2GB(j&j&9https://docs.python.org/3/library/os.html#os.MFD_HUGE_2GBj tos.MFD_HUGE_2MB(j&j&9https://docs.python.org/3/library/os.html#os.MFD_HUGE_2MBj tos.MFD_HUGE_32MB(j&j&:https://docs.python.org/3/library/os.html#os.MFD_HUGE_32MBj tos.MFD_HUGE_512KB(j&j&;https://docs.python.org/3/library/os.html#os.MFD_HUGE_512KBj tos.MFD_HUGE_512MB(j&j&;https://docs.python.org/3/library/os.html#os.MFD_HUGE_512MBj tos.MFD_HUGE_64KB(j&j&:https://docs.python.org/3/library/os.html#os.MFD_HUGE_64KBj tos.MFD_HUGE_8MB(j&j&9https://docs.python.org/3/library/os.html#os.MFD_HUGE_8MBj tos.MFD_HUGE_MASK(j&j&:https://docs.python.org/3/library/os.html#os.MFD_HUGE_MASKj tos.MFD_HUGE_SHIFT(j&j&;https://docs.python.org/3/library/os.html#os.MFD_HUGE_SHIFTj t os.O_APPEND(j&j&5https://docs.python.org/3/library/os.html#os.O_APPENDj t os.O_ASYNC(j&j&4https://docs.python.org/3/library/os.html#os.O_ASYNCj t os.O_BINARY(j&j&5https://docs.python.org/3/library/os.html#os.O_BINARYj t os.O_CLOEXEC(j&j&6https://docs.python.org/3/library/os.html#os.O_CLOEXECj t os.O_CREAT(j&j&4https://docs.python.org/3/library/os.html#os.O_CREATj t os.O_DIRECT(j&j&5https://docs.python.org/3/library/os.html#os.O_DIRECTj tos.O_DIRECTORY(j&j&8https://docs.python.org/3/library/os.html#os.O_DIRECTORYj t os.O_DSYNC(j&j&4https://docs.python.org/3/library/os.html#os.O_DSYNCj t os.O_EVTONLY(j&j&6https://docs.python.org/3/library/os.html#os.O_EVTONLYj t os.O_EXCL(j&j&3https://docs.python.org/3/library/os.html#os.O_EXCLj t os.O_EXLOCK(j&j&5https://docs.python.org/3/library/os.html#os.O_EXLOCKj t os.O_FSYNC(j&j&4https://docs.python.org/3/library/os.html#os.O_FSYNCj t os.O_NDELAY(j&j&5https://docs.python.org/3/library/os.html#os.O_NDELAYj t os.O_NOATIME(j&j&6https://docs.python.org/3/library/os.html#os.O_NOATIMEj t os.O_NOCTTY(j&j&5https://docs.python.org/3/library/os.html#os.O_NOCTTYj t os.O_NOFOLLOW(j&j&7https://docs.python.org/3/library/os.html#os.O_NOFOLLOWj tos.O_NOFOLLOW_ANY(j&j&;https://docs.python.org/3/library/os.html#os.O_NOFOLLOW_ANYj tos.O_NOINHERIT(j&j&8https://docs.python.org/3/library/os.html#os.O_NOINHERITj t os.O_NONBLOCK(j&j&7https://docs.python.org/3/library/os.html#os.O_NONBLOCKj t os.O_PATH(j&j&3https://docs.python.org/3/library/os.html#os.O_PATHj t os.O_RANDOM(j&j&5https://docs.python.org/3/library/os.html#os.O_RANDOMj t os.O_RDONLY(j&j&5https://docs.python.org/3/library/os.html#os.O_RDONLYj t os.O_RDWR(j&j&3https://docs.python.org/3/library/os.html#os.O_RDWRj t os.O_RSYNC(j&j&4https://docs.python.org/3/library/os.html#os.O_RSYNCj tos.O_SEQUENTIAL(j&j&9https://docs.python.org/3/library/os.html#os.O_SEQUENTIALj t os.O_SHLOCK(j&j&5https://docs.python.org/3/library/os.html#os.O_SHLOCKj tos.O_SHORT_LIVED(j&j&:https://docs.python.org/3/library/os.html#os.O_SHORT_LIVEDj t os.O_SYMLINK(j&j&6https://docs.python.org/3/library/os.html#os.O_SYMLINKj t os.O_SYNC(j&j&3https://docs.python.org/3/library/os.html#os.O_SYNCj tos.O_TEMPORARY(j&j&8https://docs.python.org/3/library/os.html#os.O_TEMPORARYj t os.O_TEXT(j&j&3https://docs.python.org/3/library/os.html#os.O_TEXTj t os.O_TMPFILE(j&j&6https://docs.python.org/3/library/os.html#os.O_TMPFILEj t os.O_TRUNC(j&j&4https://docs.python.org/3/library/os.html#os.O_TRUNCj t os.O_WRONLY(j&j&5https://docs.python.org/3/library/os.html#os.O_WRONLYj tos.PIDFD_NONBLOCK(j&j&;https://docs.python.org/3/library/os.html#os.PIDFD_NONBLOCKj tos.POSIX_FADV_DONTNEED(j&j&@https://docs.python.org/3/library/os.html#os.POSIX_FADV_DONTNEEDj tos.POSIX_FADV_NOREUSE(j&j&?https://docs.python.org/3/library/os.html#os.POSIX_FADV_NOREUSEj tos.POSIX_FADV_NORMAL(j&j&>https://docs.python.org/3/library/os.html#os.POSIX_FADV_NORMALj tos.POSIX_FADV_RANDOM(j&j&>https://docs.python.org/3/library/os.html#os.POSIX_FADV_RANDOMj tos.POSIX_FADV_SEQUENTIAL(j&j&Bhttps://docs.python.org/3/library/os.html#os.POSIX_FADV_SEQUENTIALj tos.POSIX_FADV_WILLNEED(j&j&@https://docs.python.org/3/library/os.html#os.POSIX_FADV_WILLNEEDj tos.POSIX_SPAWN_CLOSE(j&j&>https://docs.python.org/3/library/os.html#os.POSIX_SPAWN_CLOSEj tos.POSIX_SPAWN_DUP2(j&j&=https://docs.python.org/3/library/os.html#os.POSIX_SPAWN_DUP2j tos.POSIX_SPAWN_OPEN(j&j&=https://docs.python.org/3/library/os.html#os.POSIX_SPAWN_OPENj tos.PRIO_DARWIN_BG(j&j&;https://docs.python.org/3/library/os.html#os.PRIO_DARWIN_BGj tos.PRIO_DARWIN_NONUI(j&j&>https://docs.python.org/3/library/os.html#os.PRIO_DARWIN_NONUIj tos.PRIO_DARWIN_PROCESS(j&j&@https://docs.python.org/3/library/os.html#os.PRIO_DARWIN_PROCESSj tos.PRIO_DARWIN_THREAD(j&j&?https://docs.python.org/3/library/os.html#os.PRIO_DARWIN_THREADj t os.PRIO_PGRP(j&j&6https://docs.python.org/3/library/os.html#os.PRIO_PGRPj tos.PRIO_PROCESS(j&j&9https://docs.python.org/3/library/os.html#os.PRIO_PROCESSj t os.PRIO_USER(j&j&6https://docs.python.org/3/library/os.html#os.PRIO_USERj tos.P_ALL(j&j&2https://docs.python.org/3/library/os.html#os.P_ALLj t os.P_DETACH(j&j&5https://docs.python.org/3/library/os.html#os.P_DETACHj t os.P_NOWAIT(j&j&5https://docs.python.org/3/library/os.html#os.P_NOWAITj t os.P_NOWAITO(j&j&6https://docs.python.org/3/library/os.html#os.P_NOWAITOj t os.P_OVERLAY(j&j&6https://docs.python.org/3/library/os.html#os.P_OVERLAYj t os.P_PGID(j&j&3https://docs.python.org/3/library/os.html#os.P_PGIDj tos.P_PID(j&j&2https://docs.python.org/3/library/os.html#os.P_PIDj t os.P_PIDFD(j&j&4https://docs.python.org/3/library/os.html#os.P_PIDFDj t os.P_WAIT(j&j&3https://docs.python.org/3/library/os.html#os.P_WAITj tos.RTLD_DEEPBIND(j&j&:https://docs.python.org/3/library/os.html#os.RTLD_DEEPBINDj tos.RTLD_GLOBAL(j&j&8https://docs.python.org/3/library/os.html#os.RTLD_GLOBALj t os.RTLD_LAZY(j&j&6https://docs.python.org/3/library/os.html#os.RTLD_LAZYj t os.RTLD_LOCAL(j&j&7https://docs.python.org/3/library/os.html#os.RTLD_LOCALj tos.RTLD_NODELETE(j&j&:https://docs.python.org/3/library/os.html#os.RTLD_NODELETEj tos.RTLD_NOLOAD(j&j&8https://docs.python.org/3/library/os.html#os.RTLD_NOLOADj t os.RTLD_NOW(j&j&5https://docs.python.org/3/library/os.html#os.RTLD_NOWj t os.RWF_APPEND(j&j&7https://docs.python.org/3/library/os.html#os.RWF_APPENDj t os.RWF_DSYNC(j&j&6https://docs.python.org/3/library/os.html#os.RWF_DSYNCj t os.RWF_HIPRI(j&j&6https://docs.python.org/3/library/os.html#os.RWF_HIPRIj t os.RWF_NOWAIT(j&j&7https://docs.python.org/3/library/os.html#os.RWF_NOWAITj t os.RWF_SYNC(j&j&5https://docs.python.org/3/library/os.html#os.RWF_SYNCj tos.R_OK(j&j&1https://docs.python.org/3/library/os.html#os.R_OKj tos.SCHED_BATCH(j&j&8https://docs.python.org/3/library/os.html#os.SCHED_BATCHj t os.SCHED_FIFO(j&j&7https://docs.python.org/3/library/os.html#os.SCHED_FIFOj t os.SCHED_IDLE(j&j&7https://docs.python.org/3/library/os.html#os.SCHED_IDLEj tos.SCHED_OTHER(j&j&8https://docs.python.org/3/library/os.html#os.SCHED_OTHERj tos.SCHED_RESET_ON_FORK(j&j&@https://docs.python.org/3/library/os.html#os.SCHED_RESET_ON_FORKj t os.SCHED_RR(j&j&5https://docs.python.org/3/library/os.html#os.SCHED_RRj tos.SCHED_SPORADIC(j&j&;https://docs.python.org/3/library/os.html#os.SCHED_SPORADICj t os.SEEK_CUR(j&j&5https://docs.python.org/3/library/os.html#os.SEEK_CURj t os.SEEK_DATA(j&j&6https://docs.python.org/3/library/os.html#os.SEEK_DATAj t os.SEEK_END(j&j&5https://docs.python.org/3/library/os.html#os.SEEK_ENDj t os.SEEK_HOLE(j&j&6https://docs.python.org/3/library/os.html#os.SEEK_HOLEj t os.SEEK_SET(j&j&5https://docs.python.org/3/library/os.html#os.SEEK_SETj t os.SF_MNOWAIT(j&j&7https://docs.python.org/3/library/os.html#os.SF_MNOWAITj t os.SF_NOCACHE(j&j&7https://docs.python.org/3/library/os.html#os.SF_NOCACHEj tos.SF_NODISKIO(j&j&8https://docs.python.org/3/library/os.html#os.SF_NODISKIOj t os.SF_SYNC(j&j&4https://docs.python.org/3/library/os.html#os.SF_SYNCj tos.SPLICE_F_MORE(j&j&:https://docs.python.org/3/library/os.html#os.SPLICE_F_MOREj tos.SPLICE_F_MOVE(j&j&:https://docs.python.org/3/library/os.html#os.SPLICE_F_MOVEj tos.SPLICE_F_NONBLOCK(j&j&>https://docs.python.org/3/library/os.html#os.SPLICE_F_NONBLOCKj t os.WCONTINUED(j&j&7https://docs.python.org/3/library/os.html#os.WCONTINUEDj t os.WEXITED(j&j&4https://docs.python.org/3/library/os.html#os.WEXITEDj t os.WNOHANG(j&j&4https://docs.python.org/3/library/os.html#os.WNOHANGj t os.WNOWAIT(j&j&4https://docs.python.org/3/library/os.html#os.WNOWAITj t os.WSTOPPED(j&j&5https://docs.python.org/3/library/os.html#os.WSTOPPEDj t os.WUNTRACED(j&j&6https://docs.python.org/3/library/os.html#os.WUNTRACEDj tos.W_OK(j&j&1https://docs.python.org/3/library/os.html#os.W_OKj tos.XATTR_CREATE(j&j&9https://docs.python.org/3/library/os.html#os.XATTR_CREATEj tos.XATTR_REPLACE(j&j&:https://docs.python.org/3/library/os.html#os.XATTR_REPLACEj tos.XATTR_SIZE_MAX(j&j&;https://docs.python.org/3/library/os.html#os.XATTR_SIZE_MAXj tos.X_OK(j&j&1https://docs.python.org/3/library/os.html#os.X_OKj t os.altsep(j&j&3https://docs.python.org/3/library/os.html#os.altsepj tos.confstr_names(j&j&:https://docs.python.org/3/library/os.html#os.confstr_namesj t os.curdir(j&j&3https://docs.python.org/3/library/os.html#os.curdirj t os.defpath(j&j&4https://docs.python.org/3/library/os.html#os.defpathj t os.devnull(j&j&4https://docs.python.org/3/library/os.html#os.devnullj t os.environ(j&j&4https://docs.python.org/3/library/os.html#os.environj t os.environb(j&j&5https://docs.python.org/3/library/os.html#os.environbj t os.extsep(j&j&3https://docs.python.org/3/library/os.html#os.extsepj t os.linesep(j&j&4https://docs.python.org/3/library/os.html#os.linesepj tos.name(j&j&1https://docs.python.org/3/library/os.html#os.namej t os.pardir(j&j&3https://docs.python.org/3/library/os.html#os.pardirj t"os.path.supports_unicode_filenames(j&j&Qhttps://docs.python.org/3/library/os.path.html#os.path.supports_unicode_filenamesj tos.pathconf_names(j&j&;https://docs.python.org/3/library/os.html#os.pathconf_namesj t os.pathsep(j&j&4https://docs.python.org/3/library/os.html#os.pathsepj tos.sep(j&j&0https://docs.python.org/3/library/os.html#os.sepj tos.supports_bytes_environ(j&j&Chttps://docs.python.org/3/library/os.html#os.supports_bytes_environj tos.supports_dir_fd(j&j&https://docs.python.org/3/library/signal.html#signal.SIGSTKFLTj tsignal.SIGTERM(j&j&https://docs.python.org/3/library/signal.html#signal.SIG_BLOCKj tsignal.SIG_DFL(j&j&https://docs.python.org/3/library/socket.html#socket.AF_DIVERTj tsocket.AF_HYPERV(j&j&>https://docs.python.org/3/library/socket.html#socket.AF_HYPERVj tsocket.AF_INET(j&j&https://docs.python.org/3/library/socket.html#socket.AF_PACKETj tsocket.AF_QIPCRTR(j&j&?https://docs.python.org/3/library/socket.html#socket.AF_QIPCRTRj t socket.AF_RDS(j&j&;https://docs.python.org/3/library/socket.html#socket.AF_RDSj tsocket.AF_UNIX(j&j&https://docs.python.org/3/library/socket.html#socket.AF_UNSPECj tsocket.AF_VSOCK(j&j&=https://docs.python.org/3/library/socket.html#socket.AF_VSOCKj tsocket.BDADDR_ANY(j&j&?https://docs.python.org/3/library/socket.html#socket.BDADDR_ANYj tsocket.BDADDR_LOCAL(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.BDADDR_LOCALj tsocket.CAN_BCM(j&j&https://docs.python.org/3/library/socket.html#socket.CAN_ISOTPj tsocket.CAN_J1939(j&j&>https://docs.python.org/3/library/socket.html#socket.CAN_J1939j tsocket.CAN_RAW_FD_FRAMES(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.CAN_RAW_FD_FRAMESj tsocket.CAN_RAW_JOIN_FILTERS(j&j&Ihttps://docs.python.org/3/library/socket.html#socket.CAN_RAW_JOIN_FILTERSj tsocket.ETHERTYPE_ARP(j&j&Bhttps://docs.python.org/3/library/socket.html#socket.ETHERTYPE_ARPj tsocket.ETHERTYPE_IP(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.ETHERTYPE_IPj tsocket.ETHERTYPE_IPV6(j&j&Chttps://docs.python.org/3/library/socket.html#socket.ETHERTYPE_IPV6j tsocket.ETHERTYPE_VLAN(j&j&Chttps://docs.python.org/3/library/socket.html#socket.ETHERTYPE_VLANj tsocket.ETH_P_ALL(j&j&>https://docs.python.org/3/library/socket.html#socket.ETH_P_ALLj tsocket.HCI_DATA_DIR(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.HCI_DATA_DIRj tsocket.HCI_FILTER(j&j&?https://docs.python.org/3/library/socket.html#socket.HCI_FILTERj tsocket.HCI_TIME_STAMP(j&j&Chttps://docs.python.org/3/library/socket.html#socket.HCI_TIME_STAMPj t%socket.HVSOCKET_ADDRESS_FLAG_PASSTHRU(j&j&Shttps://docs.python.org/3/library/socket.html#socket.HVSOCKET_ADDRESS_FLAG_PASSTHRUj t!socket.HVSOCKET_CONNECTED_SUSPEND(j&j&Ohttps://docs.python.org/3/library/socket.html#socket.HVSOCKET_CONNECTED_SUSPENDj tsocket.HVSOCKET_CONNECT_TIMEOUT(j&j&Mhttps://docs.python.org/3/library/socket.html#socket.HVSOCKET_CONNECT_TIMEOUTj t#socket.HVSOCKET_CONNECT_TIMEOUT_MAX(j&j&Qhttps://docs.python.org/3/library/socket.html#socket.HVSOCKET_CONNECT_TIMEOUT_MAXj tsocket.HV_GUID_BROADCAST(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.HV_GUID_BROADCASTj tsocket.HV_GUID_CHILDREN(j&j&Ehttps://docs.python.org/3/library/socket.html#socket.HV_GUID_CHILDRENj tsocket.HV_GUID_LOOPBACK(j&j&Ehttps://docs.python.org/3/library/socket.html#socket.HV_GUID_LOOPBACKj tsocket.HV_GUID_PARENT(j&j&Chttps://docs.python.org/3/library/socket.html#socket.HV_GUID_PARENTj tsocket.HV_GUID_WILDCARD(j&j&Ehttps://docs.python.org/3/library/socket.html#socket.HV_GUID_WILDCARDj tsocket.HV_GUID_ZERO(j&j&Ahttps://docs.python.org/3/library/socket.html#socket.HV_GUID_ZEROj tsocket.HV_PROTOCOL_RAW(j&j&Dhttps://docs.python.org/3/library/socket.html#socket.HV_PROTOCOL_RAWj t%socket.IOCTL_VM_SOCKETS_GET_LOCAL_CID(j&j&Shttps://docs.python.org/3/library/socket.html#socket.IOCTL_VM_SOCKETS_GET_LOCAL_CIDj tsocket.LOCAL_CREDS(j&j&@https://docs.python.org/3/library/socket.html#socket.LOCAL_CREDSj tsocket.LOCAL_CREDS_PERSISTENT(j&j&Khttps://docs.python.org/3/library/socket.html#socket.LOCAL_CREDS_PERSISTENTj t socket.PF_CAN(j&j&;https://docs.python.org/3/library/socket.html#socket.PF_CANj tsocket.PF_DIVERT(j&j&>https://docs.python.org/3/library/socket.html#socket.PF_DIVERTj tsocket.PF_PACKET(j&j&>https://docs.python.org/3/library/socket.html#socket.PF_PACKETj t socket.PF_RDS(j&j&;https://docs.python.org/3/library/socket.html#socket.PF_RDSj tsocket.SCM_CREDS2(j&j&?https://docs.python.org/3/library/socket.html#socket.SCM_CREDS2j tsocket.SHUT_RD(j&j&https://docs.python.org/3/library/socket.html#socket.SHUT_RDWRj tsocket.SHUT_WR(j&j&https://docs.python.org/3/library/socket.html#socket.SOMAXCONNj tsocket.SO_INCOMING_CPU(j&j&Dhttps://docs.python.org/3/library/socket.html#socket.SO_INCOMING_CPUj tsocket.SocketType(j&j&?https://docs.python.org/3/library/socket.html#socket.SocketTypej tsocket.has_ipv6(j&j&=https://docs.python.org/3/library/socket.html#socket.has_ipv6j t"sqlite3.LEGACY_TRANSACTION_CONTROL(j&j&Qhttps://docs.python.org/3/library/sqlite3.html#sqlite3.LEGACY_TRANSACTION_CONTROLj tsqlite3.PARSE_COLNAMES(j&j&Ehttps://docs.python.org/3/library/sqlite3.html#sqlite3.PARSE_COLNAMESj tsqlite3.PARSE_DECLTYPES(j&j&Fhttps://docs.python.org/3/library/sqlite3.html#sqlite3.PARSE_DECLTYPESj t!sqlite3.SQLITE_DBCONFIG_DEFENSIVE(j&j&Phttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_DEFENSIVEj tsqlite3.SQLITE_DBCONFIG_DQS_DDL(j&j&Nhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_DQS_DDLj tsqlite3.SQLITE_DBCONFIG_DQS_DML(j&j&Nhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_DQS_DMLj t#sqlite3.SQLITE_DBCONFIG_ENABLE_FKEY(j&j&Rhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_ENABLE_FKEYj t-sqlite3.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER(j&j&\https://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZERj t-sqlite3.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION(j&j&\https://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSIONj t#sqlite3.SQLITE_DBCONFIG_ENABLE_QPSG(j&j&Rhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_ENABLE_QPSGj t&sqlite3.SQLITE_DBCONFIG_ENABLE_TRIGGER(j&j&Uhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_ENABLE_TRIGGERj t#sqlite3.SQLITE_DBCONFIG_ENABLE_VIEW(j&j&Rhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_ENABLE_VIEWj t*sqlite3.SQLITE_DBCONFIG_LEGACY_ALTER_TABLE(j&j&Yhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_LEGACY_ALTER_TABLEj t*sqlite3.SQLITE_DBCONFIG_LEGACY_FILE_FORMAT(j&j&Yhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_LEGACY_FILE_FORMATj t(sqlite3.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE(j&j&Whttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSEj t&sqlite3.SQLITE_DBCONFIG_RESET_DATABASE(j&j&Uhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_RESET_DATABASEj t#sqlite3.SQLITE_DBCONFIG_TRIGGER_EQP(j&j&Rhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_TRIGGER_EQPj t&sqlite3.SQLITE_DBCONFIG_TRUSTED_SCHEMA(j&j&Uhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_TRUSTED_SCHEMAj t'sqlite3.SQLITE_DBCONFIG_WRITABLE_SCHEMA(j&j&Vhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DBCONFIG_WRITABLE_SCHEMAj tsqlite3.SQLITE_DENY(j&j&Bhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_DENYj tsqlite3.SQLITE_IGNORE(j&j&Dhttps://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_IGNOREj tsqlite3.SQLITE_OK(j&j&@https://docs.python.org/3/library/sqlite3.html#sqlite3.SQLITE_OKj tsqlite3.apilevel(j&j&?https://docs.python.org/3/library/sqlite3.html#sqlite3.apilevelj tsqlite3.paramstyle(j&j&Ahttps://docs.python.org/3/library/sqlite3.html#sqlite3.paramstylej tsqlite3.sqlite_version(j&j&Ehttps://docs.python.org/3/library/sqlite3.html#sqlite3.sqlite_versionj tsqlite3.sqlite_version_info(j&j&Jhttps://docs.python.org/3/library/sqlite3.html#sqlite3.sqlite_version_infoj tsqlite3.threadsafety(j&j&Chttps://docs.python.org/3/library/sqlite3.html#sqlite3.threadsafetyj tsqlite3.version(j&j&>https://docs.python.org/3/library/sqlite3.html#sqlite3.versionj tsqlite3.version_info(j&j&Chttps://docs.python.org/3/library/sqlite3.html#sqlite3.version_infoj t'ssl.ALERT_DESCRIPTION_HANDSHAKE_FAILURE(j&j&Rhttps://docs.python.org/3/library/ssl.html#ssl.ALERT_DESCRIPTION_HANDSHAKE_FAILUREj t$ssl.ALERT_DESCRIPTION_INTERNAL_ERROR(j&j&Ohttps://docs.python.org/3/library/ssl.html#ssl.ALERT_DESCRIPTION_INTERNAL_ERRORj t ssl.CERT_NONE(j&j&8https://docs.python.org/3/library/ssl.html#ssl.CERT_NONEj tssl.CERT_OPTIONAL(j&j&https://docs.python.org/3/library/ssl.html#ssl.OPENSSL_VERSIONj tssl.OPENSSL_VERSION_INFO(j&j&Chttps://docs.python.org/3/library/ssl.html#ssl.OPENSSL_VERSION_INFOj tssl.OPENSSL_VERSION_NUMBER(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.OPENSSL_VERSION_NUMBERj t ssl.OP_ALL(j&j&5https://docs.python.org/3/library/ssl.html#ssl.OP_ALLj tssl.OP_CIPHER_SERVER_PREFERENCE(j&j&Jhttps://docs.python.org/3/library/ssl.html#ssl.OP_CIPHER_SERVER_PREFERENCEj tssl.OP_ENABLE_KTLS(j&j&=https://docs.python.org/3/library/ssl.html#ssl.OP_ENABLE_KTLSj tssl.OP_ENABLE_MIDDLEBOX_COMPAT(j&j&Ihttps://docs.python.org/3/library/ssl.html#ssl.OP_ENABLE_MIDDLEBOX_COMPATj tssl.OP_IGNORE_UNEXPECTED_EOF(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.OP_IGNORE_UNEXPECTED_EOFj tssl.OP_LEGACY_SERVER_CONNECT(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.OP_LEGACY_SERVER_CONNECTj tssl.OP_NO_COMPRESSION(j&j&@https://docs.python.org/3/library/ssl.html#ssl.OP_NO_COMPRESSIONj tssl.OP_NO_RENEGOTIATION(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.OP_NO_RENEGOTIATIONj tssl.OP_NO_SSLv2(j&j&:https://docs.python.org/3/library/ssl.html#ssl.OP_NO_SSLv2j tssl.OP_NO_SSLv3(j&j&:https://docs.python.org/3/library/ssl.html#ssl.OP_NO_SSLv3j tssl.OP_NO_TICKET(j&j&;https://docs.python.org/3/library/ssl.html#ssl.OP_NO_TICKETj tssl.OP_NO_TLSv1(j&j&:https://docs.python.org/3/library/ssl.html#ssl.OP_NO_TLSv1j tssl.OP_NO_TLSv1_1(j&j&https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_SSLv23j tssl.PROTOCOL_SSLv3(j&j&=https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_SSLv3j tssl.PROTOCOL_TLS(j&j&;https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSj tssl.PROTOCOL_TLS_CLIENT(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS_CLIENTj tssl.PROTOCOL_TLS_SERVER(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS_SERVERj tssl.PROTOCOL_TLSv1(j&j&=https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1j tssl.PROTOCOL_TLSv1_1(j&j&?https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1_1j tssl.PROTOCOL_TLSv1_2(j&j&?https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1_2j tssl.Purpose.CLIENT_AUTH(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.Purpose.CLIENT_AUTHj tssl.Purpose.SERVER_AUTH(j&j&Bhttps://docs.python.org/3/library/ssl.html#ssl.Purpose.SERVER_AUTHj tssl.VERIFY_ALLOW_PROXY_CERTS(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.VERIFY_ALLOW_PROXY_CERTSj tssl.VERIFY_CRL_CHECK_CHAIN(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.VERIFY_CRL_CHECK_CHAINj tssl.VERIFY_CRL_CHECK_LEAF(j&j&Dhttps://docs.python.org/3/library/ssl.html#ssl.VERIFY_CRL_CHECK_LEAFj tssl.VERIFY_DEFAULT(j&j&=https://docs.python.org/3/library/ssl.html#ssl.VERIFY_DEFAULTj tssl.VERIFY_X509_PARTIAL_CHAIN(j&j&Hhttps://docs.python.org/3/library/ssl.html#ssl.VERIFY_X509_PARTIAL_CHAINj tssl.VERIFY_X509_STRICT(j&j&Ahttps://docs.python.org/3/library/ssl.html#ssl.VERIFY_X509_STRICTj tssl.VERIFY_X509_TRUSTED_FIRST(j&j&Hhttps://docs.python.org/3/library/ssl.html#ssl.VERIFY_X509_TRUSTED_FIRSTj tstat.FILE_ATTRIBUTE_ARCHIVE(j&j&Ghttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_ARCHIVEj tstat.FILE_ATTRIBUTE_COMPRESSED(j&j&Jhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_COMPRESSEDj tstat.FILE_ATTRIBUTE_DEVICE(j&j&Fhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_DEVICEj tstat.FILE_ATTRIBUTE_DIRECTORY(j&j&Ihttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_DIRECTORYj tstat.FILE_ATTRIBUTE_ENCRYPTED(j&j&Ihttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_ENCRYPTEDj tstat.FILE_ATTRIBUTE_HIDDEN(j&j&Fhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_HIDDENj t$stat.FILE_ATTRIBUTE_INTEGRITY_STREAM(j&j&Phttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_INTEGRITY_STREAMj tstat.FILE_ATTRIBUTE_NORMAL(j&j&Fhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_NORMALj t'stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED(j&j&Shttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDj t!stat.FILE_ATTRIBUTE_NO_SCRUB_DATA(j&j&Mhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_NO_SCRUB_DATAj tstat.FILE_ATTRIBUTE_OFFLINE(j&j&Ghttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_OFFLINEj tstat.FILE_ATTRIBUTE_READONLY(j&j&Hhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_READONLYj t!stat.FILE_ATTRIBUTE_REPARSE_POINT(j&j&Mhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_REPARSE_POINTj tstat.FILE_ATTRIBUTE_SPARSE_FILE(j&j&Khttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_SPARSE_FILEj tstat.FILE_ATTRIBUTE_SYSTEM(j&j&Fhttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_SYSTEMj tstat.FILE_ATTRIBUTE_TEMPORARY(j&j&Ihttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_TEMPORARYj tstat.FILE_ATTRIBUTE_VIRTUAL(j&j&Ghttps://docs.python.org/3/library/stat.html#stat.FILE_ATTRIBUTE_VIRTUALj tstat.IO_REPARSE_TAG_APPEXECLINK(j&j&Khttps://docs.python.org/3/library/stat.html#stat.IO_REPARSE_TAG_APPEXECLINKj tstat.IO_REPARSE_TAG_MOUNT_POINT(j&j&Khttps://docs.python.org/3/library/stat.html#stat.IO_REPARSE_TAG_MOUNT_POINTj tstat.IO_REPARSE_TAG_SYMLINK(j&j&Ghttps://docs.python.org/3/library/stat.html#stat.IO_REPARSE_TAG_SYMLINKj tstat.SF_APPEND(j&j&:https://docs.python.org/3/library/stat.html#stat.SF_APPENDj tstat.SF_ARCHIVED(j&j&https://docs.python.org/3/library/stat.html#stat.UF_COMPRESSEDj tstat.UF_HIDDEN(j&j&:https://docs.python.org/3/library/stat.html#stat.UF_HIDDENj tstat.UF_IMMUTABLE(j&j&=https://docs.python.org/3/library/stat.html#stat.UF_IMMUTABLEj tstat.UF_NODUMP(j&j&:https://docs.python.org/3/library/stat.html#stat.UF_NODUMPj tstat.UF_NOUNLINK(j&j&https://docs.python.org/3/library/string.html#string.hexdigitsj tstring.octdigits(j&j&>https://docs.python.org/3/library/string.html#string.octdigitsj tstring.printable(j&j&>https://docs.python.org/3/library/string.html#string.printablej tstring.punctuation(j&j&@https://docs.python.org/3/library/string.html#string.punctuationj tstring.whitespace(j&j&?https://docs.python.org/3/library/string.html#string.whitespacej t&subprocess.ABOVE_NORMAL_PRIORITY_CLASS(j&j&Xhttps://docs.python.org/3/library/subprocess.html#subprocess.ABOVE_NORMAL_PRIORITY_CLASSj t&subprocess.BELOW_NORMAL_PRIORITY_CLASS(j&j&Xhttps://docs.python.org/3/library/subprocess.html#subprocess.BELOW_NORMAL_PRIORITY_CLASSj t$subprocess.CREATE_BREAKAWAY_FROM_JOB(j&j&Vhttps://docs.python.org/3/library/subprocess.html#subprocess.CREATE_BREAKAWAY_FROM_JOBj t$subprocess.CREATE_DEFAULT_ERROR_MODE(j&j&Vhttps://docs.python.org/3/library/subprocess.html#subprocess.CREATE_DEFAULT_ERROR_MODEj tsubprocess.CREATE_NEW_CONSOLE(j&j&Ohttps://docs.python.org/3/library/subprocess.html#subprocess.CREATE_NEW_CONSOLEj t#subprocess.CREATE_NEW_PROCESS_GROUP(j&j&Uhttps://docs.python.org/3/library/subprocess.html#subprocess.CREATE_NEW_PROCESS_GROUPj tsubprocess.CREATE_NO_WINDOW(j&j&Mhttps://docs.python.org/3/library/subprocess.html#subprocess.CREATE_NO_WINDOWj tsubprocess.DETACHED_PROCESS(j&j&Mhttps://docs.python.org/3/library/subprocess.html#subprocess.DETACHED_PROCESSj tsubprocess.DEVNULL(j&j&Dhttps://docs.python.org/3/library/subprocess.html#subprocess.DEVNULLj tsubprocess.HIGH_PRIORITY_CLASS(j&j&Phttps://docs.python.org/3/library/subprocess.html#subprocess.HIGH_PRIORITY_CLASSj tsubprocess.IDLE_PRIORITY_CLASS(j&j&Phttps://docs.python.org/3/library/subprocess.html#subprocess.IDLE_PRIORITY_CLASSj t subprocess.NORMAL_PRIORITY_CLASS(j&j&Rhttps://docs.python.org/3/library/subprocess.html#subprocess.NORMAL_PRIORITY_CLASSj tsubprocess.PIPE(j&j&Ahttps://docs.python.org/3/library/subprocess.html#subprocess.PIPEj t"subprocess.REALTIME_PRIORITY_CLASS(j&j&Thttps://docs.python.org/3/library/subprocess.html#subprocess.REALTIME_PRIORITY_CLASSj tsubprocess.STARTF_USESHOWWINDOW(j&j&Qhttps://docs.python.org/3/library/subprocess.html#subprocess.STARTF_USESHOWWINDOWj tsubprocess.STARTF_USESTDHANDLES(j&j&Qhttps://docs.python.org/3/library/subprocess.html#subprocess.STARTF_USESTDHANDLESj tsubprocess.STDOUT(j&j&Chttps://docs.python.org/3/library/subprocess.html#subprocess.STDOUTj tsubprocess.STD_ERROR_HANDLE(j&j&Mhttps://docs.python.org/3/library/subprocess.html#subprocess.STD_ERROR_HANDLEj tsubprocess.STD_INPUT_HANDLE(j&j&Mhttps://docs.python.org/3/library/subprocess.html#subprocess.STD_INPUT_HANDLEj tsubprocess.STD_OUTPUT_HANDLE(j&j&Nhttps://docs.python.org/3/library/subprocess.html#subprocess.STD_OUTPUT_HANDLEj tsubprocess.SW_HIDE(j&j&Dhttps://docs.python.org/3/library/subprocess.html#subprocess.SW_HIDEj t$sunau.AUDIO_FILE_ENCODING_ADPCM_G721(j&j&Qhttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G721j t$sunau.AUDIO_FILE_ENCODING_ADPCM_G722(j&j&Qhttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G722j t&sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3(j&j&Shttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3j t&sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5(j&j&Shttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5j t sunau.AUDIO_FILE_ENCODING_ALAW_8(j&j&Mhttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ALAW_8j t sunau.AUDIO_FILE_ENCODING_DOUBLE(j&j&Mhttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_DOUBLEj tsunau.AUDIO_FILE_ENCODING_FLOAT(j&j&Lhttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_FLOATj t#sunau.AUDIO_FILE_ENCODING_LINEAR_16(j&j&Phttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_16j t#sunau.AUDIO_FILE_ENCODING_LINEAR_24(j&j&Phttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_24j t#sunau.AUDIO_FILE_ENCODING_LINEAR_32(j&j&Phttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_32j t"sunau.AUDIO_FILE_ENCODING_LINEAR_8(j&j&Ohttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_8j t!sunau.AUDIO_FILE_ENCODING_MULAW_8(j&j&Nhttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_MULAW_8j tsunau.AUDIO_FILE_MAGIC(j&j&Chttps://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_MAGICj tsys.__breakpointhook__(j&j&Ahttps://docs.python.org/3/library/sys.html#sys.__breakpointhook__j tsys.__displayhook__(j&j&>https://docs.python.org/3/library/sys.html#sys.__displayhook__j tsys.__excepthook__(j&j&=https://docs.python.org/3/library/sys.html#sys.__excepthook__j tsys.__interactivehook__(j&j&Bhttps://docs.python.org/3/library/sys.html#sys.__interactivehook__j tsys.__stderr__(j&j&9https://docs.python.org/3/library/sys.html#sys.__stderr__j t sys.__stdin__(j&j&8https://docs.python.org/3/library/sys.html#sys.__stdin__j tsys.__stdout__(j&j&9https://docs.python.org/3/library/sys.html#sys.__stdout__j tsys.__unraisablehook__(j&j&Ahttps://docs.python.org/3/library/sys.html#sys.__unraisablehook__j tsys._emscripten_info(j&j&?https://docs.python.org/3/library/sys.html#sys._emscripten_infoj t sys._xoptions(j&j&8https://docs.python.org/3/library/sys.html#sys._xoptionsj t sys.abiflags(j&j&7https://docs.python.org/3/library/sys.html#sys.abiflagsj tsys.api_version(j&j&:https://docs.python.org/3/library/sys.html#sys.api_versionj tsys.argv(j&j&3https://docs.python.org/3/library/sys.html#sys.argvj tsys.base_exec_prefix(j&j&?https://docs.python.org/3/library/sys.html#sys.base_exec_prefixj tsys.base_prefix(j&j&:https://docs.python.org/3/library/sys.html#sys.base_prefixj tsys.builtin_module_names(j&j&Chttps://docs.python.org/3/library/sys.html#sys.builtin_module_namesj t sys.byteorder(j&j&8https://docs.python.org/3/library/sys.html#sys.byteorderj t sys.copyright(j&j&8https://docs.python.org/3/library/sys.html#sys.copyrightj t sys.dllhandle(j&j&8https://docs.python.org/3/library/sys.html#sys.dllhandlej tsys.dont_write_bytecode(j&j&Bhttps://docs.python.org/3/library/sys.html#sys.dont_write_bytecodej tsys.exec_prefix(j&j&:https://docs.python.org/3/library/sys.html#sys.exec_prefixj tsys.executable(j&j&9https://docs.python.org/3/library/sys.html#sys.executablej t sys.flags(j&j&4https://docs.python.org/3/library/sys.html#sys.flagsj tsys.float_info(j&j&9https://docs.python.org/3/library/sys.html#sys.float_infoj tsys.float_repr_style(j&j&?https://docs.python.org/3/library/sys.html#sys.float_repr_stylej t sys.hash_info(j&j&8https://docs.python.org/3/library/sys.html#sys.hash_infoj tsys.hexversion(j&j&9https://docs.python.org/3/library/sys.html#sys.hexversionj tsys.implementation(j&j&=https://docs.python.org/3/library/sys.html#sys.implementationj t sys.int_info(j&j&7https://docs.python.org/3/library/sys.html#sys.int_infoj t sys.last_exc(j&j&7https://docs.python.org/3/library/sys.html#sys.last_excj tsys.last_traceback(j&j&=https://docs.python.org/3/library/sys.html#sys.last_tracebackj t sys.last_type(j&j&8https://docs.python.org/3/library/sys.html#sys.last_typej tsys.last_value(j&j&9https://docs.python.org/3/library/sys.html#sys.last_valuej t sys.maxsize(j&j&6https://docs.python.org/3/library/sys.html#sys.maxsizej tsys.maxunicode(j&j&9https://docs.python.org/3/library/sys.html#sys.maxunicodej t sys.meta_path(j&j&8https://docs.python.org/3/library/sys.html#sys.meta_pathj t sys.modules(j&j&6https://docs.python.org/3/library/sys.html#sys.modulesj tsys.monitoring.DISABLE(j&j&Lhttps://docs.python.org/3/library/sys.monitoring.html#sys.monitoring.DISABLEj tsys.monitoring.MISSING(j&j&Lhttps://docs.python.org/3/library/sys.monitoring.html#sys.monitoring.MISSINGj t sys.orig_argv(j&j&8https://docs.python.org/3/library/sys.html#sys.orig_argvj tsys.path(j&j&3https://docs.python.org/3/library/sys.html#sys.pathj tsys.path_hooks(j&j&9https://docs.python.org/3/library/sys.html#sys.path_hooksj tsys.path_importer_cache(j&j&Bhttps://docs.python.org/3/library/sys.html#sys.path_importer_cachej t sys.platform(j&j&7https://docs.python.org/3/library/sys.html#sys.platformj tsys.platlibdir(j&j&9https://docs.python.org/3/library/sys.html#sys.platlibdirj t sys.prefix(j&j&5https://docs.python.org/3/library/sys.html#sys.prefixj tsys.ps1(j&j&2https://docs.python.org/3/library/sys.html#sys.ps1j tsys.ps2(j&j&2https://docs.python.org/3/library/sys.html#sys.ps2j tsys.pycache_prefix(j&j&=https://docs.python.org/3/library/sys.html#sys.pycache_prefixj t sys.stderr(j&j&5https://docs.python.org/3/library/sys.html#sys.stderrj t sys.stdin(j&j&4https://docs.python.org/3/library/sys.html#sys.stdinj tsys.stdlib_module_names(j&j&Bhttps://docs.python.org/3/library/sys.html#sys.stdlib_module_namesj t sys.stdout(j&j&5https://docs.python.org/3/library/sys.html#sys.stdoutj tsys.thread_info(j&j&:https://docs.python.org/3/library/sys.html#sys.thread_infoj tsys.tracebacklimit(j&j&=https://docs.python.org/3/library/sys.html#sys.tracebacklimitj t sys.version(j&j&6https://docs.python.org/3/library/sys.html#sys.versionj tsys.version_info(j&j&;https://docs.python.org/3/library/sys.html#sys.version_infoj tsys.warnoptions(j&j&:https://docs.python.org/3/library/sys.html#sys.warnoptionsj t sys.winver(j&j&5https://docs.python.org/3/library/sys.html#sys.winverj ttabnanny.filename_only(j&j&Fhttps://docs.python.org/3/library/tabnanny.html#tabnanny.filename_onlyj ttabnanny.verbose(j&j&@https://docs.python.org/3/library/tabnanny.html#tabnanny.verbosej ttarfile.AREGTYPE(j&j&?https://docs.python.org/3/library/tarfile.html#tarfile.AREGTYPEj ttarfile.BLKTYPE(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.BLKTYPEj ttarfile.CHRTYPE(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.CHRTYPEj ttarfile.CONTTYPE(j&j&?https://docs.python.org/3/library/tarfile.html#tarfile.CONTTYPEj ttarfile.DEFAULT_FORMAT(j&j&Ehttps://docs.python.org/3/library/tarfile.html#tarfile.DEFAULT_FORMATj ttarfile.DIRTYPE(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.DIRTYPEj ttarfile.ENCODING(j&j&?https://docs.python.org/3/library/tarfile.html#tarfile.ENCODINGj ttarfile.FIFOTYPE(j&j&?https://docs.python.org/3/library/tarfile.html#tarfile.FIFOTYPEj ttarfile.GNUTYPE_LONGLINK(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.GNUTYPE_LONGLINKj ttarfile.GNUTYPE_LONGNAME(j&j&Ghttps://docs.python.org/3/library/tarfile.html#tarfile.GNUTYPE_LONGNAMEj ttarfile.GNUTYPE_SPARSE(j&j&Ehttps://docs.python.org/3/library/tarfile.html#tarfile.GNUTYPE_SPARSEj ttarfile.GNU_FORMAT(j&j&Ahttps://docs.python.org/3/library/tarfile.html#tarfile.GNU_FORMATj ttarfile.LNKTYPE(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.LNKTYPEj ttarfile.PAX_FORMAT(j&j&Ahttps://docs.python.org/3/library/tarfile.html#tarfile.PAX_FORMATj ttarfile.REGTYPE(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.REGTYPEj ttarfile.SYMTYPE(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.SYMTYPEj ttarfile.USTAR_FORMAT(j&j&Chttps://docs.python.org/3/library/tarfile.html#tarfile.USTAR_FORMATj ttempfile.tempdir(j&j&@https://docs.python.org/3/library/tempfile.html#tempfile.tempdirj ttermios.TCSADRAIN(j&j&@https://docs.python.org/3/library/termios.html#termios.TCSADRAINj ttermios.TCSAFLUSH(j&j&@https://docs.python.org/3/library/termios.html#termios.TCSAFLUSHj ttermios.TCSANOW(j&j&>https://docs.python.org/3/library/termios.html#termios.TCSANOWj ttest.support.ALWAYS_EQ(j&j&Bhttps://docs.python.org/3/library/test.html#test.support.ALWAYS_EQj ttest.support.HAVE_DOCSTRINGS(j&j&Hhttps://docs.python.org/3/library/test.html#test.support.HAVE_DOCSTRINGSj ttest.support.INTERNET_TIMEOUT(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.INTERNET_TIMEOUTj ttest.support.LARGEST(j&j&@https://docs.python.org/3/library/test.html#test.support.LARGESTj ttest.support.LONG_TIMEOUT(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.LONG_TIMEOUTj ttest.support.LOOPBACK_TIMEOUT(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.LOOPBACK_TIMEOUTj ttest.support.MAX_Py_ssize_t(j&j&Ghttps://docs.python.org/3/library/test.html#test.support.MAX_Py_ssize_tj t!test.support.MISSING_C_DOCSTRINGS(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.MISSING_C_DOCSTRINGSj ttest.support.NEVER_EQ(j&j&Ahttps://docs.python.org/3/library/test.html#test.support.NEVER_EQj ttest.support.PGO(j&j&https://docs.python.org/3/library/time.html#time.CLOCK_HIGHRESj ttime.CLOCK_MONOTONIC(j&j&@https://docs.python.org/3/library/time.html#time.CLOCK_MONOTONICj ttime.CLOCK_MONOTONIC_RAW(j&j&Dhttps://docs.python.org/3/library/time.html#time.CLOCK_MONOTONIC_RAWj ttime.CLOCK_PROCESS_CPUTIME_ID(j&j&Ihttps://docs.python.org/3/library/time.html#time.CLOCK_PROCESS_CPUTIME_IDj ttime.CLOCK_PROF(j&j&;https://docs.python.org/3/library/time.html#time.CLOCK_PROFj ttime.CLOCK_REALTIME(j&j&?https://docs.python.org/3/library/time.html#time.CLOCK_REALTIMEj ttime.CLOCK_TAI(j&j&:https://docs.python.org/3/library/time.html#time.CLOCK_TAIj ttime.CLOCK_THREAD_CPUTIME_ID(j&j&Hhttps://docs.python.org/3/library/time.html#time.CLOCK_THREAD_CPUTIME_IDj ttime.CLOCK_UPTIME(j&j&=https://docs.python.org/3/library/time.html#time.CLOCK_UPTIMEj ttime.CLOCK_UPTIME_RAW(j&j&Ahttps://docs.python.org/3/library/time.html#time.CLOCK_UPTIME_RAWj t time.altzone(j&j&8https://docs.python.org/3/library/time.html#time.altzonej t time.daylight(j&j&9https://docs.python.org/3/library/time.html#time.daylightj t time.timezone(j&j&9https://docs.python.org/3/library/time.html#time.timezonej t time.tzname(j&j&7https://docs.python.org/3/library/time.html#time.tznamej ttkinter.font.BOLD(j&j&Ehttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.BOLDj ttkinter.font.ITALIC(j&j&Ghttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.ITALICj ttkinter.font.NORMAL(j&j&Ghttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.NORMALj ttkinter.font.ROMAN(j&j&Fhttps://docs.python.org/3/library/tkinter.font.html#tkinter.font.ROMANj ttkinter.messagebox.ABORT(j&j&Rhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.ABORTj t#tkinter.messagebox.ABORTRETRYIGNORE(j&j&]https://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.ABORTRETRYIGNOREj ttkinter.messagebox.CANCEL(j&j&Shttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.CANCELj ttkinter.messagebox.ERROR(j&j&Rhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.ERRORj ttkinter.messagebox.IGNORE(j&j&Shttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.IGNOREj ttkinter.messagebox.INFO(j&j&Qhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.INFOj ttkinter.messagebox.NO(j&j&Ohttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.NOj ttkinter.messagebox.OK(j&j&Ohttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.OKj ttkinter.messagebox.OKCANCEL(j&j&Uhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.OKCANCELj ttkinter.messagebox.QUESTION(j&j&Uhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.QUESTIONj ttkinter.messagebox.RETRY(j&j&Rhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.RETRYj ttkinter.messagebox.RETRYCANCEL(j&j&Xhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.RETRYCANCELj ttkinter.messagebox.WARNING(j&j&Thttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.WARNINGj ttkinter.messagebox.YES(j&j&Phttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.YESj ttkinter.messagebox.YESNO(j&j&Rhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.YESNOj ttkinter.messagebox.YESNOCANCEL(j&j&Xhttps://docs.python.org/3/library/tkinter.messagebox.html#tkinter.messagebox.YESNOCANCELj t token.AMPER(j&j&8https://docs.python.org/3/library/token.html#token.AMPERj ttoken.AMPEREQUAL(j&j&=https://docs.python.org/3/library/token.html#token.AMPEREQUALj t token.ASYNC(j&j&8https://docs.python.org/3/library/token.html#token.ASYNCj ttoken.AT(j&j&5https://docs.python.org/3/library/token.html#token.ATj t token.ATEQUAL(j&j&:https://docs.python.org/3/library/token.html#token.ATEQUALj t token.AWAIT(j&j&8https://docs.python.org/3/library/token.html#token.AWAITj ttoken.CIRCUMFLEX(j&j&=https://docs.python.org/3/library/token.html#token.CIRCUMFLEXj ttoken.CIRCUMFLEXEQUAL(j&j&Bhttps://docs.python.org/3/library/token.html#token.CIRCUMFLEXEQUALj t token.COLON(j&j&8https://docs.python.org/3/library/token.html#token.COLONj ttoken.COLONEQUAL(j&j&=https://docs.python.org/3/library/token.html#token.COLONEQUALj t token.COMMA(j&j&8https://docs.python.org/3/library/token.html#token.COMMAj t token.COMMENT(j&j&:https://docs.python.org/3/library/token.html#token.COMMENTj t token.DEDENT(j&j&9https://docs.python.org/3/library/token.html#token.DEDENTj t token.DOT(j&j&6https://docs.python.org/3/library/token.html#token.DOTj ttoken.DOUBLESLASH(j&j&>https://docs.python.org/3/library/token.html#token.DOUBLESLASHj ttoken.DOUBLESLASHEQUAL(j&j&Chttps://docs.python.org/3/library/token.html#token.DOUBLESLASHEQUALj ttoken.DOUBLESTAR(j&j&=https://docs.python.org/3/library/token.html#token.DOUBLESTARj ttoken.DOUBLESTAREQUAL(j&j&Bhttps://docs.python.org/3/library/token.html#token.DOUBLESTAREQUALj ttoken.ELLIPSIS(j&j&;https://docs.python.org/3/library/token.html#token.ELLIPSISj ttoken.ENCODING(j&j&;https://docs.python.org/3/library/token.html#token.ENCODINGj ttoken.ENDMARKER(j&j&https://docs.python.org/3/library/token.html#token.EXCLAMATIONj ttoken.FSTRING_END(j&j&>https://docs.python.org/3/library/token.html#token.FSTRING_ENDj ttoken.FSTRING_MIDDLE(j&j&Ahttps://docs.python.org/3/library/token.html#token.FSTRING_MIDDLEj ttoken.FSTRING_START(j&j&@https://docs.python.org/3/library/token.html#token.FSTRING_STARTj t token.GREATER(j&j&:https://docs.python.org/3/library/token.html#token.GREATERj ttoken.GREATEREQUAL(j&j&?https://docs.python.org/3/library/token.html#token.GREATEREQUALj t token.INDENT(j&j&9https://docs.python.org/3/library/token.html#token.INDENTj t token.LBRACE(j&j&9https://docs.python.org/3/library/token.html#token.LBRACEj ttoken.LEFTSHIFT(j&j&https://docs.python.org/3/library/token.html#token.TYPE_IGNOREj t token.VBAR(j&j&7https://docs.python.org/3/library/token.html#token.VBARj ttoken.VBAREQUAL(j&j&https://docs.python.org/3/library/typing.html#typing.Annotatedj t typing.Any(j&j&8https://docs.python.org/3/library/typing.html#typing.Anyj t typing.AnyStr(j&j&;https://docs.python.org/3/library/typing.html#typing.AnyStrj ttyping.Callable(j&j&=https://docs.python.org/3/library/typing.html#typing.Callablej ttyping.ClassVar(j&j&=https://docs.python.org/3/library/typing.html#typing.ClassVarj ttyping.Concatenate(j&j&@https://docs.python.org/3/library/typing.html#typing.Concatenatej t typing.Final(j&j&:https://docs.python.org/3/library/typing.html#typing.Finalj ttyping.Literal(j&j&https://docs.python.org/3/library/typing.html#typing.TypeAliasj ttyping.TypeGuard(j&j&>https://docs.python.org/3/library/typing.html#typing.TypeGuardj t typing.Union(j&j&:https://docs.python.org/3/library/typing.html#typing.Unionj t typing.Unpack(j&j&;https://docs.python.org/3/library/typing.html#typing.Unpackj tunicodedata.ucd_3_2_0(j&j&Hhttps://docs.python.org/3/library/unicodedata.html#unicodedata.ucd_3_2_0j tunicodedata.unidata_version(j&j&Nhttps://docs.python.org/3/library/unicodedata.html#unicodedata.unidata_versionj tunittest.defaultTestLoader(j&j&Jhttps://docs.python.org/3/library/unittest.html#unittest.defaultTestLoaderj tunittest.mock.ANY(j&j&Fhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.ANYj tunittest.mock.DEFAULT(j&j&Jhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.DEFAULTj tunittest.mock.FILTER_DIR(j&j&Mhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.FILTER_DIRj tunittest.mock.sentinel(j&j&Khttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.sentinelj tuuid.NAMESPACE_DNS(j&j&>https://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_DNSj tuuid.NAMESPACE_OID(j&j&>https://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_OIDj tuuid.NAMESPACE_URL(j&j&>https://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_URLj tuuid.NAMESPACE_X500(j&j&?https://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_X500j tuuid.RESERVED_FUTURE(j&j&@https://docs.python.org/3/library/uuid.html#uuid.RESERVED_FUTUREj tuuid.RESERVED_MICROSOFT(j&j&Chttps://docs.python.org/3/library/uuid.html#uuid.RESERVED_MICROSOFTj tuuid.RESERVED_NCS(j&j&=https://docs.python.org/3/library/uuid.html#uuid.RESERVED_NCSj t uuid.RFC_4122(j&j&9https://docs.python.org/3/library/uuid.html#uuid.RFC_4122j tweakref.CallableProxyType(j&j&Hhttps://docs.python.org/3/library/weakref.html#weakref.CallableProxyTypej tweakref.ProxyType(j&j&@https://docs.python.org/3/library/weakref.html#weakref.ProxyTypej tweakref.ProxyTypes(j&j&Ahttps://docs.python.org/3/library/weakref.html#weakref.ProxyTypesj tweakref.ReferenceType(j&j&Dhttps://docs.python.org/3/library/weakref.html#weakref.ReferenceTypej twinreg.HKEY_CLASSES_ROOT(j&j&Fhttps://docs.python.org/3/library/winreg.html#winreg.HKEY_CLASSES_ROOTj twinreg.HKEY_CURRENT_CONFIG(j&j&Hhttps://docs.python.org/3/library/winreg.html#winreg.HKEY_CURRENT_CONFIGj twinreg.HKEY_CURRENT_USER(j&j&Fhttps://docs.python.org/3/library/winreg.html#winreg.HKEY_CURRENT_USERj twinreg.HKEY_DYN_DATA(j&j&Bhttps://docs.python.org/3/library/winreg.html#winreg.HKEY_DYN_DATAj twinreg.HKEY_LOCAL_MACHINE(j&j&Ghttps://docs.python.org/3/library/winreg.html#winreg.HKEY_LOCAL_MACHINEj twinreg.HKEY_PERFORMANCE_DATA(j&j&Jhttps://docs.python.org/3/library/winreg.html#winreg.HKEY_PERFORMANCE_DATAj twinreg.HKEY_USERS(j&j&?https://docs.python.org/3/library/winreg.html#winreg.HKEY_USERSj twinreg.KEY_ALL_ACCESS(j&j&Chttps://docs.python.org/3/library/winreg.html#winreg.KEY_ALL_ACCESSj twinreg.KEY_CREATE_LINK(j&j&Dhttps://docs.python.org/3/library/winreg.html#winreg.KEY_CREATE_LINKj twinreg.KEY_CREATE_SUB_KEY(j&j&Ghttps://docs.python.org/3/library/winreg.html#winreg.KEY_CREATE_SUB_KEYj twinreg.KEY_ENUMERATE_SUB_KEYS(j&j&Khttps://docs.python.org/3/library/winreg.html#winreg.KEY_ENUMERATE_SUB_KEYSj twinreg.KEY_EXECUTE(j&j&@https://docs.python.org/3/library/winreg.html#winreg.KEY_EXECUTEj twinreg.KEY_NOTIFY(j&j&?https://docs.python.org/3/library/winreg.html#winreg.KEY_NOTIFYj twinreg.KEY_QUERY_VALUE(j&j&Dhttps://docs.python.org/3/library/winreg.html#winreg.KEY_QUERY_VALUEj twinreg.KEY_READ(j&j&=https://docs.python.org/3/library/winreg.html#winreg.KEY_READj twinreg.KEY_SET_VALUE(j&j&Bhttps://docs.python.org/3/library/winreg.html#winreg.KEY_SET_VALUEj twinreg.KEY_WOW64_32KEY(j&j&Dhttps://docs.python.org/3/library/winreg.html#winreg.KEY_WOW64_32KEYj twinreg.KEY_WOW64_64KEY(j&j&Dhttps://docs.python.org/3/library/winreg.html#winreg.KEY_WOW64_64KEYj twinreg.KEY_WRITE(j&j&>https://docs.python.org/3/library/winreg.html#winreg.KEY_WRITEj twinreg.REG_BINARY(j&j&?https://docs.python.org/3/library/winreg.html#winreg.REG_BINARYj twinreg.REG_DWORD(j&j&>https://docs.python.org/3/library/winreg.html#winreg.REG_DWORDj twinreg.REG_DWORD_BIG_ENDIAN(j&j&Ihttps://docs.python.org/3/library/winreg.html#winreg.REG_DWORD_BIG_ENDIANj twinreg.REG_DWORD_LITTLE_ENDIAN(j&j&Lhttps://docs.python.org/3/library/winreg.html#winreg.REG_DWORD_LITTLE_ENDIANj twinreg.REG_EXPAND_SZ(j&j&Bhttps://docs.python.org/3/library/winreg.html#winreg.REG_EXPAND_SZj t#winreg.REG_FULL_RESOURCE_DESCRIPTOR(j&j&Qhttps://docs.python.org/3/library/winreg.html#winreg.REG_FULL_RESOURCE_DESCRIPTORj twinreg.REG_LINK(j&j&=https://docs.python.org/3/library/winreg.html#winreg.REG_LINKj twinreg.REG_MULTI_SZ(j&j&Ahttps://docs.python.org/3/library/winreg.html#winreg.REG_MULTI_SZj twinreg.REG_NONE(j&j&=https://docs.python.org/3/library/winreg.html#winreg.REG_NONEj twinreg.REG_QWORD(j&j&>https://docs.python.org/3/library/winreg.html#winreg.REG_QWORDj twinreg.REG_QWORD_LITTLE_ENDIAN(j&j&Lhttps://docs.python.org/3/library/winreg.html#winreg.REG_QWORD_LITTLE_ENDIANj twinreg.REG_RESOURCE_LIST(j&j&Fhttps://docs.python.org/3/library/winreg.html#winreg.REG_RESOURCE_LISTj t%winreg.REG_RESOURCE_REQUIREMENTS_LIST(j&j&Shttps://docs.python.org/3/library/winreg.html#winreg.REG_RESOURCE_REQUIREMENTS_LISTj t winreg.REG_SZ(j&j&;https://docs.python.org/3/library/winreg.html#winreg.REG_SZj twinsound.MB_ICONASTERISK(j&j&Hhttps://docs.python.org/3/library/winsound.html#winsound.MB_ICONASTERISKj twinsound.MB_ICONEXCLAMATION(j&j&Khttps://docs.python.org/3/library/winsound.html#winsound.MB_ICONEXCLAMATIONj twinsound.MB_ICONHAND(j&j&Dhttps://docs.python.org/3/library/winsound.html#winsound.MB_ICONHANDj twinsound.MB_ICONQUESTION(j&j&Hhttps://docs.python.org/3/library/winsound.html#winsound.MB_ICONQUESTIONj twinsound.MB_OK(j&j&>https://docs.python.org/3/library/winsound.html#winsound.MB_OKj twinsound.SND_ALIAS(j&j&Bhttps://docs.python.org/3/library/winsound.html#winsound.SND_ALIASj twinsound.SND_ASYNC(j&j&Bhttps://docs.python.org/3/library/winsound.html#winsound.SND_ASYNCj twinsound.SND_FILENAME(j&j&Ehttps://docs.python.org/3/library/winsound.html#winsound.SND_FILENAMEj twinsound.SND_LOOP(j&j&Ahttps://docs.python.org/3/library/winsound.html#winsound.SND_LOOP j twinsound.SND_MEMORY(j&j&Chttps://docs.python.org/3/library/winsound.html#winsound.SND_MEMORYj twinsound.SND_NODEFAULT(j&j&Fhttps://docs.python.org/3/library/winsound.html#winsound.SND_NODEFAULTj twinsound.SND_NOSTOP(j&j&Chttps://docs.python.org/3/library/winsound.html#winsound.SND_NOSTOPj twinsound.SND_NOWAIT(j&j&Chttps://docs.python.org/3/library/winsound.html#winsound.SND_NOWAITj twinsound.SND_PURGE(j&j&Bhttps://docs.python.org/3/library/winsound.html#winsound.SND_PURGEj twsgiref.types.WSGIApplication(j&j&Lhttps://docs.python.org/3/library/wsgiref.html#wsgiref.types.WSGIApplicationj twsgiref.types.WSGIEnvironment(j&j&Lhttps://docs.python.org/3/library/wsgiref.html#wsgiref.types.WSGIEnvironmentj txml.dom.EMPTY_NAMESPACE(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.EMPTY_NAMESPACEj txml.dom.XHTML_NAMESPACE(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.XHTML_NAMESPACEj txml.dom.XMLNS_NAMESPACE(j&j&Fhttps://docs.python.org/3/library/xml.dom.html#xml.dom.XMLNS_NAMESPACEj txml.dom.XML_NAMESPACE(j&j&Dhttps://docs.python.org/3/library/xml.dom.html#xml.dom.XML_NAMESPACEj txml.dom.pulldom.default_bufsize(j&j&Vhttps://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.default_bufsizej txml.parsers.expat.XMLParserType(j&j&Nhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.XMLParserTypej t*xml.parsers.expat.errors.XML_ERROR_ABORTED(j&j&Yhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ABORTEDj t=xml.parsers.expat.errors.XML_ERROR_AMPLIFICATION_LIMIT_BREACH(j&j&lhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_AMPLIFICATION_LIMIT_BREACHj t/xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY(j&j&^https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITYj t@xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF(j&j&ohttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REFj t/xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF(j&j&^https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REFj t4xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF(j&j&chttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REFj tCxml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING(j&j&rhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSINGj t6xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE(j&j&ehttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTEj t8xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE(j&j&ghttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PEj t;xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING(j&j&jhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLINGj t;xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD(j&j&jhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTDj t+xml.parsers.expat.errors.XML_ERROR_FINISHED(j&j&Zhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_FINISHEDj t0xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE(j&j&_https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PEj t5xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING(j&j&dhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODINGj t3xml.parsers.expat.errors.XML_ERROR_INVALID_ARGUMENT(j&j&bhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INVALID_ARGUMENTj t0xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN(j&j&_https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INVALID_TOKENj t9xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT(j&j&hhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENTj t3xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI(j&j&bhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PIj t1xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE(j&j&`https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONEj t0xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED(j&j&_https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDEDj t,xml.parsers.expat.errors.XML_ERROR_NO_BUFFER(j&j&[https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NO_BUFFERj t.xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS(j&j&]https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTSj t,xml.parsers.expat.errors.XML_ERROR_NO_MEMORY(j&j&[https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NO_MEMORYj t3xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF(j&j&bhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REFj t/xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR(j&j&^https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHARj t+xml.parsers.expat.errors.XML_ERROR_PUBLICID(j&j&Zhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_PUBLICIDj t7xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF(j&j&fhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REFj t9xml.parsers.expat.errors.XML_ERROR_RESERVED_NAMESPACE_URI(j&j&hhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_RESERVED_NAMESPACE_URIj t6xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XML(j&j&ehttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLj t8xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLNS(j&j&ghttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLNSj t,xml.parsers.expat.errors.XML_ERROR_SUSPENDED(j&j&[https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_SUSPENDEDj t-xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE(j&j&\https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_SUSPEND_PEj t)xml.parsers.expat.errors.XML_ERROR_SYNTAX(j&j&Xhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_SYNTAXj t/xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH(j&j&^https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCHj t,xml.parsers.expat.errors.XML_ERROR_TEXT_DECL(j&j&[https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_TEXT_DECLj t1xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX(j&j&`https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIXj t9xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION(j&j&hhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTIONj t1xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN(j&j&`https://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKENj t5xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX(j&j&dhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIXj t3xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY(j&j&bhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITYj t3xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE(j&j&bhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATEj t3xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING(j&j&bhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODINGj t+xml.parsers.expat.errors.XML_ERROR_XML_DECL(j&j&Zhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_XML_DECLj txml.parsers.expat.errors.codes(j&j&Mhttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.codesj t!xml.parsers.expat.errors.messages(j&j&Phttps://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.messagesj txml.sax.handler.all_features(j&j&Shttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.all_featuresj txml.sax.handler.all_properties(j&j&Uhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.all_propertiesj t$xml.sax.handler.feature_external_ges(j&j&[https://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_external_gesj t$xml.sax.handler.feature_external_pes(j&j&[https://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_external_pesj t*xml.sax.handler.feature_namespace_prefixes(j&j&ahttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_namespace_prefixesj t"xml.sax.handler.feature_namespaces(j&j&Yhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_namespacesj t(xml.sax.handler.feature_string_interning(j&j&_https://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_string_interningj t"xml.sax.handler.feature_validation(j&j&Yhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_validationj t,xml.sax.handler.property_declaration_handler(j&j&chttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_declaration_handlerj t!xml.sax.handler.property_dom_node(j&j&Xhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_dom_nodej t(xml.sax.handler.property_lexical_handler(j&j&_https://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_lexical_handlerj t#xml.sax.handler.property_xml_string(j&j&Zhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_xml_stringj tzipfile.Path.stem(j&j&@https://docs.python.org/3/library/zipfile.html#zipfile.Path.stemj tzipfile.Path.suffix(j&j&Bhttps://docs.python.org/3/library/zipfile.html#zipfile.Path.suffixj tzipfile.Path.suffixes(j&j&Dhttps://docs.python.org/3/library/zipfile.html#zipfile.Path.suffixesj tzipfile.ZIP_BZIP2(j&j&@https://docs.python.org/3/library/zipfile.html#zipfile.ZIP_BZIP2j tzipfile.ZIP_DEFLATED(j&j&Chttps://docs.python.org/3/library/zipfile.html#zipfile.ZIP_DEFLATEDj tzipfile.ZIP_LZMA(j&j&?https://docs.python.org/3/library/zipfile.html#zipfile.ZIP_LZMAj tzipfile.ZIP_STORED(j&j&Ahttps://docs.python.org/3/library/zipfile.html#zipfile.ZIP_STOREDj tzlib.ZLIB_RUNTIME_VERSION(j&j&Ehttps://docs.python.org/3/library/zlib.html#zlib.ZLIB_RUNTIME_VERSIONj tzlib.ZLIB_VERSION(j&j&=https://docs.python.org/3/library/zlib.html#zlib.ZLIB_VERSIONj tzoneinfo.TZPATH(j&j&?https://docs.python.org/3/library/zoneinfo.html#zoneinfo.TZPATHj tu py:module}( __future__(j&j&Chttps://docs.python.org/3/library/__future__.html#module-__future__j t__main__(j&j&?https://docs.python.org/3/library/__main__.html#module-__main__j t_thread(j&j&=https://docs.python.org/3/library/_thread.html#module-_threadj t_tkinter(j&j&>https://docs.python.org/3/library/tkinter.html#module-_tkinterj tabc(j&j&5https://docs.python.org/3/library/abc.html#module-abcj taifc(j&j&7https://docs.python.org/3/library/aifc.html#module-aifcj targparse(j&j&?https://docs.python.org/3/library/argparse.html#module-argparsej tarray(j&j&9https://docs.python.org/3/library/array.html#module-arrayj tast(j&j&5https://docs.python.org/3/library/ast.html#module-astj tasyncio(j&j&=https://docs.python.org/3/library/asyncio.html#module-asyncioj tatexit(j&j&;https://docs.python.org/3/library/atexit.html#module-atexitj taudioop(j&j&=https://docs.python.org/3/library/audioop.html#module-audioopj tbase64(j&j&;https://docs.python.org/3/library/base64.html#module-base64j tbdb(j&j&5https://docs.python.org/3/library/bdb.html#module-bdbj tbinascii(j&j&?https://docs.python.org/3/library/binascii.html#module-binasciij tbisect(j&j&;https://docs.python.org/3/library/bisect.html#module-bisectj tbuiltins(j&j&?https://docs.python.org/3/library/builtins.html#module-builtinsj tbz2(j&j&5https://docs.python.org/3/library/bz2.html#module-bz2j tcProfile(j&j&>https://docs.python.org/3/library/profile.html#module-cProfilej tcalendar(j&j&?https://docs.python.org/3/library/calendar.html#module-calendarj tcgi(j&j&5https://docs.python.org/3/library/cgi.html#module-cgij tcgitb(j&j&9https://docs.python.org/3/library/cgitb.html#module-cgitbj tchunk(j&j&9https://docs.python.org/3/library/chunk.html#module-chunkj tcmath(j&j&9https://docs.python.org/3/library/cmath.html#module-cmathj tcmd(j&j&5https://docs.python.org/3/library/cmd.html#module-cmdj tcode(j&j&7https://docs.python.org/3/library/code.html#module-codej tcodecs(j&j&;https://docs.python.org/3/library/codecs.html#module-codecsj tcodeop(j&j&;https://docs.python.org/3/library/codeop.html#module-codeopj t collections(j&j&Ehttps://docs.python.org/3/library/collections.html#module-collectionsj tcollections.abc(j&j&Mhttps://docs.python.org/3/library/collections.abc.html#module-collections.abcj tcolorsys(j&j&?https://docs.python.org/3/library/colorsys.html#module-colorsysj t compileall(j&j&Chttps://docs.python.org/3/library/compileall.html#module-compileallj tconcurrent.futures(j&j&Shttps://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futuresj t configparser(j&j&Ghttps://docs.python.org/3/library/configparser.html#module-configparserj t contextlib(j&j&Chttps://docs.python.org/3/library/contextlib.html#module-contextlibj t contextvars(j&j&Ehttps://docs.python.org/3/library/contextvars.html#module-contextvarsj tcopy(j&j&7https://docs.python.org/3/library/copy.html#module-copyj tcopyreg(j&j&=https://docs.python.org/3/library/copyreg.html#module-copyregj tcrypt(j&j&9https://docs.python.org/3/library/crypt.html#module-cryptj tcsv(j&j&5https://docs.python.org/3/library/csv.html#module-csvj tctypes(j&j&;https://docs.python.org/3/library/ctypes.html#module-ctypesj tcurses(j&j&;https://docs.python.org/3/library/curses.html#module-cursesj t curses.ascii(j&j&Ghttps://docs.python.org/3/library/curses.ascii.html#module-curses.asciij t curses.panel(j&j&Ghttps://docs.python.org/3/library/curses.panel.html#module-curses.panelj tcurses.textpad(j&j&Chttps://docs.python.org/3/library/curses.html#module-curses.textpadj t dataclasses(j&j&Ehttps://docs.python.org/3/library/dataclasses.html#module-dataclassesj tdatetime(j&j&?https://docs.python.org/3/library/datetime.html#module-datetimej tdbm(j&j&5https://docs.python.org/3/library/dbm.html#module-dbmj tdbm.dumb(j&j&:https://docs.python.org/3/library/dbm.html#module-dbm.dumbj tdbm.gnu(j&j&9https://docs.python.org/3/library/dbm.html#module-dbm.gnuj tdbm.ndbm(j&j&:https://docs.python.org/3/library/dbm.html#module-dbm.ndbmj tdecimal(j&j&=https://docs.python.org/3/library/decimal.html#module-decimalj tdifflib(j&j&=https://docs.python.org/3/library/difflib.html#module-difflibj tdis(j&j&5https://docs.python.org/3/library/dis.html#module-disj tdoctest(j&j&=https://docs.python.org/3/library/doctest.html#module-doctestj temail(j&j&9https://docs.python.org/3/library/email.html#module-emailj t email.charset(j&j&Ihttps://docs.python.org/3/library/email.charset.html#module-email.charsetj temail.contentmanager(j&j&Whttps://docs.python.org/3/library/email.contentmanager.html#module-email.contentmanagerj temail.encoders(j&j&Khttps://docs.python.org/3/library/email.encoders.html#module-email.encodersj t email.errors(j&j&Ghttps://docs.python.org/3/library/email.errors.html#module-email.errorsj temail.generator(j&j&Mhttps://docs.python.org/3/library/email.generator.html#module-email.generatorj t email.header(j&j&Ghttps://docs.python.org/3/library/email.header.html#module-email.headerj temail.headerregistry(j&j&Whttps://docs.python.org/3/library/email.headerregistry.html#module-email.headerregistryj temail.iterators(j&j&Mhttps://docs.python.org/3/library/email.iterators.html#module-email.iteratorsj t email.message(j&j&Ihttps://docs.python.org/3/library/email.message.html#module-email.messagej t email.mime(j&j&Chttps://docs.python.org/3/library/email.mime.html#module-email.mimej temail.mime.application(j&j&Ohttps://docs.python.org/3/library/email.mime.html#module-email.mime.applicationj temail.mime.audio(j&j&Ihttps://docs.python.org/3/library/email.mime.html#module-email.mime.audioj temail.mime.base(j&j&Hhttps://docs.python.org/3/library/email.mime.html#module-email.mime.basej temail.mime.image(j&j&Ihttps://docs.python.org/3/library/email.mime.html#module-email.mime.imagej temail.mime.message(j&j&Khttps://docs.python.org/3/library/email.mime.html#module-email.mime.messagej temail.mime.multipart(j&j&Mhttps://docs.python.org/3/library/email.mime.html#module-email.mime.multipartj temail.mime.nonmultipart(j&j&Phttps://docs.python.org/3/library/email.mime.html#module-email.mime.nonmultipartj temail.mime.text(j&j&Hhttps://docs.python.org/3/library/email.mime.html#module-email.mime.textj t email.parser(j&j&Ghttps://docs.python.org/3/library/email.parser.html#module-email.parserj t email.policy(j&j&Ghttps://docs.python.org/3/library/email.policy.html#module-email.policyj t email.utils(j&j&Ehttps://docs.python.org/3/library/email.utils.html#module-email.utilsj tencodings.idna(j&j&Chttps://docs.python.org/3/library/codecs.html#module-encodings.idnaj tencodings.mbcs(j&j&Chttps://docs.python.org/3/library/codecs.html#module-encodings.mbcsj tencodings.utf_8_sig(j&j&Hhttps://docs.python.org/3/library/codecs.html#module-encodings.utf_8_sigj t ensurepip(j&j&Ahttps://docs.python.org/3/library/ensurepip.html#module-ensurepipj tenum(j&j&7https://docs.python.org/3/library/enum.html#module-enumj terrno(j&j&9https://docs.python.org/3/library/errno.html#module-errnoj t faulthandler(j&j&Ghttps://docs.python.org/3/library/faulthandler.html#module-faulthandlerj tfcntl(j&j&9https://docs.python.org/3/library/fcntl.html#module-fcntlj tfilecmp(j&j&=https://docs.python.org/3/library/filecmp.html#module-filecmpj t fileinput(j&j&Ahttps://docs.python.org/3/library/fileinput.html#module-fileinputj tfnmatch(j&j&=https://docs.python.org/3/library/fnmatch.html#module-fnmatchj t fractions(j&j&Ahttps://docs.python.org/3/library/fractions.html#module-fractionsj tftplib(j&j&;https://docs.python.org/3/library/ftplib.html#module-ftplibj t functools(j&j&Ahttps://docs.python.org/3/library/functools.html#module-functoolsj tgc(j&j&3https://docs.python.org/3/library/gc.html#module-gcj tgetopt(j&j&;https://docs.python.org/3/library/getopt.html#module-getoptj tgetpass(j&j&=https://docs.python.org/3/library/getpass.html#module-getpassj tgettext(j&j&=https://docs.python.org/3/library/gettext.html#module-gettextj tglob(j&j&7https://docs.python.org/3/library/glob.html#module-globj tgraphlib(j&j&?https://docs.python.org/3/library/graphlib.html#module-graphlibj tgrp(j&j&5https://docs.python.org/3/library/grp.html#module-grpj tgzip(j&j&7https://docs.python.org/3/library/gzip.html#module-gzipj thashlib(j&j&=https://docs.python.org/3/library/hashlib.html#module-hashlibj theapq(j&j&9https://docs.python.org/3/library/heapq.html#module-heapqj thmac(j&j&7https://docs.python.org/3/library/hmac.html#module-hmacj thtml(j&j&7https://docs.python.org/3/library/html.html#module-htmlj t html.entities(j&j&Ihttps://docs.python.org/3/library/html.entities.html#module-html.entitiesj t html.parser(j&j&Ehttps://docs.python.org/3/library/html.parser.html#module-html.parserj thttp(j&j&7https://docs.python.org/3/library/http.html#module-httpj t http.client(j&j&Ehttps://docs.python.org/3/library/http.client.html#module-http.clientj thttp.cookiejar(j&j&Khttps://docs.python.org/3/library/http.cookiejar.html#module-http.cookiejarj t http.cookies(j&j&Ghttps://docs.python.org/3/library/http.cookies.html#module-http.cookiesj t http.server(j&j&Ehttps://docs.python.org/3/library/http.server.html#module-http.serverj tidlelib(j&j&:https://docs.python.org/3/library/idle.html#module-idlelibj timaplib(j&j&=https://docs.python.org/3/library/imaplib.html#module-imaplibj timghdr(j&j&;https://docs.python.org/3/library/imghdr.html#module-imghdrj t importlib(j&j&Ahttps://docs.python.org/3/library/importlib.html#module-importlibj t importlib.abc(j&j&Ehttps://docs.python.org/3/library/importlib.html#module-importlib.abcj timportlib.machinery(j&j&Khttps://docs.python.org/3/library/importlib.html#module-importlib.machineryj timportlib.metadata(j&j&Shttps://docs.python.org/3/library/importlib.metadata.html#module-importlib.metadataj timportlib.resources(j&j&Uhttps://docs.python.org/3/library/importlib.resources.html#module-importlib.resourcesj timportlib.resources.abc(j&j&]https://docs.python.org/3/library/importlib.resources.abc.html#module-importlib.resources.abcj timportlib.util(j&j&Fhttps://docs.python.org/3/library/importlib.html#module-importlib.utilj tinspect(j&j&=https://docs.python.org/3/library/inspect.html#module-inspectj tio(j&j&3https://docs.python.org/3/library/io.html#module-ioj t ipaddress(j&j&Ahttps://docs.python.org/3/library/ipaddress.html#module-ipaddressj t itertools(j&j&Ahttps://docs.python.org/3/library/itertools.html#module-itertoolsj tjson(j&j&7https://docs.python.org/3/library/json.html#module-jsonj t json.tool(j&j&https://docs.python.org/3/library/ast.html#ast.NodeTransformerj tast.NodeVisitor(j&j&:https://docs.python.org/3/library/ast.html#ast.NodeVisitorj t ast.Nonlocal(j&j&7https://docs.python.org/3/library/ast.html#ast.Nonlocalj tast.Not(j&j&2https://docs.python.org/3/library/ast.html#ast.Notj t ast.NotEq(j&j&4https://docs.python.org/3/library/ast.html#ast.NotEqj t ast.NotIn(j&j&4https://docs.python.org/3/library/ast.html#ast.NotInj tast.Or(j&j&1https://docs.python.org/3/library/ast.html#ast.Orj t ast.ParamSpec(j&j&8https://docs.python.org/3/library/ast.html#ast.ParamSpecj tast.Pass(j&j&3https://docs.python.org/3/library/ast.html#ast.Passj tast.Pow(j&j&2https://docs.python.org/3/library/ast.html#ast.Powj t ast.RShift(j&j&5https://docs.python.org/3/library/ast.html#ast.RShiftj t ast.Raise(j&j&4https://docs.python.org/3/library/ast.html#ast.Raisej t ast.Return(j&j&5https://docs.python.org/3/library/ast.html#ast.Returnj tast.Set(j&j&2https://docs.python.org/3/library/ast.html#ast.Setj t ast.SetComp(j&j&6https://docs.python.org/3/library/ast.html#ast.SetCompj t ast.Slice(j&j&4https://docs.python.org/3/library/ast.html#ast.Slicej t ast.Starred(j&j&6https://docs.python.org/3/library/ast.html#ast.Starredj t ast.Store(j&j&4https://docs.python.org/3/library/ast.html#ast.Storej tast.Sub(j&j&2https://docs.python.org/3/library/ast.html#ast.Subj t ast.Subscript(j&j&8https://docs.python.org/3/library/ast.html#ast.Subscriptj tast.Try(j&j&2https://docs.python.org/3/library/ast.html#ast.Tryj t ast.TryStar(j&j&6https://docs.python.org/3/library/ast.html#ast.TryStarj t ast.Tuple(j&j&4https://docs.python.org/3/library/ast.html#ast.Tuplej t ast.TypeAlias(j&j&8https://docs.python.org/3/library/ast.html#ast.TypeAliasj t ast.TypeVar(j&j&6https://docs.python.org/3/library/ast.html#ast.TypeVarj tast.TypeVarTuple(j&j&;https://docs.python.org/3/library/ast.html#ast.TypeVarTuplej tast.UAdd(j&j&3https://docs.python.org/3/library/ast.html#ast.UAddj tast.USub(j&j&3https://docs.python.org/3/library/ast.html#ast.USubj t ast.UnaryOp(j&j&6https://docs.python.org/3/library/ast.html#ast.UnaryOpj t ast.While(j&j&4https://docs.python.org/3/library/ast.html#ast.Whilej tast.With(j&j&3https://docs.python.org/3/library/ast.html#ast.Withj t ast.Yield(j&j&4https://docs.python.org/3/library/ast.html#ast.Yieldj t ast.YieldFrom(j&j&8https://docs.python.org/3/library/ast.html#ast.YieldFromj t ast.alias(j&j&4https://docs.python.org/3/library/ast.html#ast.aliasj tast.arg(j&j&2https://docs.python.org/3/library/ast.html#ast.argj t ast.arguments(j&j&8https://docs.python.org/3/library/ast.html#ast.argumentsj tast.comprehension(j&j&https://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressorj t bz2.BZ2File(j&j&6https://docs.python.org/3/library/bz2.html#bz2.BZ2Filej tcalendar.Calendar(j&j&Ahttps://docs.python.org/3/library/calendar.html#calendar.Calendarj t calendar.Day(j&j&https://docs.python.org/3/library/calendar.html#calendar.Monthj tcalendar.TextCalendar(j&j&Ehttps://docs.python.org/3/library/calendar.html#calendar.TextCalendarj t chunk.Chunk(j&j&8https://docs.python.org/3/library/chunk.html#chunk.Chunkj tcmd.Cmd(j&j&2https://docs.python.org/3/library/cmd.html#cmd.Cmdj tcode.InteractiveConsole(j&j&Chttps://docs.python.org/3/library/code.html#code.InteractiveConsolej tcode.InteractiveInterpreter(j&j&Ghttps://docs.python.org/3/library/code.html#code.InteractiveInterpreterj t codecs.Codec(j&j&:https://docs.python.org/3/library/codecs.html#codecs.Codecj tcodecs.CodecInfo(j&j&>https://docs.python.org/3/library/codecs.html#codecs.CodecInfoj tcodecs.IncrementalDecoder(j&j&Ghttps://docs.python.org/3/library/codecs.html#codecs.IncrementalDecoderj tcodecs.IncrementalEncoder(j&j&Ghttps://docs.python.org/3/library/codecs.html#codecs.IncrementalEncoderj tcodecs.StreamReader(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.StreamReaderj tcodecs.StreamReaderWriter(j&j&Ghttps://docs.python.org/3/library/codecs.html#codecs.StreamReaderWriterj tcodecs.StreamRecoder(j&j&Bhttps://docs.python.org/3/library/codecs.html#codecs.StreamRecoderj tcodecs.StreamWriter(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.StreamWriterj tcodeop.CommandCompiler(j&j&Dhttps://docs.python.org/3/library/codeop.html#codeop.CommandCompilerj tcodeop.Compile(j&j&https://docs.python.org/3/library/ctypes.html#ctypes.Structurej t ctypes.Union(j&j&:https://docs.python.org/3/library/ctypes.html#ctypes.Unionj t ctypes.WinDLL(j&j&;https://docs.python.org/3/library/ctypes.html#ctypes.WinDLLj t ctypes._CData(j&j&;https://docs.python.org/3/library/ctypes.html#ctypes._CDataj tctypes._FuncPtr(j&j&=https://docs.python.org/3/library/ctypes.html#ctypes._FuncPtrj tctypes._Pointer(j&j&=https://docs.python.org/3/library/ctypes.html#ctypes._Pointerj tctypes._SimpleCData(j&j&Ahttps://docs.python.org/3/library/ctypes.html#ctypes._SimpleCDataj t ctypes.c_bool(j&j&;https://docs.python.org/3/library/ctypes.html#ctypes.c_boolj t ctypes.c_byte(j&j&;https://docs.python.org/3/library/ctypes.html#ctypes.c_bytej t ctypes.c_char(j&j&;https://docs.python.org/3/library/ctypes.html#ctypes.c_charj tctypes.c_char_p(j&j&=https://docs.python.org/3/library/ctypes.html#ctypes.c_char_pj tctypes.c_double(j&j&=https://docs.python.org/3/library/ctypes.html#ctypes.c_doublej tctypes.c_float(j&j&https://docs.python.org/3/library/ctypes.html#ctypes.c_ssize_tj tctypes.c_time_t(j&j&=https://docs.python.org/3/library/ctypes.html#ctypes.c_time_tj tctypes.c_ubyte(j&j&https://docs.python.org/3/library/ctypes.html#ctypes.c_wchar_pj tctypes.py_object(j&j&>https://docs.python.org/3/library/ctypes.html#ctypes.py_objectj tcurses.textpad.Textbox(j&j&Dhttps://docs.python.org/3/library/curses.html#curses.textpad.Textboxj tdataclasses.Field(j&j&Dhttps://docs.python.org/3/library/dataclasses.html#dataclasses.Fieldj t datetime.date(j&j&=https://docs.python.org/3/library/datetime.html#datetime.datej tdatetime.datetime(j&j&Ahttps://docs.python.org/3/library/datetime.html#datetime.datetimej t datetime.time(j&j&=https://docs.python.org/3/library/datetime.html#datetime.timej tdatetime.timedelta(j&j&Bhttps://docs.python.org/3/library/datetime.html#datetime.timedeltaj tdatetime.timezone(j&j&Ahttps://docs.python.org/3/library/datetime.html#datetime.timezonej tdatetime.tzinfo(j&j&?https://docs.python.org/3/library/datetime.html#datetime.tzinfoj tdecimal.BasicContext(j&j&Chttps://docs.python.org/3/library/decimal.html#decimal.BasicContextj tdecimal.Clamped(j&j&>https://docs.python.org/3/library/decimal.html#decimal.Clampedj tdecimal.Context(j&j&>https://docs.python.org/3/library/decimal.html#decimal.Contextj tdecimal.Decimal(j&j&>https://docs.python.org/3/library/decimal.html#decimal.Decimalj tdecimal.DecimalException(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.DecimalExceptionj tdecimal.DefaultContext(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.DefaultContextj tdecimal.DivisionByZero(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.DivisionByZeroj tdecimal.ExtendedContext(j&j&Fhttps://docs.python.org/3/library/decimal.html#decimal.ExtendedContextj tdecimal.FloatOperation(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal.FloatOperationj tdecimal.Inexact(j&j&>https://docs.python.org/3/library/decimal.html#decimal.Inexactj tdecimal.InvalidOperation(j&j&Ghttps://docs.python.org/3/library/decimal.html#decimal.InvalidOperationj tdecimal.Overflow(j&j&?https://docs.python.org/3/library/decimal.html#decimal.Overflowj tdecimal.Rounded(j&j&>https://docs.python.org/3/library/decimal.html#decimal.Roundedj tdecimal.Subnormal(j&j&@https://docs.python.org/3/library/decimal.html#decimal.Subnormalj tdecimal.Underflow(j&j&@https://docs.python.org/3/library/decimal.html#decimal.Underflowj tdict(j&j&4https://docs.python.org/3/library/stdtypes.html#dictj tdifflib.Differ(j&j&=https://docs.python.org/3/library/difflib.html#difflib.Differj tdifflib.HtmlDiff(j&j&?https://docs.python.org/3/library/difflib.html#difflib.HtmlDiffj tdifflib.SequenceMatcher(j&j&Fhttps://docs.python.org/3/library/difflib.html#difflib.SequenceMatcherj t dis.Bytecode(j&j&7https://docs.python.org/3/library/dis.html#dis.Bytecodej tdis.Instruction(j&j&:https://docs.python.org/3/library/dis.html#dis.Instructionj t dis.Positions(j&j&8https://docs.python.org/3/library/dis.html#dis.Positionsj tdoctest.DebugRunner(j&j&Bhttps://docs.python.org/3/library/doctest.html#doctest.DebugRunnerj tdoctest.DocTest(j&j&>https://docs.python.org/3/library/doctest.html#doctest.DocTestj tdoctest.DocTestFinder(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest.DocTestFinderj tdoctest.DocTestParser(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest.DocTestParserj tdoctest.DocTestRunner(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest.DocTestRunnerj tdoctest.Example(j&j&>https://docs.python.org/3/library/doctest.html#doctest.Examplej tdoctest.OutputChecker(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest.OutputCheckerj temail.charset.Charset(j&j&Jhttps://docs.python.org/3/library/email.charset.html#email.charset.Charsetj t#email.contentmanager.ContentManager(j&j&_https://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.ContentManagerj temail.generator.BytesGenerator(j&j&Uhttps://docs.python.org/3/library/email.generator.html#email.generator.BytesGeneratorj t email.generator.DecodedGenerator(j&j&Whttps://docs.python.org/3/library/email.generator.html#email.generator.DecodedGeneratorj temail.generator.Generator(j&j&Phttps://docs.python.org/3/library/email.generator.html#email.generator.Generatorj temail.header.Header(j&j&Ghttps://docs.python.org/3/library/email.header.html#email.header.Headerj temail.headerregistry.Address(j&j&Xhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Addressj t"email.headerregistry.AddressHeader(j&j&^https://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.AddressHeaderj temail.headerregistry.BaseHeader(j&j&[https://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.BaseHeaderj t-email.headerregistry.ContentDispositionHeader(j&j&ihttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentDispositionHeaderj t,email.headerregistry.ContentTransferEncoding(j&j&hhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTransferEncodingj t&email.headerregistry.ContentTypeHeader(j&j&bhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTypeHeaderj temail.headerregistry.DateHeader(j&j&[https://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.DateHeaderj temail.headerregistry.Group(j&j&Vhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Groupj t#email.headerregistry.HeaderRegistry(j&j&_https://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.HeaderRegistryj t&email.headerregistry.MIMEVersionHeader(j&j&bhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.MIMEVersionHeaderj t,email.headerregistry.ParameterizedMIMEHeader(j&j&hhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ParameterizedMIMEHeaderj t(email.headerregistry.SingleAddressHeader(j&j&dhttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.SingleAddressHeaderj t'email.headerregistry.UnstructuredHeader(j&j&chttps://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.UnstructuredHeaderj temail.message.EmailMessage(j&j&Ohttps://docs.python.org/3/library/email.message.html#email.message.EmailMessagej temail.message.MIMEPart(j&j&Khttps://docs.python.org/3/library/email.message.html#email.message.MIMEPartj temail.message.Message(j&j&Shttps://docs.python.org/3/library/email.compat32-message.html#email.message.Messagej t&email.mime.application.MIMEApplication(j&j&Xhttps://docs.python.org/3/library/email.mime.html#email.mime.application.MIMEApplicationj temail.mime.audio.MIMEAudio(j&j&Lhttps://docs.python.org/3/library/email.mime.html#email.mime.audio.MIMEAudioj temail.mime.base.MIMEBase(j&j&Jhttps://docs.python.org/3/library/email.mime.html#email.mime.base.MIMEBasej temail.mime.image.MIMEImage(j&j&Lhttps://docs.python.org/3/library/email.mime.html#email.mime.image.MIMEImagej temail.mime.message.MIMEMessage(j&j&Phttps://docs.python.org/3/library/email.mime.html#email.mime.message.MIMEMessagej t"email.mime.multipart.MIMEMultipart(j&j&Thttps://docs.python.org/3/library/email.mime.html#email.mime.multipart.MIMEMultipartj t(email.mime.nonmultipart.MIMENonMultipart(j&j&Zhttps://docs.python.org/3/library/email.mime.html#email.mime.nonmultipart.MIMENonMultipartj temail.mime.text.MIMEText(j&j&Jhttps://docs.python.org/3/library/email.mime.html#email.mime.text.MIMETextj temail.parser.BytesFeedParser(j&j&Phttps://docs.python.org/3/library/email.parser.html#email.parser.BytesFeedParserj temail.parser.BytesHeaderParser(j&j&Rhttps://docs.python.org/3/library/email.parser.html#email.parser.BytesHeaderParserj temail.parser.BytesParser(j&j&Lhttps://docs.python.org/3/library/email.parser.html#email.parser.BytesParserj temail.parser.FeedParser(j&j&Khttps://docs.python.org/3/library/email.parser.html#email.parser.FeedParserj temail.parser.HeaderParser(j&j&Mhttps://docs.python.org/3/library/email.parser.html#email.parser.HeaderParserj temail.parser.Parser(j&j&Ghttps://docs.python.org/3/library/email.parser.html#email.parser.Parserj temail.policy.Compat32(j&j&Ihttps://docs.python.org/3/library/email.policy.html#email.policy.Compat32j temail.policy.EmailPolicy(j&j&Lhttps://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicyj temail.policy.Policy(j&j&Ghttps://docs.python.org/3/library/email.policy.html#email.policy.Policyj t enum.Enum(j&j&5https://docs.python.org/3/library/enum.html#enum.Enumj tenum.EnumCheck(j&j&:https://docs.python.org/3/library/enum.html#enum.EnumCheckj t enum.EnumType(j&j&9https://docs.python.org/3/library/enum.html#enum.EnumTypej t enum.Flag(j&j&5https://docs.python.org/3/library/enum.html#enum.Flagj tenum.FlagBoundary(j&j&=https://docs.python.org/3/library/enum.html#enum.FlagBoundaryj t enum.IntEnum(j&j&8https://docs.python.org/3/library/enum.html#enum.IntEnumj t enum.IntFlag(j&j&8https://docs.python.org/3/library/enum.html#enum.IntFlagj t enum.ReprEnum(j&j&9https://docs.python.org/3/library/enum.html#enum.ReprEnumj t enum.StrEnum(j&j&8https://docs.python.org/3/library/enum.html#enum.StrEnumj t enum.auto(j&j&5https://docs.python.org/3/library/enum.html#enum.autoj tfilecmp.dircmp(j&j&=https://docs.python.org/3/library/filecmp.html#filecmp.dircmpj tfileinput.FileInput(j&j&Dhttps://docs.python.org/3/library/fileinput.html#fileinput.FileInputj tfloat(j&j&6https://docs.python.org/3/library/functions.html#floatj tfractions.Fraction(j&j&Chttps://docs.python.org/3/library/fractions.html#fractions.Fractionj t frozenset(j&j&9https://docs.python.org/3/library/stdtypes.html#frozensetj t ftplib.FTP(j&j&8https://docs.python.org/3/library/ftplib.html#ftplib.FTPj tftplib.FTP_TLS(j&j&https://docs.python.org/3/library/logging.html#logging.Handlerj tlogging.LogRecord(j&j&@https://docs.python.org/3/library/logging.html#logging.LogRecordj tlogging.Logger(j&j&=https://docs.python.org/3/library/logging.html#logging.Loggerj tlogging.LoggerAdapter(j&j&Dhttps://docs.python.org/3/library/logging.html#logging.LoggerAdapterj tlogging.NullHandler(j&j&Khttps://docs.python.org/3/library/logging.handlers.html#logging.NullHandlerj tlogging.StreamHandler(j&j&Mhttps://docs.python.org/3/library/logging.handlers.html#logging.StreamHandlerj t$logging.handlers.BaseRotatingHandler(j&j&\https://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandlerj t!logging.handlers.BufferingHandler(j&j&Yhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.BufferingHandlerj t logging.handlers.DatagramHandler(j&j&Xhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.DatagramHandlerj tlogging.handlers.HTTPHandler(j&j&Thttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.HTTPHandlerj tlogging.handlers.MemoryHandler(j&j&Vhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.MemoryHandlerj t"logging.handlers.NTEventLogHandler(j&j&Zhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandlerj tlogging.handlers.QueueHandler(j&j&Uhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueHandlerj tlogging.handlers.QueueListener(j&j&Vhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListenerj t$logging.handlers.RotatingFileHandler(j&j&\https://docs.python.org/3/library/logging.handlers.html#logging.handlers.RotatingFileHandlerj tlogging.handlers.SMTPHandler(j&j&Thttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.SMTPHandlerj tlogging.handlers.SocketHandler(j&j&Vhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandlerj tlogging.handlers.SysLogHandler(j&j&Vhttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.SysLogHandlerj t)logging.handlers.TimedRotatingFileHandler(j&j&ahttps://docs.python.org/3/library/logging.handlers.html#logging.handlers.TimedRotatingFileHandlerj t#logging.handlers.WatchedFileHandler(j&j&[https://docs.python.org/3/library/logging.handlers.html#logging.handlers.WatchedFileHandlerj tlzma.LZMACompressor(j&j&?https://docs.python.org/3/library/lzma.html#lzma.LZMACompressorj tlzma.LZMADecompressor(j&j&Ahttps://docs.python.org/3/library/lzma.html#lzma.LZMADecompressorj t lzma.LZMAFile(j&j&9https://docs.python.org/3/library/lzma.html#lzma.LZMAFilej t mailbox.Babyl(j&j&https://docs.python.org/3/library/mailbox.html#mailbox.Mailboxj tmailbox.Maildir(j&j&>https://docs.python.org/3/library/mailbox.html#mailbox.Maildirj tmailbox.MaildirMessage(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessagej tmailbox.Message(j&j&>https://docs.python.org/3/library/mailbox.html#mailbox.Messagej t mailbox.mbox(j&j&;https://docs.python.org/3/library/mailbox.html#mailbox.mboxj tmailbox.mboxMessage(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox.mboxMessagej t memoryview(j&j&:https://docs.python.org/3/library/stdtypes.html#memoryviewj tmimetypes.MimeTypes(j&j&Dhttps://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypesj t mmap.mmap(j&j&5https://docs.python.org/3/library/mmap.html#mmap.mmapj tmodulefinder.ModuleFinder(j&j&Mhttps://docs.python.org/3/library/modulefinder.html#modulefinder.ModuleFinderj t msilib.Binary(j&j&;https://docs.python.org/3/library/msilib.html#msilib.Binaryj t msilib.CAB(j&j&8https://docs.python.org/3/library/msilib.html#msilib.CABj tmsilib.Control(j&j&https://docs.python.org/3/library/msilib.html#msilib.Directoryj tmsilib.Feature(j&j&https://docs.python.org/3/library/numbers.html#numbers.Complexj tnumbers.Integral(j&j&?https://docs.python.org/3/library/numbers.html#numbers.Integralj tnumbers.Number(j&j&=https://docs.python.org/3/library/numbers.html#numbers.Numberj tnumbers.Rational(j&j&?https://docs.python.org/3/library/numbers.html#numbers.Rationalj t numbers.Real(j&j&;https://docs.python.org/3/library/numbers.html#numbers.Realj tobject(j&j&7https://docs.python.org/3/library/functions.html#objectj toptparse.Option(j&j&?https://docs.python.org/3/library/optparse.html#optparse.Optionj toptparse.OptionGroup(j&j&Dhttps://docs.python.org/3/library/optparse.html#optparse.OptionGroupj toptparse.OptionParser(j&j&Ehttps://docs.python.org/3/library/optparse.html#optparse.OptionParserj toptparse.Values(j&j&?https://docs.python.org/3/library/optparse.html#optparse.Valuesj t os.DirEntry(j&j&5https://docs.python.org/3/library/os.html#os.DirEntryj t os.PathLike(j&j&5https://docs.python.org/3/library/os.html#os.PathLikej tos.sched_param(j&j&8https://docs.python.org/3/library/os.html#os.sched_paramj tos.stat_result(j&j&8https://docs.python.org/3/library/os.html#os.stat_resultj tos.terminal_size(j&j&:https://docs.python.org/3/library/os.html#os.terminal_sizej t pathlib.Path(j&j&;https://docs.python.org/3/library/pathlib.html#pathlib.Pathj tpathlib.PosixPath(j&j&@https://docs.python.org/3/library/pathlib.html#pathlib.PosixPathj tpathlib.PurePath(j&j&?https://docs.python.org/3/library/pathlib.html#pathlib.PurePathj tpathlib.PurePosixPath(j&j&Dhttps://docs.python.org/3/library/pathlib.html#pathlib.PurePosixPathj tpathlib.PureWindowsPath(j&j&Fhttps://docs.python.org/3/library/pathlib.html#pathlib.PureWindowsPathj tpathlib.WindowsPath(j&j&Bhttps://docs.python.org/3/library/pathlib.html#pathlib.WindowsPathj tpdb.Pdb(j&j&2https://docs.python.org/3/library/pdb.html#pdb.Pdbj tpickle.PickleBuffer(j&j&Ahttps://docs.python.org/3/library/pickle.html#pickle.PickleBufferj tpickle.Pickler(j&j&https://docs.python.org/3/library/pickle.html#pickle.Unpicklerj tpipes.Template(j&j&;https://docs.python.org/3/library/pipes.html#pipes.Templatej tpkgutil.ModuleInfo(j&j&Ahttps://docs.python.org/3/library/pkgutil.html#pkgutil.ModuleInfoj t plistlib.UID(j&j&https://docs.python.org/3/library/profile.html#profile.Profilej tproperty(j&j&9https://docs.python.org/3/library/functions.html#propertyj t pstats.Stats(j&j&;https://docs.python.org/3/library/profile.html#pstats.Statsj tpy_compile.PycInvalidationMode(j&j&Phttps://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationModej t pyclbr.Class(j&j&:https://docs.python.org/3/library/pyclbr.html#pyclbr.Classj tpyclbr.Function(j&j&=https://docs.python.org/3/library/pyclbr.html#pyclbr.Functionj tqueue.LifoQueue(j&j&https://docs.python.org/3/library/queue.html#queue.SimpleQueuej t random.Random(j&j&;https://docs.python.org/3/library/random.html#random.Randomj trandom.SystemRandom(j&j&Ahttps://docs.python.org/3/library/random.html#random.SystemRandomj trange(j&j&5https://docs.python.org/3/library/stdtypes.html#rangej tre.Match(j&j&2https://docs.python.org/3/library/re.html#re.Matchj t re.Pattern(j&j&4https://docs.python.org/3/library/re.html#re.Patternj t re.RegexFlag(j&j&6https://docs.python.org/3/library/re.html#re.RegexFlagj t reprlib.Repr(j&j&;https://docs.python.org/3/library/reprlib.html#reprlib.Reprj trlcompleter.Completer(j&j&Hhttps://docs.python.org/3/library/rlcompleter.html#rlcompleter.Completerj tsched.scheduler(j&j&https://docs.python.org/3/library/string.html#string.Formatterj tstring.Template(j&j&=https://docs.python.org/3/library/string.html#string.Templatej t struct.Struct(j&j&;https://docs.python.org/3/library/struct.html#struct.Structj tsubprocess.CompletedProcess(j&j&Mhttps://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcessj tsubprocess.Popen(j&j&Bhttps://docs.python.org/3/library/subprocess.html#subprocess.Popenj tsubprocess.STARTUPINFO(j&j&Hhttps://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFOj tsuper(j&j&6https://docs.python.org/3/library/functions.html#superj tsymtable.Class(j&j&>https://docs.python.org/3/library/symtable.html#symtable.Classj tsymtable.Function(j&j&Ahttps://docs.python.org/3/library/symtable.html#symtable.Functionj tsymtable.Symbol(j&j&?https://docs.python.org/3/library/symtable.html#symtable.Symbolj tsymtable.SymbolTable(j&j&Dhttps://docs.python.org/3/library/symtable.html#symtable.SymbolTablej ttarfile.TarFile(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.TarFilej ttarfile.TarInfo(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile.TarInfoj ttelnetlib.Telnet(j&j&Ahttps://docs.python.org/3/library/telnetlib.html#telnetlib.Telnetj ttempfile.SpooledTemporaryFile(j&j&Mhttps://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFilej ttempfile.TemporaryDirectory(j&j&Khttps://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectoryj ttest.support.Matcher(j&j&@https://docs.python.org/3/library/test.html#test.support.Matcherj ttest.support.SaveSignals(j&j&Dhttps://docs.python.org/3/library/test.html#test.support.SaveSignalsj t test.support.SuppressCrashReport(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.SuppressCrashReportj t-test.support.bytecode_helper.BytecodeTestCase(j&j&Yhttps://docs.python.org/3/library/test.html#test.support.bytecode_helper.BytecodeTestCasej t&test.support.import_helper.CleanImport(j&j&Rhttps://docs.python.org/3/library/test.html#test.support.import_helper.CleanImportj t(test.support.import_helper.DirsOnSysPath(j&j&Thttps://docs.python.org/3/library/test.html#test.support.import_helper.DirsOnSysPathj t*test.support.os_helper.EnvironmentVarGuard(j&j&Vhttps://docs.python.org/3/library/test.html#test.support.os_helper.EnvironmentVarGuardj ttest.support.os_helper.FakePath(j&j&Khttps://docs.python.org/3/library/test.html#test.support.os_helper.FakePathj t-test.support.warnings_helper.WarningsRecorder(j&j&Yhttps://docs.python.org/3/library/test.html#test.support.warnings_helper.WarningsRecorderj ttextwrap.TextWrapper(j&j&Dhttps://docs.python.org/3/library/textwrap.html#textwrap.TextWrapperj tthreading.Barrier(j&j&Bhttps://docs.python.org/3/library/threading.html#threading.Barrierj tthreading.BoundedSemaphore(j&j&Khttps://docs.python.org/3/library/threading.html#threading.BoundedSemaphorej tthreading.Condition(j&j&Dhttps://docs.python.org/3/library/threading.html#threading.Conditionj tthreading.Event(j&j&@https://docs.python.org/3/library/threading.html#threading.Eventj tthreading.Lock(j&j&?https://docs.python.org/3/library/threading.html#threading.Lockj tthreading.RLock(j&j&@https://docs.python.org/3/library/threading.html#threading.RLockj tthreading.Semaphore(j&j&Dhttps://docs.python.org/3/library/threading.html#threading.Semaphorej tthreading.Thread(j&j&Ahttps://docs.python.org/3/library/threading.html#threading.Threadj tthreading.Timer(j&j&@https://docs.python.org/3/library/threading.html#threading.Timerj tthreading.local(j&j&@https://docs.python.org/3/library/threading.html#threading.localj ttime.struct_time(j&j&https://docs.python.org/3/library/turtle.html#turtle.RawTurtlej t turtle.Screen(j&j&;https://docs.python.org/3/library/turtle.html#turtle.Screenj tturtle.ScrolledCanvas(j&j&Chttps://docs.python.org/3/library/turtle.html#turtle.ScrolledCanvasj t turtle.Shape(j&j&:https://docs.python.org/3/library/turtle.html#turtle.Shapej t turtle.Turtle(j&j&;https://docs.python.org/3/library/turtle.html#turtle.Turtlej tturtle.TurtleScreen(j&j&Ahttps://docs.python.org/3/library/turtle.html#turtle.TurtleScreenj t turtle.Vec2D(j&j&:https://docs.python.org/3/library/turtle.html#turtle.Vec2Dj ttype(j&j&5https://docs.python.org/3/library/functions.html#typej ttypes.CodeType(j&j&;https://docs.python.org/3/library/types.html#types.CodeTypej ttypes.GenericAlias(j&j&?https://docs.python.org/3/library/types.html#types.GenericAliasj ttypes.MappingProxyType(j&j&Chttps://docs.python.org/3/library/types.html#types.MappingProxyTypej ttypes.ModuleType(j&j&=https://docs.python.org/3/library/types.html#types.ModuleTypej ttypes.SimpleNamespace(j&j&Bhttps://docs.python.org/3/library/types.html#types.SimpleNamespacej ttypes.TracebackType(j&j&@https://docs.python.org/3/library/types.html#types.TracebackTypej ttypes.UnionType(j&j&https://docs.python.org/3/library/typing.html#typing.Awaitablej ttyping.BinaryIO(j&j&=https://docs.python.org/3/library/typing.html#typing.BinaryIOj ttyping.ByteString(j&j&?https://docs.python.org/3/library/typing.html#typing.ByteStringj ttyping.ChainMap(j&j&=https://docs.python.org/3/library/typing.html#typing.ChainMapj ttyping.Collection(j&j&?https://docs.python.org/3/library/typing.html#typing.Collectionj ttyping.Container(j&j&>https://docs.python.org/3/library/typing.html#typing.Containerj ttyping.ContextManager(j&j&Chttps://docs.python.org/3/library/typing.html#typing.ContextManagerj ttyping.Coroutine(j&j&>https://docs.python.org/3/library/typing.html#typing.Coroutinej ttyping.Counter(j&j&https://docs.python.org/3/library/typing.html#typing.FrozenSetj ttyping.Generator(j&j&>https://docs.python.org/3/library/typing.html#typing.Generatorj ttyping.Generic(j&j&https://docs.python.org/3/library/typing.html#typing.ItemsViewj ttyping.Iterable(j&j&=https://docs.python.org/3/library/typing.html#typing.Iterablej ttyping.Iterator(j&j&=https://docs.python.org/3/library/typing.html#typing.Iteratorj ttyping.KeysView(j&j&=https://docs.python.org/3/library/typing.html#typing.KeysViewj t typing.List(j&j&9https://docs.python.org/3/library/typing.html#typing.Listj ttyping.Mapping(j&j&https://docs.python.org/3/library/typing.html#typing.ParamSpecj ttyping.Pattern(j&j&https://docs.python.org/3/library/typing.html#typing.TypedDictj ttyping.ValuesView(j&j&?https://docs.python.org/3/library/typing.html#typing.ValuesViewj tunittest.FunctionTestCase(j&j&Ihttps://docs.python.org/3/library/unittest.html#unittest.FunctionTestCasej t unittest.IsolatedAsyncioTestCase(j&j&Phttps://docs.python.org/3/library/unittest.html#unittest.IsolatedAsyncioTestCasej tunittest.TestCase(j&j&Ahttps://docs.python.org/3/library/unittest.html#unittest.TestCasej tunittest.TestLoader(j&j&Chttps://docs.python.org/3/library/unittest.html#unittest.TestLoaderj tunittest.TestResult(j&j&Chttps://docs.python.org/3/library/unittest.html#unittest.TestResultj tunittest.TestSuite(j&j&Bhttps://docs.python.org/3/library/unittest.html#unittest.TestSuitej tunittest.TextTestResult(j&j&Ghttps://docs.python.org/3/library/unittest.html#unittest.TextTestResultj tunittest.TextTestRunner(j&j&Ghttps://docs.python.org/3/library/unittest.html#unittest.TextTestRunnerj tunittest.mock.AsyncMock(j&j&Lhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.AsyncMockj tunittest.mock.MagicMock(j&j&Lhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.MagicMockj tunittest.mock.Mock(j&j&Ghttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mockj t"unittest.mock.NonCallableMagicMock(j&j&Whttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.NonCallableMagicMockj tunittest.mock.NonCallableMock(j&j&Rhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.NonCallableMockj tunittest.mock.PropertyMock(j&j&Ohttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.PropertyMockj turllib.parse.DefragResult(j&j&Mhttps://docs.python.org/3/library/urllib.parse.html#urllib.parse.DefragResultj turllib.parse.DefragResultBytes(j&j&Rhttps://docs.python.org/3/library/urllib.parse.html#urllib.parse.DefragResultBytesj turllib.parse.ParseResult(j&j&Lhttps://docs.python.org/3/library/urllib.parse.html#urllib.parse.ParseResultj turllib.parse.ParseResultBytes(j&j&Qhttps://docs.python.org/3/library/urllib.parse.html#urllib.parse.ParseResultBytesj turllib.parse.SplitResult(j&j&Lhttps://docs.python.org/3/library/urllib.parse.html#urllib.parse.SplitResultj turllib.parse.SplitResultBytes(j&j&Qhttps://docs.python.org/3/library/urllib.parse.html#urllib.parse.SplitResultBytesj t'urllib.request.AbstractBasicAuthHandler(j&j&]https://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractBasicAuthHandlerj t(urllib.request.AbstractDigestAuthHandler(j&j&^https://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractDigestAuthHandlerj turllib.request.BaseHandler(j&j&Phttps://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandlerj turllib.request.CacheFTPHandler(j&j&Thttps://docs.python.org/3/library/urllib.request.html#urllib.request.CacheFTPHandlerj turllib.request.DataHandler(j&j&Phttps://docs.python.org/3/library/urllib.request.html#urllib.request.DataHandlerj turllib.request.FTPHandler(j&j&Ohttps://docs.python.org/3/library/urllib.request.html#urllib.request.FTPHandlerj turllib.request.FancyURLopener(j&j&Shttps://docs.python.org/3/library/urllib.request.html#urllib.request.FancyURLopenerj turllib.request.FileHandler(j&j&Phttps://docs.python.org/3/library/urllib.request.html#urllib.request.FileHandlerj t#urllib.request.HTTPBasicAuthHandler(j&j&Yhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPBasicAuthHandlerj t"urllib.request.HTTPCookieProcessor(j&j&Xhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPCookieProcessorj t&urllib.request.HTTPDefaultErrorHandler(j&j&\https://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPDefaultErrorHandlerj t$urllib.request.HTTPDigestAuthHandler(j&j&Zhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPDigestAuthHandlerj t!urllib.request.HTTPErrorProcessor(j&j&Whttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPErrorProcessorj turllib.request.HTTPHandler(j&j&Phttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPHandlerj turllib.request.HTTPPasswordMgr(j&j&Thttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrj t.urllib.request.HTTPPasswordMgrWithDefaultRealm(j&j&dhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrWithDefaultRealmj t+urllib.request.HTTPPasswordMgrWithPriorAuth(j&j&ahttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrWithPriorAuthj t"urllib.request.HTTPRedirectHandler(j&j&Xhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandlerj turllib.request.HTTPSHandler(j&j&Qhttps://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPSHandlerj turllib.request.OpenerDirector(j&j&Shttps://docs.python.org/3/library/urllib.request.html#urllib.request.OpenerDirectorj t$urllib.request.ProxyBasicAuthHandler(j&j&Zhttps://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyBasicAuthHandlerj t%urllib.request.ProxyDigestAuthHandler(j&j&[https://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyDigestAuthHandlerj turllib.request.ProxyHandler(j&j&Qhttps://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyHandlerj turllib.request.Request(j&j&Lhttps://docs.python.org/3/library/urllib.request.html#urllib.request.Requestj turllib.request.URLopener(j&j&Nhttps://docs.python.org/3/library/urllib.request.html#urllib.request.URLopenerj turllib.request.UnknownHandler(j&j&Shttps://docs.python.org/3/library/urllib.request.html#urllib.request.UnknownHandlerj turllib.response.addinfourl(j&j&Phttps://docs.python.org/3/library/urllib.request.html#urllib.response.addinfourlj t"urllib.robotparser.RobotFileParser(j&j&\https://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParserj t uuid.SafeUUID(j&j&9https://docs.python.org/3/library/uuid.html#uuid.SafeUUIDj t uuid.UUID(j&j&5https://docs.python.org/3/library/uuid.html#uuid.UUIDj tvenv.EnvBuilder(j&j&;https://docs.python.org/3/library/venv.html#venv.EnvBuilderj twarnings.catch_warnings(j&j&Ghttps://docs.python.org/3/library/warnings.html#warnings.catch_warningsj twave.Wave_read(j&j&:https://docs.python.org/3/library/wave.html#wave.Wave_readj twave.Wave_write(j&j&;https://docs.python.org/3/library/wave.html#wave.Wave_writej tweakref.WeakKeyDictionary(j&j&Hhttps://docs.python.org/3/library/weakref.html#weakref.WeakKeyDictionaryj tweakref.WeakMethod(j&j&Ahttps://docs.python.org/3/library/weakref.html#weakref.WeakMethodj tweakref.WeakSet(j&j&>https://docs.python.org/3/library/weakref.html#weakref.WeakSetj tweakref.WeakValueDictionary(j&j&Jhttps://docs.python.org/3/library/weakref.html#weakref.WeakValueDictionaryj tweakref.finalize(j&j&?https://docs.python.org/3/library/weakref.html#weakref.finalizej t weakref.ref(j&j&:https://docs.python.org/3/library/weakref.html#weakref.refj twsgiref.handlers.BaseCGIHandler(j&j&Nhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseCGIHandlerj twsgiref.handlers.BaseHandler(j&j&Khttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandlerj twsgiref.handlers.CGIHandler(j&j&Jhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.CGIHandlerj twsgiref.handlers.IISCGIHandler(j&j&Mhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.IISCGIHandlerj twsgiref.handlers.SimpleHandler(j&j&Mhttps://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.SimpleHandlerj twsgiref.headers.Headers(j&j&Fhttps://docs.python.org/3/library/wsgiref.html#wsgiref.headers.Headersj t(wsgiref.simple_server.WSGIRequestHandler(j&j&Whttps://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandlerj t wsgiref.simple_server.WSGIServer(j&j&Ohttps://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIServerj twsgiref.types.ErrorStream(j&j&Hhttps://docs.python.org/3/library/wsgiref.html#wsgiref.types.ErrorStreamj twsgiref.types.FileWrapper(j&j&Hhttps://docs.python.org/3/library/wsgiref.html#wsgiref.types.FileWrapperj twsgiref.types.InputStream(j&j&Hhttps://docs.python.org/3/library/wsgiref.html#wsgiref.types.InputStreamj twsgiref.types.StartResponse(j&j&Jhttps://docs.python.org/3/library/wsgiref.html#wsgiref.types.StartResponsej twsgiref.util.FileWrapper(j&j&Ghttps://docs.python.org/3/library/wsgiref.html#wsgiref.util.FileWrapperj t xdrlib.Packer(j&j&;https://docs.python.org/3/library/xdrlib.html#xdrlib.Packerj txdrlib.Unpacker(j&j&=https://docs.python.org/3/library/xdrlib.html#xdrlib.Unpackerj txml.dom.pulldom.DOMEventStream(j&j&Uhttps://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStreamj txml.dom.pulldom.PullDom(j&j&Nhttps://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.PullDomj txml.dom.pulldom.SAX2DOM(j&j&Nhttps://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.SAX2DOMj t&xml.etree.ElementTree.C14NWriterTarget(j&j&chttps://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.C14NWriterTargetj txml.etree.ElementTree.Element(j&j&Zhttps://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Elementj t!xml.etree.ElementTree.ElementTree(j&j&^https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTreej t xml.etree.ElementTree.ParseError(j&j&]https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ParseErrorj txml.etree.ElementTree.QName(j&j&Xhttps://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.QNamej t!xml.etree.ElementTree.TreeBuilder(j&j&^https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilderj txml.etree.ElementTree.XMLParser(j&j&\https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParserj t#xml.etree.ElementTree.XMLPullParser(j&j&`https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParserj txml.sax.handler.ContentHandler(j&j&Uhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandlerj txml.sax.handler.DTDHandler(j&j&Qhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.DTDHandlerj txml.sax.handler.EntityResolver(j&j&Uhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.EntityResolverj txml.sax.handler.ErrorHandler(j&j&Shttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ErrorHandlerj txml.sax.handler.LexicalHandler(j&j&Uhttps://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.LexicalHandlerj txml.sax.saxutils.XMLFilterBase(j&j&Shttps://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.XMLFilterBasej txml.sax.saxutils.XMLGenerator(j&j&Rhttps://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.XMLGeneratorj t xml.sax.xmlreader.AttributesImpl(j&j&Vhttps://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesImplj t"xml.sax.xmlreader.AttributesNSImpl(j&j&Xhttps://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesNSImplj t#xml.sax.xmlreader.IncrementalParser(j&j&Yhttps://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.IncrementalParserj txml.sax.xmlreader.InputSource(j&j&Shttps://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSourcej txml.sax.xmlreader.Locator(j&j&Ohttps://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Locatorj txml.sax.xmlreader.XMLReader(j&j&Qhttps://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReaderj txmlrpc.client.Binary(j&j&Ihttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Binaryj txmlrpc.client.DateTime(j&j&Khttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.DateTimej txmlrpc.client.Fault(j&j&Hhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Faultj txmlrpc.client.MultiCall(j&j&Lhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.MultiCallj txmlrpc.client.ProtocolError(j&j&Phttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolErrorj txmlrpc.client.ServerProxy(j&j&Nhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxyj t%xmlrpc.server.CGIXMLRPCRequestHandler(j&j&Zhttps://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandlerj t(xmlrpc.server.DocCGIXMLRPCRequestHandler(j&j&]https://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocCGIXMLRPCRequestHandlerj t%xmlrpc.server.DocXMLRPCRequestHandler(j&j&Zhttps://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCRequestHandlerj txmlrpc.server.DocXMLRPCServer(j&j&Rhttps://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCServerj t(xmlrpc.server.SimpleXMLRPCRequestHandler(j&j&]https://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCRequestHandlerj t xmlrpc.server.SimpleXMLRPCServer(j&j&Uhttps://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServerj t zipfile.Path(j&j&;https://docs.python.org/3/library/zipfile.html#zipfile.Pathj tzipfile.PyZipFile(j&j&@https://docs.python.org/3/library/zipfile.html#zipfile.PyZipFilej tzipfile.ZipFile(j&j&>https://docs.python.org/3/library/zipfile.html#zipfile.ZipFilej tzipfile.ZipInfo(j&j&>https://docs.python.org/3/library/zipfile.html#zipfile.ZipInfoj tzipimport.zipimporter(j&j&Fhttps://docs.python.org/3/library/zipimport.html#zipimport.zipimporterj tzoneinfo.ZoneInfo(j&j&Ahttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.ZoneInfoj tu py:function}( __import__(j&j&9https://docs.python.org/3/library/functions.html#import__j t_thread.allocate_lock(j&j&Chttps://docs.python.org/3/library/_thread.html#thread.allocate_lockj t _thread.exit(j&j&:https://docs.python.org/3/library/_thread.html#thread.exitj t_thread.get_ident(j&j&?https://docs.python.org/3/library/_thread.html#thread.get_identj t_thread.get_native_id(j&j&Chttps://docs.python.org/3/library/_thread.html#thread.get_native_idj t_thread.interrupt_main(j&j&Dhttps://docs.python.org/3/library/_thread.html#thread.interrupt_mainj t_thread.stack_size(j&j&@https://docs.python.org/3/library/_thread.html#thread.stack_sizej t_thread.start_new_thread(j&j&Fhttps://docs.python.org/3/library/_thread.html#thread.start_new_threadj tabc.abstractclassmethod(j&j&Bhttps://docs.python.org/3/library/abc.html#abc.abstractclassmethodj tabc.abstractmethod(j&j&=https://docs.python.org/3/library/abc.html#abc.abstractmethodj tabc.abstractproperty(j&j&?https://docs.python.org/3/library/abc.html#abc.abstractpropertyj tabc.abstractstaticmethod(j&j&Chttps://docs.python.org/3/library/abc.html#abc.abstractstaticmethodj tabc.get_cache_token(j&j&>https://docs.python.org/3/library/abc.html#abc.get_cache_tokenj tabc.update_abstractmethods(j&j&Ehttps://docs.python.org/3/library/abc.html#abc.update_abstractmethodsj tabs(j&j&4https://docs.python.org/3/library/functions.html#absj t aifc.open(j&j&5https://docs.python.org/3/library/aifc.html#aifc.openj taiter(j&j&6https://docs.python.org/3/library/functions.html#aiterj tall(j&j&4https://docs.python.org/3/library/functions.html#allj tanext(j&j&6https://docs.python.org/3/library/functions.html#anextj tany(j&j&4https://docs.python.org/3/library/functions.html#anyj tascii(j&j&6https://docs.python.org/3/library/functions.html#asciij tast.copy_location(j&j&https://docs.python.org/3/library/audioop.html#audioop.findfitj taudioop.findmax(j&j&>https://docs.python.org/3/library/audioop.html#audioop.findmaxj taudioop.getsample(j&j&@https://docs.python.org/3/library/audioop.html#audioop.getsamplej taudioop.lin2adpcm(j&j&@https://docs.python.org/3/library/audioop.html#audioop.lin2adpcmj taudioop.lin2alaw(j&j&?https://docs.python.org/3/library/audioop.html#audioop.lin2alawj taudioop.lin2lin(j&j&>https://docs.python.org/3/library/audioop.html#audioop.lin2linj taudioop.lin2ulaw(j&j&?https://docs.python.org/3/library/audioop.html#audioop.lin2ulawj t audioop.max(j&j&:https://docs.python.org/3/library/audioop.html#audioop.maxj t audioop.maxpp(j&j&https://docs.python.org/3/library/audioop.html#audioop.reversej t audioop.rms(j&j&:https://docs.python.org/3/library/audioop.html#audioop.rmsj taudioop.tomono(j&j&=https://docs.python.org/3/library/audioop.html#audioop.tomonoj taudioop.tostereo(j&j&?https://docs.python.org/3/library/audioop.html#audioop.tostereoj taudioop.ulaw2lin(j&j&?https://docs.python.org/3/library/audioop.html#audioop.ulaw2linj tbase64.a85decode(j&j&>https://docs.python.org/3/library/base64.html#base64.a85decodej tbase64.a85encode(j&j&>https://docs.python.org/3/library/base64.html#base64.a85encodej tbase64.b16decode(j&j&>https://docs.python.org/3/library/base64.html#base64.b16decodej tbase64.b16encode(j&j&>https://docs.python.org/3/library/base64.html#base64.b16encodej tbase64.b32decode(j&j&>https://docs.python.org/3/library/base64.html#base64.b32decodej tbase64.b32encode(j&j&>https://docs.python.org/3/library/base64.html#base64.b32encodej tbase64.b32hexdecode(j&j&Ahttps://docs.python.org/3/library/base64.html#base64.b32hexdecodej tbase64.b32hexencode(j&j&Ahttps://docs.python.org/3/library/base64.html#base64.b32hexencodej tbase64.b64decode(j&j&>https://docs.python.org/3/library/base64.html#base64.b64decodej tbase64.b64encode(j&j&>https://docs.python.org/3/library/base64.html#base64.b64encodej tbase64.b85decode(j&j&>https://docs.python.org/3/library/base64.html#base64.b85decodej tbase64.b85encode(j&j&>https://docs.python.org/3/library/base64.html#base64.b85encodej t base64.decode(j&j&;https://docs.python.org/3/library/base64.html#base64.decodej tbase64.decodebytes(j&j&@https://docs.python.org/3/library/base64.html#base64.decodebytesj t base64.encode(j&j&;https://docs.python.org/3/library/base64.html#base64.encodej tbase64.encodebytes(j&j&@https://docs.python.org/3/library/base64.html#base64.encodebytesj tbase64.standard_b64decode(j&j&Ghttps://docs.python.org/3/library/base64.html#base64.standard_b64decodej tbase64.standard_b64encode(j&j&Ghttps://docs.python.org/3/library/base64.html#base64.standard_b64encodej tbase64.urlsafe_b64decode(j&j&Fhttps://docs.python.org/3/library/base64.html#base64.urlsafe_b64decodej tbase64.urlsafe_b64encode(j&j&Fhttps://docs.python.org/3/library/base64.html#base64.urlsafe_b64encodej tbdb.checkfuncname(j&j&https://docs.python.org/3/library/binascii.html#binascii.crc32j tbinascii.crc_hqx(j&j&@https://docs.python.org/3/library/binascii.html#binascii.crc_hqxj tbinascii.hexlify(j&j&@https://docs.python.org/3/library/binascii.html#binascii.hexlifyj tbinascii.unhexlify(j&j&Bhttps://docs.python.org/3/library/binascii.html#binascii.unhexlifyj t bisect.bisect(j&j&;https://docs.python.org/3/library/bisect.html#bisect.bisectj tbisect.bisect_left(j&j&@https://docs.python.org/3/library/bisect.html#bisect.bisect_leftj tbisect.bisect_right(j&j&Ahttps://docs.python.org/3/library/bisect.html#bisect.bisect_rightj t bisect.insort(j&j&;https://docs.python.org/3/library/bisect.html#bisect.insortj tbisect.insort_left(j&j&@https://docs.python.org/3/library/bisect.html#bisect.insort_leftj tbisect.insort_right(j&j&Ahttps://docs.python.org/3/library/bisect.html#bisect.insort_rightj t breakpoint(j&j&;https://docs.python.org/3/library/functions.html#breakpointj t bz2.compress(j&j&7https://docs.python.org/3/library/bz2.html#bz2.compressj tbz2.decompress(j&j&9https://docs.python.org/3/library/bz2.html#bz2.decompressj tbz2.open(j&j&3https://docs.python.org/3/library/bz2.html#bz2.openj tcalendar.calendar(j&j&Ahttps://docs.python.org/3/library/calendar.html#calendar.calendarj tcalendar.firstweekday(j&j&Ehttps://docs.python.org/3/library/calendar.html#calendar.firstweekdayj tcalendar.isleap(j&j&?https://docs.python.org/3/library/calendar.html#calendar.isleapj tcalendar.leapdays(j&j&Ahttps://docs.python.org/3/library/calendar.html#calendar.leapdaysj tcalendar.month(j&j&>https://docs.python.org/3/library/calendar.html#calendar.monthj tcalendar.monthcalendar(j&j&Fhttps://docs.python.org/3/library/calendar.html#calendar.monthcalendarj tcalendar.monthrange(j&j&Chttps://docs.python.org/3/library/calendar.html#calendar.monthrangej tcalendar.prcal(j&j&>https://docs.python.org/3/library/calendar.html#calendar.prcalj tcalendar.prmonth(j&j&@https://docs.python.org/3/library/calendar.html#calendar.prmonthj tcalendar.setfirstweekday(j&j&Hhttps://docs.python.org/3/library/calendar.html#calendar.setfirstweekdayj tcalendar.timegm(j&j&?https://docs.python.org/3/library/calendar.html#calendar.timegmj tcalendar.weekday(j&j&@https://docs.python.org/3/library/calendar.html#calendar.weekdayj tcalendar.weekheader(j&j&Chttps://docs.python.org/3/library/calendar.html#calendar.weekheaderj tcallable(j&j&9https://docs.python.org/3/library/functions.html#callablej t cgi.parse(j&j&4https://docs.python.org/3/library/cgi.html#cgi.parsej tcgi.parse_header(j&j&;https://docs.python.org/3/library/cgi.html#cgi.parse_headerj tcgi.parse_multipart(j&j&>https://docs.python.org/3/library/cgi.html#cgi.parse_multipartj tcgi.print_directory(j&j&>https://docs.python.org/3/library/cgi.html#cgi.print_directoryj tcgi.print_environ(j&j&https://docs.python.org/3/library/codecs.html#codecs.getreaderj tcodecs.getwriter(j&j&>https://docs.python.org/3/library/codecs.html#codecs.getwriterj tcodecs.ignore_errors(j&j&Bhttps://docs.python.org/3/library/codecs.html#codecs.ignore_errorsj tcodecs.iterdecode(j&j&?https://docs.python.org/3/library/codecs.html#codecs.iterdecodej tcodecs.iterencode(j&j&?https://docs.python.org/3/library/codecs.html#codecs.iterencodej t codecs.lookup(j&j&;https://docs.python.org/3/library/codecs.html#codecs.lookupj tcodecs.lookup_error(j&j&Ahttps://docs.python.org/3/library/codecs.html#codecs.lookup_errorj tcodecs.namereplace_errors(j&j&Ghttps://docs.python.org/3/library/codecs.html#codecs.namereplace_errorsj t codecs.open(j&j&9https://docs.python.org/3/library/codecs.html#codecs.openj tcodecs.register(j&j&=https://docs.python.org/3/library/codecs.html#codecs.registerj tcodecs.register_error(j&j&Chttps://docs.python.org/3/library/codecs.html#codecs.register_errorj tcodecs.replace_errors(j&j&Chttps://docs.python.org/3/library/codecs.html#codecs.replace_errorsj tcodecs.strict_errors(j&j&Bhttps://docs.python.org/3/library/codecs.html#codecs.strict_errorsj tcodecs.unregister(j&j&?https://docs.python.org/3/library/codecs.html#codecs.unregisterj tcodecs.xmlcharrefreplace_errors(j&j&Mhttps://docs.python.org/3/library/codecs.html#codecs.xmlcharrefreplace_errorsj tcodeop.compile_command(j&j&Dhttps://docs.python.org/3/library/codeop.html#codeop.compile_commandj tcollections.namedtuple(j&j&Ihttps://docs.python.org/3/library/collections.html#collections.namedtuplej tcolorsys.hls_to_rgb(j&j&Chttps://docs.python.org/3/library/colorsys.html#colorsys.hls_to_rgbj tcolorsys.hsv_to_rgb(j&j&Chttps://docs.python.org/3/library/colorsys.html#colorsys.hsv_to_rgbj tcolorsys.rgb_to_hls(j&j&Chttps://docs.python.org/3/library/colorsys.html#colorsys.rgb_to_hlsj tcolorsys.rgb_to_hsv(j&j&Chttps://docs.python.org/3/library/colorsys.html#colorsys.rgb_to_hsvj tcolorsys.rgb_to_yiq(j&j&Chttps://docs.python.org/3/library/colorsys.html#colorsys.rgb_to_yiqj tcolorsys.yiq_to_rgb(j&j&Chttps://docs.python.org/3/library/colorsys.html#colorsys.yiq_to_rgbj tcompile(j&j&8https://docs.python.org/3/library/functions.html#compilej tcompileall.compile_dir(j&j&Hhttps://docs.python.org/3/library/compileall.html#compileall.compile_dirj tcompileall.compile_file(j&j&Ihttps://docs.python.org/3/library/compileall.html#compileall.compile_filej tcompileall.compile_path(j&j&Ihttps://docs.python.org/3/library/compileall.html#compileall.compile_pathj tconcurrent.futures.as_completed(j&j&Yhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completedj tconcurrent.futures.wait(j&j&Qhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.waitj tcontextlib.aclosing(j&j&Ehttps://docs.python.org/3/library/contextlib.html#contextlib.aclosingj tcontextlib.asynccontextmanager(j&j&Phttps://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanagerj tcontextlib.chdir(j&j&Bhttps://docs.python.org/3/library/contextlib.html#contextlib.chdirj tcontextlib.closing(j&j&Dhttps://docs.python.org/3/library/contextlib.html#contextlib.closingj tcontextlib.contextmanager(j&j&Khttps://docs.python.org/3/library/contextlib.html#contextlib.contextmanagerj tcontextlib.nullcontext(j&j&Hhttps://docs.python.org/3/library/contextlib.html#contextlib.nullcontextj tcontextlib.redirect_stderr(j&j&Lhttps://docs.python.org/3/library/contextlib.html#contextlib.redirect_stderrj tcontextlib.redirect_stdout(j&j&Lhttps://docs.python.org/3/library/contextlib.html#contextlib.redirect_stdoutj tcontextlib.suppress(j&j&Ehttps://docs.python.org/3/library/contextlib.html#contextlib.suppressj tcontextvars.copy_context(j&j&Khttps://docs.python.org/3/library/contextvars.html#contextvars.copy_contextj t copy.copy(j&j&5https://docs.python.org/3/library/copy.html#copy.copyj t copy.deepcopy(j&j&9https://docs.python.org/3/library/copy.html#copy.deepcopyj tcopyreg.constructor(j&j&Bhttps://docs.python.org/3/library/copyreg.html#copyreg.constructorj tcopyreg.pickle(j&j&=https://docs.python.org/3/library/copyreg.html#copyreg.picklej t crypt.crypt(j&j&8https://docs.python.org/3/library/crypt.html#crypt.cryptj t crypt.mksalt(j&j&9https://docs.python.org/3/library/crypt.html#crypt.mksaltj tcsv.field_size_limit(j&j&?https://docs.python.org/3/library/csv.html#csv.field_size_limitj tcsv.get_dialect(j&j&:https://docs.python.org/3/library/csv.html#csv.get_dialectj tcsv.list_dialects(j&j&https://docs.python.org/3/library/ctypes.html#ctypes.CFUNCTYPEj tctypes.DllCanUnloadNow(j&j&Dhttps://docs.python.org/3/library/ctypes.html#ctypes.DllCanUnloadNowj tctypes.DllGetClassObject(j&j&Fhttps://docs.python.org/3/library/ctypes.html#ctypes.DllGetClassObjectj tctypes.FormatError(j&j&@https://docs.python.org/3/library/ctypes.html#ctypes.FormatErrorj tctypes.GetLastError(j&j&Ahttps://docs.python.org/3/library/ctypes.html#ctypes.GetLastErrorj tctypes.POINTER(j&j&https://docs.python.org/3/library/ctypes.html#ctypes.addressofj tctypes.alignment(j&j&>https://docs.python.org/3/library/ctypes.html#ctypes.alignmentj t ctypes.byref(j&j&:https://docs.python.org/3/library/ctypes.html#ctypes.byrefj t ctypes.cast(j&j&9https://docs.python.org/3/library/ctypes.html#ctypes.castj tctypes.create_string_buffer(j&j&Ihttps://docs.python.org/3/library/ctypes.html#ctypes.create_string_bufferj tctypes.create_unicode_buffer(j&j&Jhttps://docs.python.org/3/library/ctypes.html#ctypes.create_unicode_bufferj tctypes.get_errno(j&j&>https://docs.python.org/3/library/ctypes.html#ctypes.get_errnoj tctypes.get_last_error(j&j&Chttps://docs.python.org/3/library/ctypes.html#ctypes.get_last_errorj tctypes.memmove(j&j&https://docs.python.org/3/library/ctypes.html#ctypes.set_errnoj tctypes.set_last_error(j&j&Chttps://docs.python.org/3/library/ctypes.html#ctypes.set_last_errorj t ctypes.sizeof(j&j&;https://docs.python.org/3/library/ctypes.html#ctypes.sizeofj tctypes.string_at(j&j&>https://docs.python.org/3/library/ctypes.html#ctypes.string_atj tctypes.util.find_library(j&j&Fhttps://docs.python.org/3/library/ctypes.html#ctypes.util.find_libraryj tctypes.util.find_msvcrt(j&j&Ehttps://docs.python.org/3/library/ctypes.html#ctypes.util.find_msvcrtj tctypes.wstring_at(j&j&?https://docs.python.org/3/library/ctypes.html#ctypes.wstring_atj tcurses.ascii.alt(j&j&Dhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.altj tcurses.ascii.ascii(j&j&Fhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.asciij tcurses.ascii.ctrl(j&j&Ehttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ctrlj tcurses.ascii.isalnum(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isalnumj tcurses.ascii.isalpha(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isalphaj tcurses.ascii.isascii(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isasciij tcurses.ascii.isblank(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isblankj tcurses.ascii.iscntrl(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.iscntrlj tcurses.ascii.isctrl(j&j&Ghttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isctrlj tcurses.ascii.isdigit(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isdigitj tcurses.ascii.isgraph(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isgraphj tcurses.ascii.islower(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.islowerj tcurses.ascii.ismeta(j&j&Ghttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ismetaj tcurses.ascii.isprint(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isprintj tcurses.ascii.ispunct(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.ispunctj tcurses.ascii.isspace(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isspacej tcurses.ascii.isupper(j&j&Hhttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isupperj tcurses.ascii.isxdigit(j&j&Ihttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.isxdigitj tcurses.ascii.unctrl(j&j&Ghttps://docs.python.org/3/library/curses.ascii.html#curses.ascii.unctrlj tcurses.baudrate(j&j&=https://docs.python.org/3/library/curses.html#curses.baudratej t curses.beep(j&j&9https://docs.python.org/3/library/curses.html#curses.beepj tcurses.can_change_color(j&j&Ehttps://docs.python.org/3/library/curses.html#curses.can_change_colorj t curses.cbreak(j&j&;https://docs.python.org/3/library/curses.html#curses.cbreakj tcurses.color_content(j&j&Bhttps://docs.python.org/3/library/curses.html#curses.color_contentj tcurses.color_pair(j&j&?https://docs.python.org/3/library/curses.html#curses.color_pairj tcurses.curs_set(j&j&=https://docs.python.org/3/library/curses.html#curses.curs_setj tcurses.def_prog_mode(j&j&Bhttps://docs.python.org/3/library/curses.html#curses.def_prog_modej tcurses.def_shell_mode(j&j&Chttps://docs.python.org/3/library/curses.html#curses.def_shell_modej tcurses.delay_output(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.delay_outputj tcurses.doupdate(j&j&=https://docs.python.org/3/library/curses.html#curses.doupdatej t curses.echo(j&j&9https://docs.python.org/3/library/curses.html#curses.echoj t curses.endwin(j&j&;https://docs.python.org/3/library/curses.html#curses.endwinj tcurses.erasechar(j&j&>https://docs.python.org/3/library/curses.html#curses.erasecharj t curses.filter(j&j&;https://docs.python.org/3/library/curses.html#curses.filterj t curses.flash(j&j&:https://docs.python.org/3/library/curses.html#curses.flashj tcurses.flushinp(j&j&=https://docs.python.org/3/library/curses.html#curses.flushinpj tcurses.get_escdelay(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.get_escdelayj tcurses.get_tabsize(j&j&@https://docs.python.org/3/library/curses.html#curses.get_tabsizej tcurses.getmouse(j&j&=https://docs.python.org/3/library/curses.html#curses.getmousej t curses.getsyx(j&j&;https://docs.python.org/3/library/curses.html#curses.getsyxj t curses.getwin(j&j&;https://docs.python.org/3/library/curses.html#curses.getwinj tcurses.halfdelay(j&j&>https://docs.python.org/3/library/curses.html#curses.halfdelayj tcurses.has_colors(j&j&?https://docs.python.org/3/library/curses.html#curses.has_colorsj t!curses.has_extended_color_support(j&j&Ohttps://docs.python.org/3/library/curses.html#curses.has_extended_color_supportj t curses.has_ic(j&j&;https://docs.python.org/3/library/curses.html#curses.has_icj t curses.has_il(j&j&;https://docs.python.org/3/library/curses.html#curses.has_ilj tcurses.has_key(j&j&https://docs.python.org/3/library/curses.html#curses.init_pairj tcurses.initscr(j&j&https://docs.python.org/3/library/curses.html#curses.mousemaskj t curses.napms(j&j&:https://docs.python.org/3/library/curses.html#curses.napmsj t curses.newpad(j&j&;https://docs.python.org/3/library/curses.html#curses.newpadj t curses.newwin(j&j&;https://docs.python.org/3/library/curses.html#curses.newwinj t curses.nl(j&j&7https://docs.python.org/3/library/curses.html#curses.nlj tcurses.nocbreak(j&j&=https://docs.python.org/3/library/curses.html#curses.nocbreakj t curses.noecho(j&j&;https://docs.python.org/3/library/curses.html#curses.noechoj t curses.nonl(j&j&9https://docs.python.org/3/library/curses.html#curses.nonlj tcurses.noqiflush(j&j&>https://docs.python.org/3/library/curses.html#curses.noqiflushj t curses.noraw(j&j&:https://docs.python.org/3/library/curses.html#curses.norawj tcurses.pair_content(j&j&Ahttps://docs.python.org/3/library/curses.html#curses.pair_contentj tcurses.pair_number(j&j&@https://docs.python.org/3/library/curses.html#curses.pair_numberj tcurses.panel.bottom_panel(j&j&Mhttps://docs.python.org/3/library/curses.panel.html#curses.panel.bottom_panelj tcurses.panel.new_panel(j&j&Jhttps://docs.python.org/3/library/curses.panel.html#curses.panel.new_panelj tcurses.panel.top_panel(j&j&Jhttps://docs.python.org/3/library/curses.panel.html#curses.panel.top_panelj tcurses.panel.update_panels(j&j&Nhttps://docs.python.org/3/library/curses.panel.html#curses.panel.update_panelsj t curses.putp(j&j&9https://docs.python.org/3/library/curses.html#curses.putpj tcurses.qiflush(j&j&https://docs.python.org/3/library/curses.html#curses.setuptermj tcurses.start_color(j&j&@https://docs.python.org/3/library/curses.html#curses.start_colorj tcurses.termattrs(j&j&>https://docs.python.org/3/library/curses.html#curses.termattrsj tcurses.termname(j&j&=https://docs.python.org/3/library/curses.html#curses.termnamej tcurses.textpad.rectangle(j&j&Fhttps://docs.python.org/3/library/curses.html#curses.textpad.rectanglej tcurses.tigetflag(j&j&>https://docs.python.org/3/library/curses.html#curses.tigetflagj tcurses.tigetnum(j&j&=https://docs.python.org/3/library/curses.html#curses.tigetnumj tcurses.tigetstr(j&j&=https://docs.python.org/3/library/curses.html#curses.tigetstrj t curses.tparm(j&j&:https://docs.python.org/3/library/curses.html#curses.tparmj tcurses.typeahead(j&j&>https://docs.python.org/3/library/curses.html#curses.typeaheadj t curses.unctrl(j&j&;https://docs.python.org/3/library/curses.html#curses.unctrlj tcurses.unget_wch(j&j&>https://docs.python.org/3/library/curses.html#curses.unget_wchj tcurses.ungetch(j&j&https://docs.python.org/3/library/difflib.html#difflib.restorej tdifflib.unified_diff(j&j&Chttps://docs.python.org/3/library/difflib.html#difflib.unified_diffj tdir(j&j&4https://docs.python.org/3/library/functions.html#dirj t dis.code_info(j&j&8https://docs.python.org/3/library/dis.html#dis.code_infoj tdis.dis(j&j&2https://docs.python.org/3/library/dis.html#dis.disj tdis.disassemble(j&j&:https://docs.python.org/3/library/dis.html#dis.disassemblej t dis.disco(j&j&4https://docs.python.org/3/library/dis.html#dis.discoj t dis.distb(j&j&4https://docs.python.org/3/library/dis.html#dis.distbj tdis.findlabels(j&j&9https://docs.python.org/3/library/dis.html#dis.findlabelsj tdis.findlinestarts(j&j&=https://docs.python.org/3/library/dis.html#dis.findlinestartsj tdis.get_instructions(j&j&?https://docs.python.org/3/library/dis.html#dis.get_instructionsj t dis.show_code(j&j&8https://docs.python.org/3/library/dis.html#dis.show_codej tdis.stack_effect(j&j&;https://docs.python.org/3/library/dis.html#dis.stack_effectj tdivmod(j&j&7https://docs.python.org/3/library/functions.html#divmodj tdoctest.DocFileSuite(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest.DocFileSuitej tdoctest.DocTestSuite(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest.DocTestSuitej t doctest.debug(j&j&https://docs.python.org/3/library/doctest.html#doctest.testmodj tdoctest.testsource(j&j&Ahttps://docs.python.org/3/library/doctest.html#doctest.testsourcej temail.charset.add_alias(j&j&Lhttps://docs.python.org/3/library/email.charset.html#email.charset.add_aliasj temail.charset.add_charset(j&j&Nhttps://docs.python.org/3/library/email.charset.html#email.charset.add_charsetj temail.charset.add_codec(j&j&Lhttps://docs.python.org/3/library/email.charset.html#email.charset.add_codecj temail.encoders.encode_7or8bit(j&j&Shttps://docs.python.org/3/library/email.encoders.html#email.encoders.encode_7or8bitj temail.encoders.encode_base64(j&j&Rhttps://docs.python.org/3/library/email.encoders.html#email.encoders.encode_base64j temail.encoders.encode_noop(j&j&Phttps://docs.python.org/3/library/email.encoders.html#email.encoders.encode_noopj temail.encoders.encode_quopri(j&j&Rhttps://docs.python.org/3/library/email.encoders.html#email.encoders.encode_quoprij temail.header.decode_header(j&j&Nhttps://docs.python.org/3/library/email.header.html#email.header.decode_headerj temail.header.make_header(j&j&Lhttps://docs.python.org/3/library/email.header.html#email.header.make_headerj temail.iterators._structure(j&j&Qhttps://docs.python.org/3/library/email.iterators.html#email.iterators._structurej t"email.iterators.body_line_iterator(j&j&Yhttps://docs.python.org/3/library/email.iterators.html#email.iterators.body_line_iteratorj t&email.iterators.typed_subpart_iterator(j&j&]https://docs.python.org/3/library/email.iterators.html#email.iterators.typed_subpart_iteratorj temail.message_from_binary_file(j&j&Rhttps://docs.python.org/3/library/email.parser.html#email.message_from_binary_filej temail.message_from_bytes(j&j&Lhttps://docs.python.org/3/library/email.parser.html#email.message_from_bytesj temail.message_from_file(j&j&Khttps://docs.python.org/3/library/email.parser.html#email.message_from_filej temail.message_from_string(j&j&Mhttps://docs.python.org/3/library/email.parser.html#email.message_from_stringj t"email.utils.collapse_rfc2231_value(j&j&Uhttps://docs.python.org/3/library/email.utils.html#email.utils.collapse_rfc2231_valuej temail.utils.decode_params(j&j&Lhttps://docs.python.org/3/library/email.utils.html#email.utils.decode_paramsj temail.utils.decode_rfc2231(j&j&Mhttps://docs.python.org/3/library/email.utils.html#email.utils.decode_rfc2231j temail.utils.encode_rfc2231(j&j&Mhttps://docs.python.org/3/library/email.utils.html#email.utils.encode_rfc2231j temail.utils.format_datetime(j&j&Nhttps://docs.python.org/3/library/email.utils.html#email.utils.format_datetimej temail.utils.formataddr(j&j&Ihttps://docs.python.org/3/library/email.utils.html#email.utils.formataddrj temail.utils.formatdate(j&j&Ihttps://docs.python.org/3/library/email.utils.html#email.utils.formatdatej temail.utils.getaddresses(j&j&Khttps://docs.python.org/3/library/email.utils.html#email.utils.getaddressesj temail.utils.localtime(j&j&Hhttps://docs.python.org/3/library/email.utils.html#email.utils.localtimej temail.utils.make_msgid(j&j&Ihttps://docs.python.org/3/library/email.utils.html#email.utils.make_msgidj temail.utils.mktime_tz(j&j&Hhttps://docs.python.org/3/library/email.utils.html#email.utils.mktime_tzj temail.utils.parseaddr(j&j&Hhttps://docs.python.org/3/library/email.utils.html#email.utils.parseaddrj temail.utils.parsedate(j&j&Hhttps://docs.python.org/3/library/email.utils.html#email.utils.parsedatej t!email.utils.parsedate_to_datetime(j&j&Thttps://docs.python.org/3/library/email.utils.html#email.utils.parsedate_to_datetimej temail.utils.parsedate_tz(j&j&Khttps://docs.python.org/3/library/email.utils.html#email.utils.parsedate_tzj temail.utils.quote(j&j&Dhttps://docs.python.org/3/library/email.utils.html#email.utils.quotej temail.utils.unquote(j&j&Fhttps://docs.python.org/3/library/email.utils.html#email.utils.unquotej tencodings.idna.ToASCII(j&j&Dhttps://docs.python.org/3/library/codecs.html#encodings.idna.ToASCIIj tencodings.idna.ToUnicode(j&j&Fhttps://docs.python.org/3/library/codecs.html#encodings.idna.ToUnicodej tencodings.idna.nameprep(j&j&Ehttps://docs.python.org/3/library/codecs.html#encodings.idna.nameprepj tensurepip.bootstrap(j&j&Dhttps://docs.python.org/3/library/ensurepip.html#ensurepip.bootstrapj tensurepip.version(j&j&Bhttps://docs.python.org/3/library/ensurepip.html#ensurepip.versionj tenum.global_enum(j&j&https://docs.python.org/3/library/fnmatch.html#fnmatch.fnmatchj tfnmatch.fnmatchcase(j&j&Bhttps://docs.python.org/3/library/fnmatch.html#fnmatch.fnmatchcasej tfnmatch.translate(j&j&@https://docs.python.org/3/library/fnmatch.html#fnmatch.translatej tformat(j&j&7https://docs.python.org/3/library/functions.html#formatj tfunctools.cache(j&j&@https://docs.python.org/3/library/functools.html#functools.cachej tfunctools.cached_property(j&j&Jhttps://docs.python.org/3/library/functools.html#functools.cached_propertyj tfunctools.cmp_to_key(j&j&Ehttps://docs.python.org/3/library/functools.html#functools.cmp_to_keyj tfunctools.lru_cache(j&j&Dhttps://docs.python.org/3/library/functools.html#functools.lru_cachej tfunctools.partial(j&j&Bhttps://docs.python.org/3/library/functools.html#functools.partialj tfunctools.reduce(j&j&Ahttps://docs.python.org/3/library/functools.html#functools.reducej tfunctools.singledispatch(j&j&Ihttps://docs.python.org/3/library/functools.html#functools.singledispatchj tfunctools.total_ordering(j&j&Ihttps://docs.python.org/3/library/functools.html#functools.total_orderingj tfunctools.update_wrapper(j&j&Ihttps://docs.python.org/3/library/functools.html#functools.update_wrapperj tfunctools.wraps(j&j&@https://docs.python.org/3/library/functools.html#functools.wrapsj t gc.collect(j&j&4https://docs.python.org/3/library/gc.html#gc.collectj t gc.disable(j&j&4https://docs.python.org/3/library/gc.html#gc.disablej t gc.enable(j&j&3https://docs.python.org/3/library/gc.html#gc.enablej t gc.freeze(j&j&3https://docs.python.org/3/library/gc.html#gc.freezej t gc.get_count(j&j&6https://docs.python.org/3/library/gc.html#gc.get_countj t gc.get_debug(j&j&6https://docs.python.org/3/library/gc.html#gc.get_debugj tgc.get_freeze_count(j&j&=https://docs.python.org/3/library/gc.html#gc.get_freeze_countj tgc.get_objects(j&j&8https://docs.python.org/3/library/gc.html#gc.get_objectsj tgc.get_referents(j&j&:https://docs.python.org/3/library/gc.html#gc.get_referentsj tgc.get_referrers(j&j&:https://docs.python.org/3/library/gc.html#gc.get_referrersj t gc.get_stats(j&j&6https://docs.python.org/3/library/gc.html#gc.get_statsj tgc.get_threshold(j&j&:https://docs.python.org/3/library/gc.html#gc.get_thresholdj tgc.is_finalized(j&j&9https://docs.python.org/3/library/gc.html#gc.is_finalizedj t gc.is_tracked(j&j&7https://docs.python.org/3/library/gc.html#gc.is_trackedj t gc.isenabled(j&j&6https://docs.python.org/3/library/gc.html#gc.isenabledj t gc.set_debug(j&j&6https://docs.python.org/3/library/gc.html#gc.set_debugj tgc.set_threshold(j&j&:https://docs.python.org/3/library/gc.html#gc.set_thresholdj t gc.unfreeze(j&j&5https://docs.python.org/3/library/gc.html#gc.unfreezej tgetattr(j&j&8https://docs.python.org/3/library/functions.html#getattrj t getopt.getopt(j&j&;https://docs.python.org/3/library/getopt.html#getopt.getoptj tgetopt.gnu_getopt(j&j&?https://docs.python.org/3/library/getopt.html#getopt.gnu_getoptj tgetpass.getpass(j&j&>https://docs.python.org/3/library/getpass.html#getpass.getpassj tgetpass.getuser(j&j&>https://docs.python.org/3/library/getpass.html#getpass.getuserj tgettext.bindtextdomain(j&j&Ehttps://docs.python.org/3/library/gettext.html#gettext.bindtextdomainj tgettext.dgettext(j&j&?https://docs.python.org/3/library/gettext.html#gettext.dgettextj tgettext.dngettext(j&j&@https://docs.python.org/3/library/gettext.html#gettext.dngettextj tgettext.dnpgettext(j&j&Ahttps://docs.python.org/3/library/gettext.html#gettext.dnpgettextj tgettext.dpgettext(j&j&@https://docs.python.org/3/library/gettext.html#gettext.dpgettextj t gettext.find(j&j&;https://docs.python.org/3/library/gettext.html#gettext.findj tgettext.gettext(j&j&>https://docs.python.org/3/library/gettext.html#gettext.gettextj tgettext.install(j&j&>https://docs.python.org/3/library/gettext.html#gettext.installj tgettext.ngettext(j&j&?https://docs.python.org/3/library/gettext.html#gettext.ngettextj tgettext.npgettext(j&j&@https://docs.python.org/3/library/gettext.html#gettext.npgettextj tgettext.pgettext(j&j&?https://docs.python.org/3/library/gettext.html#gettext.pgettextj tgettext.textdomain(j&j&Ahttps://docs.python.org/3/library/gettext.html#gettext.textdomainj tgettext.translation(j&j&Bhttps://docs.python.org/3/library/gettext.html#gettext.translationj t glob.escape(j&j&7https://docs.python.org/3/library/glob.html#glob.escapej t glob.glob(j&j&5https://docs.python.org/3/library/glob.html#glob.globj t glob.iglob(j&j&6https://docs.python.org/3/library/glob.html#glob.iglobj tglobals(j&j&8https://docs.python.org/3/library/functions.html#globalsj t grp.getgrall(j&j&7https://docs.python.org/3/library/grp.html#grp.getgrallj t grp.getgrgid(j&j&7https://docs.python.org/3/library/grp.html#grp.getgrgidj t grp.getgrnam(j&j&7https://docs.python.org/3/library/grp.html#grp.getgrnamj t gzip.compress(j&j&9https://docs.python.org/3/library/gzip.html#gzip.compressj tgzip.decompress(j&j&;https://docs.python.org/3/library/gzip.html#gzip.decompressj t gzip.open(j&j&5https://docs.python.org/3/library/gzip.html#gzip.openj thasattr(j&j&8https://docs.python.org/3/library/functions.html#hasattrj thash(j&j&5https://docs.python.org/3/library/functions.html#hashj thashlib.blake2b(j&j&>https://docs.python.org/3/library/hashlib.html#hashlib.blake2bj thashlib.blake2s(j&j&>https://docs.python.org/3/library/hashlib.html#hashlib.blake2sj thashlib.file_digest(j&j&Bhttps://docs.python.org/3/library/hashlib.html#hashlib.file_digestj t hashlib.md5(j&j&:https://docs.python.org/3/library/hashlib.html#hashlib.md5j t hashlib.new(j&j&:https://docs.python.org/3/library/hashlib.html#hashlib.newj thashlib.pbkdf2_hmac(j&j&Bhttps://docs.python.org/3/library/hashlib.html#hashlib.pbkdf2_hmacj thashlib.scrypt(j&j&=https://docs.python.org/3/library/hashlib.html#hashlib.scryptj t hashlib.sha1(j&j&;https://docs.python.org/3/library/hashlib.html#hashlib.sha1j thashlib.sha224(j&j&=https://docs.python.org/3/library/hashlib.html#hashlib.sha224j thashlib.sha256(j&j&=https://docs.python.org/3/library/hashlib.html#hashlib.sha256j thashlib.sha384(j&j&=https://docs.python.org/3/library/hashlib.html#hashlib.sha384j thashlib.sha3_224(j&j&?https://docs.python.org/3/library/hashlib.html#hashlib.sha3_224j thashlib.sha3_256(j&j&?https://docs.python.org/3/library/hashlib.html#hashlib.sha3_256j thashlib.sha3_384(j&j&?https://docs.python.org/3/library/hashlib.html#hashlib.sha3_384j thashlib.sha3_512(j&j&?https://docs.python.org/3/library/hashlib.html#hashlib.sha3_512j thashlib.sha512(j&j&=https://docs.python.org/3/library/hashlib.html#hashlib.sha512j thashlib.shake_128(j&j&@https://docs.python.org/3/library/hashlib.html#hashlib.shake_128j thashlib.shake_256(j&j&@https://docs.python.org/3/library/hashlib.html#hashlib.shake_256j t heapq.heapify(j&j&:https://docs.python.org/3/library/heapq.html#heapq.heapifyj t heapq.heappop(j&j&:https://docs.python.org/3/library/heapq.html#heapq.heappopj theapq.heappush(j&j&;https://docs.python.org/3/library/heapq.html#heapq.heappushj theapq.heappushpop(j&j&>https://docs.python.org/3/library/heapq.html#heapq.heappushpopj theapq.heapreplace(j&j&>https://docs.python.org/3/library/heapq.html#heapq.heapreplacej t heapq.merge(j&j&8https://docs.python.org/3/library/heapq.html#heapq.mergej theapq.nlargest(j&j&;https://docs.python.org/3/library/heapq.html#heapq.nlargestj theapq.nsmallest(j&j&https://docs.python.org/3/library/inspect.html#inspect.getfilej tinspect.getframeinfo(j&j&Chttps://docs.python.org/3/library/inspect.html#inspect.getframeinfoj tinspect.getfullargspec(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.getfullargspecj tinspect.getgeneratorlocals(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.getgeneratorlocalsj tinspect.getgeneratorstate(j&j&Hhttps://docs.python.org/3/library/inspect.html#inspect.getgeneratorstatej tinspect.getinnerframes(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.getinnerframesj tinspect.getmembers(j&j&Ahttps://docs.python.org/3/library/inspect.html#inspect.getmembersj tinspect.getmembers_static(j&j&Hhttps://docs.python.org/3/library/inspect.html#inspect.getmembers_staticj tinspect.getmodule(j&j&@https://docs.python.org/3/library/inspect.html#inspect.getmodulej tinspect.getmodulename(j&j&Dhttps://docs.python.org/3/library/inspect.html#inspect.getmodulenamej tinspect.getmro(j&j&=https://docs.python.org/3/library/inspect.html#inspect.getmroj tinspect.getouterframes(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.getouterframesj tinspect.getsource(j&j&@https://docs.python.org/3/library/inspect.html#inspect.getsourcej tinspect.getsourcefile(j&j&Dhttps://docs.python.org/3/library/inspect.html#inspect.getsourcefilej tinspect.getsourcelines(j&j&Ehttps://docs.python.org/3/library/inspect.html#inspect.getsourcelinesj tinspect.isabstract(j&j&Ahttps://docs.python.org/3/library/inspect.html#inspect.isabstractj tinspect.isasyncgen(j&j&Ahttps://docs.python.org/3/library/inspect.html#inspect.isasyncgenj tinspect.isasyncgenfunction(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.isasyncgenfunctionj tinspect.isawaitable(j&j&Bhttps://docs.python.org/3/library/inspect.html#inspect.isawaitablej tinspect.isbuiltin(j&j&@https://docs.python.org/3/library/inspect.html#inspect.isbuiltinj tinspect.isclass(j&j&>https://docs.python.org/3/library/inspect.html#inspect.isclassj tinspect.iscode(j&j&=https://docs.python.org/3/library/inspect.html#inspect.iscodej tinspect.iscoroutine(j&j&Bhttps://docs.python.org/3/library/inspect.html#inspect.iscoroutinej tinspect.iscoroutinefunction(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.iscoroutinefunctionj tinspect.isdatadescriptor(j&j&Ghttps://docs.python.org/3/library/inspect.html#inspect.isdatadescriptorj tinspect.isframe(j&j&>https://docs.python.org/3/library/inspect.html#inspect.isframej tinspect.isfunction(j&j&Ahttps://docs.python.org/3/library/inspect.html#inspect.isfunctionj tinspect.isgenerator(j&j&Bhttps://docs.python.org/3/library/inspect.html#inspect.isgeneratorj tinspect.isgeneratorfunction(j&j&Jhttps://docs.python.org/3/library/inspect.html#inspect.isgeneratorfunctionj tinspect.isgetsetdescriptor(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.isgetsetdescriptorj tinspect.ismemberdescriptor(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.ismemberdescriptorj tinspect.ismethod(j&j&?https://docs.python.org/3/library/inspect.html#inspect.ismethodj tinspect.ismethoddescriptor(j&j&Ihttps://docs.python.org/3/library/inspect.html#inspect.ismethoddescriptorj tinspect.ismethodwrapper(j&j&Fhttps://docs.python.org/3/library/inspect.html#inspect.ismethodwrapperj tinspect.ismodule(j&j&?https://docs.python.org/3/library/inspect.html#inspect.ismodulej tinspect.isroutine(j&j&@https://docs.python.org/3/library/inspect.html#inspect.isroutinej tinspect.istraceback(j&j&Bhttps://docs.python.org/3/library/inspect.html#inspect.istracebackj tinspect.markcoroutinefunction(j&j&Lhttps://docs.python.org/3/library/inspect.html#inspect.markcoroutinefunctionj tinspect.signature(j&j&@https://docs.python.org/3/library/inspect.html#inspect.signaturej t inspect.stack(j&j&https://docs.python.org/3/library/itertools.html#itertools.teej titertools.zip_longest(j&j&Fhttps://docs.python.org/3/library/itertools.html#itertools.zip_longestj t json.dump(j&j&5https://docs.python.org/3/library/json.html#json.dumpj t json.dumps(j&j&6https://docs.python.org/3/library/json.html#json.dumpsj t json.load(j&j&5https://docs.python.org/3/library/json.html#json.loadj t json.loads(j&j&6https://docs.python.org/3/library/json.html#json.loadsj tkeyword.iskeyword(j&j&@https://docs.python.org/3/library/keyword.html#keyword.iskeywordj tkeyword.issoftkeyword(j&j&Dhttps://docs.python.org/3/library/keyword.html#keyword.issoftkeywordj tlen(j&j&4https://docs.python.org/3/library/functions.html#lenj tlinecache.checkcache(j&j&Ehttps://docs.python.org/3/library/linecache.html#linecache.checkcachej tlinecache.clearcache(j&j&Ehttps://docs.python.org/3/library/linecache.html#linecache.clearcachej tlinecache.getline(j&j&Bhttps://docs.python.org/3/library/linecache.html#linecache.getlinej tlinecache.lazycache(j&j&Dhttps://docs.python.org/3/library/linecache.html#linecache.lazycachej t locale.atof(j&j&9https://docs.python.org/3/library/locale.html#locale.atofj t locale.atoi(j&j&9https://docs.python.org/3/library/locale.html#locale.atoij tlocale.bind_textdomain_codeset(j&j&Lhttps://docs.python.org/3/library/locale.html#locale.bind_textdomain_codesetj tlocale.bindtextdomain(j&j&Chttps://docs.python.org/3/library/locale.html#locale.bindtextdomainj tlocale.currency(j&j&=https://docs.python.org/3/library/locale.html#locale.currencyj tlocale.dcgettext(j&j&>https://docs.python.org/3/library/locale.html#locale.dcgettextj tlocale.delocalize(j&j&?https://docs.python.org/3/library/locale.html#locale.delocalizej tlocale.dgettext(j&j&=https://docs.python.org/3/library/locale.html#locale.dgettextj tlocale.format_string(j&j&Bhttps://docs.python.org/3/library/locale.html#locale.format_stringj tlocale.getdefaultlocale(j&j&Ehttps://docs.python.org/3/library/locale.html#locale.getdefaultlocalej tlocale.getencoding(j&j&@https://docs.python.org/3/library/locale.html#locale.getencodingj tlocale.getlocale(j&j&>https://docs.python.org/3/library/locale.html#locale.getlocalej tlocale.getpreferredencoding(j&j&Ihttps://docs.python.org/3/library/locale.html#locale.getpreferredencodingj tlocale.gettext(j&j&https://docs.python.org/3/library/locale.html#locale.normalizej tlocale.resetlocale(j&j&@https://docs.python.org/3/library/locale.html#locale.resetlocalej tlocale.setlocale(j&j&>https://docs.python.org/3/library/locale.html#locale.setlocalej t locale.str(j&j&8https://docs.python.org/3/library/locale.html#locale.strj tlocale.strcoll(j&j&https://docs.python.org/3/library/logging.html#logging.disablej t logging.error(j&j&https://docs.python.org/3/library/logging.html#logging.warningj t lzma.compress(j&j&9https://docs.python.org/3/library/lzma.html#lzma.compressj tlzma.decompress(j&j&;https://docs.python.org/3/library/lzma.html#lzma.decompressj tlzma.is_check_supported(j&j&Chttps://docs.python.org/3/library/lzma.html#lzma.is_check_supportedj t lzma.open(j&j&5https://docs.python.org/3/library/lzma.html#lzma.openj tmailcap.findmatch(j&j&@https://docs.python.org/3/library/mailcap.html#mailcap.findmatchj tmailcap.getcaps(j&j&>https://docs.python.org/3/library/mailcap.html#mailcap.getcapsj tmap(j&j&4https://docs.python.org/3/library/functions.html#mapj t marshal.dump(j&j&;https://docs.python.org/3/library/marshal.html#marshal.dumpj t marshal.dumps(j&j&https://docs.python.org/3/library/msilib.html#msilib.FCICreatej tmsilib.OpenDatabase(j&j&Ahttps://docs.python.org/3/library/msilib.html#msilib.OpenDatabasej tmsilib.UuidCreate(j&j&?https://docs.python.org/3/library/msilib.html#msilib.UuidCreatej tmsilib.add_data(j&j&=https://docs.python.org/3/library/msilib.html#msilib.add_dataj tmsilib.add_stream(j&j&?https://docs.python.org/3/library/msilib.html#msilib.add_streamj tmsilib.add_tables(j&j&?https://docs.python.org/3/library/msilib.html#msilib.add_tablesj tmsilib.gen_uuid(j&j&=https://docs.python.org/3/library/msilib.html#msilib.gen_uuidj tmsilib.init_database(j&j&Bhttps://docs.python.org/3/library/msilib.html#msilib.init_databasej tmsvcrt.get_osfhandle(j&j&Bhttps://docs.python.org/3/library/msvcrt.html#msvcrt.get_osfhandlej t msvcrt.getch(j&j&:https://docs.python.org/3/library/msvcrt.html#msvcrt.getchj t msvcrt.getche(j&j&;https://docs.python.org/3/library/msvcrt.html#msvcrt.getchej t msvcrt.getwch(j&j&;https://docs.python.org/3/library/msvcrt.html#msvcrt.getwchj tmsvcrt.getwche(j&j&https://docs.python.org/3/library/operator.html#operator.indexj toperator.indexOf(j&j&@https://docs.python.org/3/library/operator.html#operator.indexOfj t operator.inv(j&j&https://docs.python.org/3/library/operator.html#operator.truthj t operator.xor(j&j&https://docs.python.org/3/library/os.html#os.add_dll_directoryj tos.chdir(j&j&2https://docs.python.org/3/library/os.html#os.chdirj t os.chflags(j&j&4https://docs.python.org/3/library/os.html#os.chflagsj tos.chmod(j&j&2https://docs.python.org/3/library/os.html#os.chmodj tos.chown(j&j&2https://docs.python.org/3/library/os.html#os.chownj t os.chroot(j&j&3https://docs.python.org/3/library/os.html#os.chrootj tos.close(j&j&2https://docs.python.org/3/library/os.html#os.closej t os.closerange(j&j&7https://docs.python.org/3/library/os.html#os.closerangej t os.confstr(j&j&4https://docs.python.org/3/library/os.html#os.confstrj tos.copy_file_range(j&j&https://docs.python.org/3/library/os.html#os.get_terminal_sizej t os.getcwd(j&j&3https://docs.python.org/3/library/os.html#os.getcwdj t os.getcwdb(j&j&4https://docs.python.org/3/library/os.html#os.getcwdbj t os.getegid(j&j&4https://docs.python.org/3/library/os.html#os.getegidj t os.getenv(j&j&3https://docs.python.org/3/library/os.html#os.getenvj t os.getenvb(j&j&4https://docs.python.org/3/library/os.html#os.getenvbj t os.geteuid(j&j&4https://docs.python.org/3/library/os.html#os.geteuidj t os.getgid(j&j&3https://docs.python.org/3/library/os.html#os.getgidj tos.getgrouplist(j&j&9https://docs.python.org/3/library/os.html#os.getgrouplistj t os.getgroups(j&j&6https://docs.python.org/3/library/os.html#os.getgroupsj t os.getloadavg(j&j&7https://docs.python.org/3/library/os.html#os.getloadavgj t os.getlogin(j&j&5https://docs.python.org/3/library/os.html#os.getloginj t os.getpgid(j&j&4https://docs.python.org/3/library/os.html#os.getpgidj t os.getpgrp(j&j&4https://docs.python.org/3/library/os.html#os.getpgrpj t os.getpid(j&j&3https://docs.python.org/3/library/os.html#os.getpidj t os.getppid(j&j&4https://docs.python.org/3/library/os.html#os.getppidj tos.getpriority(j&j&8https://docs.python.org/3/library/os.html#os.getpriorityj t os.getrandom(j&j&6https://docs.python.org/3/library/os.html#os.getrandomj t os.getresgid(j&j&6https://docs.python.org/3/library/os.html#os.getresgidj t os.getresuid(j&j&6https://docs.python.org/3/library/os.html#os.getresuidj t os.getsid(j&j&3https://docs.python.org/3/library/os.html#os.getsidj t os.getuid(j&j&3https://docs.python.org/3/library/os.html#os.getuidj t os.getxattr(j&j&5https://docs.python.org/3/library/os.html#os.getxattrj t os.initgroups(j&j&7https://docs.python.org/3/library/os.html#os.initgroupsj t os.isatty(j&j&3https://docs.python.org/3/library/os.html#os.isattyj tos.kill(j&j&1https://docs.python.org/3/library/os.html#os.killj t os.killpg(j&j&3https://docs.python.org/3/library/os.html#os.killpgj t os.lchflags(j&j&5https://docs.python.org/3/library/os.html#os.lchflagsj t os.lchmod(j&j&3https://docs.python.org/3/library/os.html#os.lchmodj t os.lchown(j&j&3https://docs.python.org/3/library/os.html#os.lchownj tos.link(j&j&1https://docs.python.org/3/library/os.html#os.linkj t os.listdir(j&j&4https://docs.python.org/3/library/os.html#os.listdirj t os.listdrives(j&j&7https://docs.python.org/3/library/os.html#os.listdrivesj t os.listmounts(j&j&7https://docs.python.org/3/library/os.html#os.listmountsj tos.listvolumes(j&j&8https://docs.python.org/3/library/os.html#os.listvolumesj t os.listxattr(j&j&6https://docs.python.org/3/library/os.html#os.listxattrj tos.lockf(j&j&2https://docs.python.org/3/library/os.html#os.lockfj t os.login_tty(j&j&6https://docs.python.org/3/library/os.html#os.login_ttyj tos.lseek(j&j&2https://docs.python.org/3/library/os.html#os.lseekj tos.lstat(j&j&2https://docs.python.org/3/library/os.html#os.lstatj tos.major(j&j&2https://docs.python.org/3/library/os.html#os.majorj t os.makedev(j&j&4https://docs.python.org/3/library/os.html#os.makedevj t os.makedirs(j&j&5https://docs.python.org/3/library/os.html#os.makedirsj tos.memfd_create(j&j&9https://docs.python.org/3/library/os.html#os.memfd_createj tos.minor(j&j&2https://docs.python.org/3/library/os.html#os.minorj tos.mkdir(j&j&2https://docs.python.org/3/library/os.html#os.mkdirj t os.mkfifo(j&j&3https://docs.python.org/3/library/os.html#os.mkfifoj tos.mknod(j&j&2https://docs.python.org/3/library/os.html#os.mknodj tos.nice(j&j&1https://docs.python.org/3/library/os.html#os.nicej tos.open(j&j&1https://docs.python.org/3/library/os.html#os.openj t os.openpty(j&j&4https://docs.python.org/3/library/os.html#os.openptyj tos.path.abspath(j&j&>https://docs.python.org/3/library/os.path.html#os.path.abspathj tos.path.basename(j&j&?https://docs.python.org/3/library/os.path.html#os.path.basenamej tos.path.commonpath(j&j&Ahttps://docs.python.org/3/library/os.path.html#os.path.commonpathj tos.path.commonprefix(j&j&Chttps://docs.python.org/3/library/os.path.html#os.path.commonprefixj tos.path.dirname(j&j&>https://docs.python.org/3/library/os.path.html#os.path.dirnamej tos.path.exists(j&j&=https://docs.python.org/3/library/os.path.html#os.path.existsj tos.path.expanduser(j&j&Ahttps://docs.python.org/3/library/os.path.html#os.path.expanduserj tos.path.expandvars(j&j&Ahttps://docs.python.org/3/library/os.path.html#os.path.expandvarsj tos.path.getatime(j&j&?https://docs.python.org/3/library/os.path.html#os.path.getatimej tos.path.getctime(j&j&?https://docs.python.org/3/library/os.path.html#os.path.getctimej tos.path.getmtime(j&j&?https://docs.python.org/3/library/os.path.html#os.path.getmtimej tos.path.getsize(j&j&>https://docs.python.org/3/library/os.path.html#os.path.getsizej t os.path.isabs(j&j&https://docs.python.org/3/library/os.path.html#os.path.ismountj t os.path.join(j&j&;https://docs.python.org/3/library/os.path.html#os.path.joinj tos.path.lexists(j&j&>https://docs.python.org/3/library/os.path.html#os.path.lexistsj tos.path.normcase(j&j&?https://docs.python.org/3/library/os.path.html#os.path.normcasej tos.path.normpath(j&j&?https://docs.python.org/3/library/os.path.html#os.path.normpathj tos.path.realpath(j&j&?https://docs.python.org/3/library/os.path.html#os.path.realpathj tos.path.relpath(j&j&>https://docs.python.org/3/library/os.path.html#os.path.relpathj tos.path.samefile(j&j&?https://docs.python.org/3/library/os.path.html#os.path.samefilej tos.path.sameopenfile(j&j&Chttps://docs.python.org/3/library/os.path.html#os.path.sameopenfilej tos.path.samestat(j&j&?https://docs.python.org/3/library/os.path.html#os.path.samestatj t os.path.split(j&j&https://docs.python.org/3/library/os.html#os.sched_getaffinityj tos.sched_getparam(j&j&;https://docs.python.org/3/library/os.html#os.sched_getparamj tos.sched_getscheduler(j&j&?https://docs.python.org/3/library/os.html#os.sched_getschedulerj tos.sched_rr_get_interval(j&j&Bhttps://docs.python.org/3/library/os.html#os.sched_rr_get_intervalj tos.sched_setaffinity(j&j&>https://docs.python.org/3/library/os.html#os.sched_setaffinityj tos.sched_setparam(j&j&;https://docs.python.org/3/library/os.html#os.sched_setparamj tos.sched_setscheduler(j&j&?https://docs.python.org/3/library/os.html#os.sched_setschedulerj tos.sched_yield(j&j&8https://docs.python.org/3/library/os.html#os.sched_yieldj t os.sendfile(j&j&5https://docs.python.org/3/library/os.html#os.sendfilej tos.set_blocking(j&j&9https://docs.python.org/3/library/os.html#os.set_blockingj tos.set_handle_inheritable(j&j&Chttps://docs.python.org/3/library/os.html#os.set_handle_inheritablej tos.set_inheritable(j&j&https://docs.python.org/3/library/platform.html#platform.unamej tplatform.version(j&j&@https://docs.python.org/3/library/platform.html#platform.versionj tplatform.win32_edition(j&j&Fhttps://docs.python.org/3/library/platform.html#platform.win32_editionj tplatform.win32_is_iot(j&j&Ehttps://docs.python.org/3/library/platform.html#platform.win32_is_iotj tplatform.win32_ver(j&j&Bhttps://docs.python.org/3/library/platform.html#platform.win32_verj t plistlib.dump(j&j&=https://docs.python.org/3/library/plistlib.html#plistlib.dumpj tplistlib.dumps(j&j&>https://docs.python.org/3/library/plistlib.html#plistlib.dumpsj t plistlib.load(j&j&=https://docs.python.org/3/library/plistlib.html#plistlib.loadj tplistlib.loads(j&j&>https://docs.python.org/3/library/plistlib.html#plistlib.loadsj tpow(j&j&4https://docs.python.org/3/library/functions.html#powj tpprint.isreadable(j&j&?https://docs.python.org/3/library/pprint.html#pprint.isreadablej tpprint.isrecursive(j&j&@https://docs.python.org/3/library/pprint.html#pprint.isrecursivej tpprint.pformat(j&j&https://docs.python.org/3/library/random.html#random.randbytesj trandom.randint(j&j&https://docs.python.org/3/library/random.html#random.randrangej t random.sample(j&j&;https://docs.python.org/3/library/random.html#random.samplej t random.seed(j&j&9https://docs.python.org/3/library/random.html#random.seedj trandom.setstate(j&j&=https://docs.python.org/3/library/random.html#random.setstatej trandom.shuffle(j&j&https://docs.python.org/3/library/signal.html#signal.getitimerj tsignal.getsignal(j&j&>https://docs.python.org/3/library/signal.html#signal.getsignalj t signal.pause(j&j&:https://docs.python.org/3/library/signal.html#signal.pausej tsignal.pidfd_send_signal(j&j&Fhttps://docs.python.org/3/library/signal.html#signal.pidfd_send_signalj tsignal.pthread_kill(j&j&Ahttps://docs.python.org/3/library/signal.html#signal.pthread_killj tsignal.pthread_sigmask(j&j&Dhttps://docs.python.org/3/library/signal.html#signal.pthread_sigmaskj tsignal.raise_signal(j&j&Ahttps://docs.python.org/3/library/signal.html#signal.raise_signalj tsignal.set_wakeup_fd(j&j&Bhttps://docs.python.org/3/library/signal.html#signal.set_wakeup_fdj tsignal.setitimer(j&j&>https://docs.python.org/3/library/signal.html#signal.setitimerj tsignal.siginterrupt(j&j&Ahttps://docs.python.org/3/library/signal.html#signal.siginterruptj t signal.signal(j&j&;https://docs.python.org/3/library/signal.html#signal.signalj tsignal.sigpending(j&j&?https://docs.python.org/3/library/signal.html#signal.sigpendingj tsignal.sigtimedwait(j&j&Ahttps://docs.python.org/3/library/signal.html#signal.sigtimedwaitj tsignal.sigwait(j&j&https://docs.python.org/3/library/signal.html#signal.strsignalj tsignal.valid_signals(j&j&Bhttps://docs.python.org/3/library/signal.html#signal.valid_signalsj tsite.addsitedir(j&j&;https://docs.python.org/3/library/site.html#site.addsitedirj tsite.getsitepackages(j&j&@https://docs.python.org/3/library/site.html#site.getsitepackagesj tsite.getuserbase(j&j&https://docs.python.org/3/library/socket.html#socket.fromsharej tsocket.getaddrinfo(j&j&@https://docs.python.org/3/library/socket.html#socket.getaddrinfoj tsocket.getdefaulttimeout(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.getdefaulttimeoutj tsocket.getfqdn(j&j&https://docs.python.org/3/library/socket.html#socket.inet_atonj tsocket.inet_ntoa(j&j&>https://docs.python.org/3/library/socket.html#socket.inet_ntoaj tsocket.inet_ntop(j&j&>https://docs.python.org/3/library/socket.html#socket.inet_ntopj tsocket.inet_pton(j&j&>https://docs.python.org/3/library/socket.html#socket.inet_ptonj t socket.ntohl(j&j&:https://docs.python.org/3/library/socket.html#socket.ntohlj t socket.ntohs(j&j&:https://docs.python.org/3/library/socket.html#socket.ntohsj tsocket.recv_fds(j&j&=https://docs.python.org/3/library/socket.html#socket.recv_fdsj tsocket.send_fds(j&j&=https://docs.python.org/3/library/socket.html#socket.send_fdsj tsocket.setdefaulttimeout(j&j&Fhttps://docs.python.org/3/library/socket.html#socket.setdefaulttimeoutj tsocket.sethostname(j&j&@https://docs.python.org/3/library/socket.html#socket.sethostnamej tsocket.socketpair(j&j&?https://docs.python.org/3/library/socket.html#socket.socketpairj tsorted(j&j&7https://docs.python.org/3/library/functions.html#sortedj t spwd.getspall(j&j&9https://docs.python.org/3/library/spwd.html#spwd.getspallj t spwd.getspnam(j&j&9https://docs.python.org/3/library/spwd.html#spwd.getspnamj tsqlite3.complete_statement(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3.complete_statementj tsqlite3.connect(j&j&>https://docs.python.org/3/library/sqlite3.html#sqlite3.connectj t"sqlite3.enable_callback_tracebacks(j&j&Qhttps://docs.python.org/3/library/sqlite3.html#sqlite3.enable_callback_tracebacksj tsqlite3.register_adapter(j&j&Ghttps://docs.python.org/3/library/sqlite3.html#sqlite3.register_adapterj tsqlite3.register_converter(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3.register_converterj tssl.DER_cert_to_PEM_cert(j&j&Chttps://docs.python.org/3/library/ssl.html#ssl.DER_cert_to_PEM_certj tssl.PEM_cert_to_DER_cert(j&j&Chttps://docs.python.org/3/library/ssl.html#ssl.PEM_cert_to_DER_certj t ssl.RAND_add(j&j&7https://docs.python.org/3/library/ssl.html#ssl.RAND_addj tssl.RAND_bytes(j&j&9https://docs.python.org/3/library/ssl.html#ssl.RAND_bytesj tssl.RAND_status(j&j&:https://docs.python.org/3/library/ssl.html#ssl.RAND_statusj tssl.cert_time_to_seconds(j&j&Chttps://docs.python.org/3/library/ssl.html#ssl.cert_time_to_secondsj tssl.create_default_context(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.create_default_contextj tssl.enum_certificates(j&j&@https://docs.python.org/3/library/ssl.html#ssl.enum_certificatesj t ssl.enum_crls(j&j&8https://docs.python.org/3/library/ssl.html#ssl.enum_crlsj tssl.get_default_verify_paths(j&j&Ghttps://docs.python.org/3/library/ssl.html#ssl.get_default_verify_pathsj tssl.get_server_certificate(j&j&Ehttps://docs.python.org/3/library/ssl.html#ssl.get_server_certificatej t stat.S_IFMT(j&j&7https://docs.python.org/3/library/stat.html#stat.S_IFMTj t stat.S_IMODE(j&j&8https://docs.python.org/3/library/stat.html#stat.S_IMODEj t stat.S_ISBLK(j&j&8https://docs.python.org/3/library/stat.html#stat.S_ISBLKj t stat.S_ISCHR(j&j&8https://docs.python.org/3/library/stat.html#stat.S_ISCHRj t stat.S_ISDIR(j&j&8https://docs.python.org/3/library/stat.html#stat.S_ISDIRj t stat.S_ISDOOR(j&j&9https://docs.python.org/3/library/stat.html#stat.S_ISDOORj t stat.S_ISFIFO(j&j&9https://docs.python.org/3/library/stat.html#stat.S_ISFIFOj t stat.S_ISLNK(j&j&8https://docs.python.org/3/library/stat.html#stat.S_ISLNKj t stat.S_ISPORT(j&j&9https://docs.python.org/3/library/stat.html#stat.S_ISPORTj t stat.S_ISREG(j&j&8https://docs.python.org/3/library/stat.html#stat.S_ISREGj t stat.S_ISSOCK(j&j&9https://docs.python.org/3/library/stat.html#stat.S_ISSOCKj t stat.S_ISWHT(j&j&8https://docs.python.org/3/library/stat.html#stat.S_ISWHTj t stat.filemode(j&j&9https://docs.python.org/3/library/stat.html#stat.filemodej t staticmethod(j&j&=https://docs.python.org/3/library/functions.html#staticmethodj tstatistics.correlation(j&j&Hhttps://docs.python.org/3/library/statistics.html#statistics.correlationj tstatistics.covariance(j&j&Ghttps://docs.python.org/3/library/statistics.html#statistics.covariancej tstatistics.fmean(j&j&Bhttps://docs.python.org/3/library/statistics.html#statistics.fmeanj tstatistics.geometric_mean(j&j&Khttps://docs.python.org/3/library/statistics.html#statistics.geometric_meanj tstatistics.harmonic_mean(j&j&Jhttps://docs.python.org/3/library/statistics.html#statistics.harmonic_meanj tstatistics.linear_regression(j&j&Nhttps://docs.python.org/3/library/statistics.html#statistics.linear_regressionj tstatistics.mean(j&j&Ahttps://docs.python.org/3/library/statistics.html#statistics.meanj tstatistics.median(j&j&Chttps://docs.python.org/3/library/statistics.html#statistics.medianj tstatistics.median_grouped(j&j&Khttps://docs.python.org/3/library/statistics.html#statistics.median_groupedj tstatistics.median_high(j&j&Hhttps://docs.python.org/3/library/statistics.html#statistics.median_highj tstatistics.median_low(j&j&Ghttps://docs.python.org/3/library/statistics.html#statistics.median_lowj tstatistics.mode(j&j&Ahttps://docs.python.org/3/library/statistics.html#statistics.modej tstatistics.multimode(j&j&Fhttps://docs.python.org/3/library/statistics.html#statistics.multimodej tstatistics.pstdev(j&j&Chttps://docs.python.org/3/library/statistics.html#statistics.pstdevj tstatistics.pvariance(j&j&Fhttps://docs.python.org/3/library/statistics.html#statistics.pvariancej tstatistics.quantiles(j&j&Fhttps://docs.python.org/3/library/statistics.html#statistics.quantilesj tstatistics.stdev(j&j&Bhttps://docs.python.org/3/library/statistics.html#statistics.stdevj tstatistics.variance(j&j&Ehttps://docs.python.org/3/library/statistics.html#statistics.variancej tstring.capwords(j&j&=https://docs.python.org/3/library/string.html#string.capwordsj tstringprep.in_table_a1(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_a1j tstringprep.in_table_b1(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_b1j tstringprep.in_table_c11(j&j&Ihttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c11j tstringprep.in_table_c11_c12(j&j&Mhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c11_c12j tstringprep.in_table_c12(j&j&Ihttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c12j tstringprep.in_table_c21(j&j&Ihttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c21j tstringprep.in_table_c21_c22(j&j&Mhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c21_c22j tstringprep.in_table_c22(j&j&Ihttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c22j tstringprep.in_table_c3(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c3j tstringprep.in_table_c4(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c4j tstringprep.in_table_c5(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c5j tstringprep.in_table_c6(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c6j tstringprep.in_table_c7(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c7j tstringprep.in_table_c8(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c8j tstringprep.in_table_c9(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_c9j tstringprep.in_table_d1(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_d1j tstringprep.in_table_d2(j&j&Hhttps://docs.python.org/3/library/stringprep.html#stringprep.in_table_d2j tstringprep.map_table_b2(j&j&Ihttps://docs.python.org/3/library/stringprep.html#stringprep.map_table_b2j tstringprep.map_table_b3(j&j&Ihttps://docs.python.org/3/library/stringprep.html#stringprep.map_table_b3j tstruct.calcsize(j&j&=https://docs.python.org/3/library/struct.html#struct.calcsizej tstruct.iter_unpack(j&j&@https://docs.python.org/3/library/struct.html#struct.iter_unpackj t struct.pack(j&j&9https://docs.python.org/3/library/struct.html#struct.packj tstruct.pack_into(j&j&>https://docs.python.org/3/library/struct.html#struct.pack_intoj t struct.unpack(j&j&;https://docs.python.org/3/library/struct.html#struct.unpackj tstruct.unpack_from(j&j&@https://docs.python.org/3/library/struct.html#struct.unpack_fromj tsubprocess.call(j&j&Ahttps://docs.python.org/3/library/subprocess.html#subprocess.callj tsubprocess.check_call(j&j&Ghttps://docs.python.org/3/library/subprocess.html#subprocess.check_callj tsubprocess.check_output(j&j&Ihttps://docs.python.org/3/library/subprocess.html#subprocess.check_outputj tsubprocess.getoutput(j&j&Fhttps://docs.python.org/3/library/subprocess.html#subprocess.getoutputj tsubprocess.getstatusoutput(j&j&Lhttps://docs.python.org/3/library/subprocess.html#subprocess.getstatusoutputj tsubprocess.run(j&j&@https://docs.python.org/3/library/subprocess.html#subprocess.runj tsum(j&j&4https://docs.python.org/3/library/functions.html#sumj t sunau.open(j&j&7https://docs.python.org/3/library/sunau.html#sunau.openj tsymtable.symtable(j&j&Ahttps://docs.python.org/3/library/symtable.html#symtable.symtablej tsys._clear_type_cache(j&j&@https://docs.python.org/3/library/sys.html#sys._clear_type_cachej tsys._current_exceptions(j&j&Bhttps://docs.python.org/3/library/sys.html#sys._current_exceptionsj tsys._current_frames(j&j&>https://docs.python.org/3/library/sys.html#sys._current_framesj tsys._debugmallocstats(j&j&@https://docs.python.org/3/library/sys.html#sys._debugmallocstatsj t"sys._enablelegacywindowsfsencoding(j&j&Mhttps://docs.python.org/3/library/sys.html#sys._enablelegacywindowsfsencodingj t sys._getframe(j&j&8https://docs.python.org/3/library/sys.html#sys._getframej tsys._getframemodulename(j&j&Bhttps://docs.python.org/3/library/sys.html#sys._getframemodulenamej tsys.activate_stack_trampoline(j&j&Hhttps://docs.python.org/3/library/sys.html#sys.activate_stack_trampolinej tsys.addaudithook(j&j&;https://docs.python.org/3/library/sys.html#sys.addaudithookj t sys.audit(j&j&4https://docs.python.org/3/library/sys.html#sys.auditj tsys.breakpointhook(j&j&=https://docs.python.org/3/library/sys.html#sys.breakpointhookj tsys.call_tracing(j&j&;https://docs.python.org/3/library/sys.html#sys.call_tracingj tsys.deactivate_stack_trampoline(j&j&Jhttps://docs.python.org/3/library/sys.html#sys.deactivate_stack_trampolinej tsys.displayhook(j&j&:https://docs.python.org/3/library/sys.html#sys.displayhookj t sys.exc_info(j&j&7https://docs.python.org/3/library/sys.html#sys.exc_infoj tsys.excepthook(j&j&9https://docs.python.org/3/library/sys.html#sys.excepthookj t sys.exception(j&j&8https://docs.python.org/3/library/sys.html#sys.exceptionj tsys.exit(j&j&3https://docs.python.org/3/library/sys.html#sys.exitj tsys.get_asyncgen_hooks(j&j&Ahttps://docs.python.org/3/library/sys.html#sys.get_asyncgen_hooksj t'sys.get_coroutine_origin_tracking_depth(j&j&Rhttps://docs.python.org/3/library/sys.html#sys.get_coroutine_origin_tracking_depthj tsys.get_int_max_str_digits(j&j&Ehttps://docs.python.org/3/library/sys.html#sys.get_int_max_str_digitsj tsys.getallocatedblocks(j&j&Ahttps://docs.python.org/3/library/sys.html#sys.getallocatedblocksj tsys.getandroidapilevel(j&j&Ahttps://docs.python.org/3/library/sys.html#sys.getandroidapilevelj tsys.getdefaultencoding(j&j&Ahttps://docs.python.org/3/library/sys.html#sys.getdefaultencodingj tsys.getdlopenflags(j&j&=https://docs.python.org/3/library/sys.html#sys.getdlopenflagsj tsys.getfilesystemencodeerrors(j&j&Hhttps://docs.python.org/3/library/sys.html#sys.getfilesystemencodeerrorsj tsys.getfilesystemencoding(j&j&Dhttps://docs.python.org/3/library/sys.html#sys.getfilesystemencodingj tsys.getprofile(j&j&9https://docs.python.org/3/library/sys.html#sys.getprofilej tsys.getrecursionlimit(j&j&@https://docs.python.org/3/library/sys.html#sys.getrecursionlimitj tsys.getrefcount(j&j&:https://docs.python.org/3/library/sys.html#sys.getrefcountj t sys.getsizeof(j&j&8https://docs.python.org/3/library/sys.html#sys.getsizeofj tsys.getswitchinterval(j&j&@https://docs.python.org/3/library/sys.html#sys.getswitchintervalj t sys.gettrace(j&j&7https://docs.python.org/3/library/sys.html#sys.gettracej tsys.getunicodeinternedsize(j&j&Ehttps://docs.python.org/3/library/sys.html#sys.getunicodeinternedsizej tsys.getwindowsversion(j&j&@https://docs.python.org/3/library/sys.html#sys.getwindowsversionj t sys.intern(j&j&5https://docs.python.org/3/library/sys.html#sys.internj tsys.is_finalizing(j&j&https://docs.python.org/3/library/tabnanny.html#tabnanny.checkj ttabnanny.process_tokens(j&j&Ghttps://docs.python.org/3/library/tabnanny.html#tabnanny.process_tokensj ttarfile.data_filter(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile.data_filterj ttarfile.fully_trusted_filter(j&j&Khttps://docs.python.org/3/library/tarfile.html#tarfile.fully_trusted_filterj ttarfile.is_tarfile(j&j&Ahttps://docs.python.org/3/library/tarfile.html#tarfile.is_tarfilej t tarfile.open(j&j&;https://docs.python.org/3/library/tarfile.html#tarfile.openj ttarfile.tar_filter(j&j&Ahttps://docs.python.org/3/library/tarfile.html#tarfile.tar_filterj ttempfile.NamedTemporaryFile(j&j&Khttps://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFilej ttempfile.TemporaryFile(j&j&Fhttps://docs.python.org/3/library/tempfile.html#tempfile.TemporaryFilej ttempfile.gettempdir(j&j&Chttps://docs.python.org/3/library/tempfile.html#tempfile.gettempdirj ttempfile.gettempdirb(j&j&Dhttps://docs.python.org/3/library/tempfile.html#tempfile.gettempdirbj ttempfile.gettempprefix(j&j&Fhttps://docs.python.org/3/library/tempfile.html#tempfile.gettempprefixj ttempfile.gettempprefixb(j&j&Ghttps://docs.python.org/3/library/tempfile.html#tempfile.gettempprefixbj ttempfile.mkdtemp(j&j&@https://docs.python.org/3/library/tempfile.html#tempfile.mkdtempj ttempfile.mkstemp(j&j&@https://docs.python.org/3/library/tempfile.html#tempfile.mkstempj ttempfile.mktemp(j&j&?https://docs.python.org/3/library/tempfile.html#tempfile.mktempj ttermios.tcdrain(j&j&>https://docs.python.org/3/library/termios.html#termios.tcdrainj ttermios.tcflow(j&j&=https://docs.python.org/3/library/termios.html#termios.tcflowj ttermios.tcflush(j&j&>https://docs.python.org/3/library/termios.html#termios.tcflushj ttermios.tcgetattr(j&j&@https://docs.python.org/3/library/termios.html#termios.tcgetattrj ttermios.tcgetwinsize(j&j&Chttps://docs.python.org/3/library/termios.html#termios.tcgetwinsizej ttermios.tcsendbreak(j&j&Bhttps://docs.python.org/3/library/termios.html#termios.tcsendbreakj ttermios.tcsetattr(j&j&@https://docs.python.org/3/library/termios.html#termios.tcsetattrj ttermios.tcsetwinsize(j&j&Chttps://docs.python.org/3/library/termios.html#termios.tcsetwinsizej t&test.support.adjust_int_max_str_digits(j&j&Rhttps://docs.python.org/3/library/test.html#test.support.adjust_int_max_str_digitsj ttest.support.anticipate_failure(j&j&Khttps://docs.python.org/3/library/test.html#test.support.anticipate_failurej t(test.support.args_from_interpreter_flags(j&j&Thttps://docs.python.org/3/library/test.html#test.support.args_from_interpreter_flagsj ttest.support.bigaddrspacetest(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.bigaddrspacetestj ttest.support.bigmemtest(j&j&Chttps://docs.python.org/3/library/test.html#test.support.bigmemtestj ttest.support.busy_retry(j&j&Chttps://docs.python.org/3/library/test.html#test.support.busy_retryj ttest.support.calcobjsize(j&j&Dhttps://docs.python.org/3/library/test.html#test.support.calcobjsizej ttest.support.calcvobjsize(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.calcvobjsizej ttest.support.captured_stderr(j&j&Hhttps://docs.python.org/3/library/test.html#test.support.captured_stderrj ttest.support.captured_stdin(j&j&Ghttps://docs.python.org/3/library/test.html#test.support.captured_stdinj ttest.support.captured_stdout(j&j&Hhttps://docs.python.org/3/library/test.html#test.support.captured_stdoutj t'test.support.catch_unraisable_exception(j&j&Shttps://docs.python.org/3/library/test.html#test.support.catch_unraisable_exceptionj ttest.support.check__all__(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.check__all__j t)test.support.check_disallow_instantiation(j&j&Uhttps://docs.python.org/3/library/test.html#test.support.check_disallow_instantiationj t'test.support.check_free_after_iterating(j&j&Shttps://docs.python.org/3/library/test.html#test.support.check_free_after_iteratingj ttest.support.check_impl_detail(j&j&Jhttps://docs.python.org/3/library/test.html#test.support.check_impl_detailj ttest.support.check_syntax_error(j&j&Khttps://docs.python.org/3/library/test.html#test.support.check_syntax_errorj ttest.support.checksizeof(j&j&Dhttps://docs.python.org/3/library/test.html#test.support.checksizeofj ttest.support.cpython_only(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.cpython_onlyj t test.support.detect_api_mismatch(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.detect_api_mismatchj t!test.support.disable_faulthandler(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.disable_faulthandlerj ttest.support.disable_gc(j&j&Chttps://docs.python.org/3/library/test.html#test.support.disable_gcj ttest.support.findfile(j&j&Ahttps://docs.python.org/3/library/test.html#test.support.findfilej ttest.support.flush_std_streams(j&j&Jhttps://docs.python.org/3/library/test.html#test.support.flush_std_streamsj ttest.support.gc_collect(j&j&Chttps://docs.python.org/3/library/test.html#test.support.gc_collectj ttest.support.get_attribute(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.get_attributej t test.support.get_original_stdout(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.get_original_stdoutj ttest.support.get_pagesize(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.get_pagesizej ttest.support.impl_detail(j&j&Dhttps://docs.python.org/3/library/test.html#test.support.impl_detailj t!test.support.import_helper.forget(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.import_helper.forgetj t.test.support.import_helper.import_fresh_module(j&j&Zhttps://docs.python.org/3/library/test.html#test.support.import_helper.import_fresh_modulej t(test.support.import_helper.import_module(j&j&Thttps://docs.python.org/3/library/test.html#test.support.import_helper.import_modulej t*test.support.import_helper.make_legacy_pyc(j&j&Vhttps://docs.python.org/3/library/test.html#test.support.import_helper.make_legacy_pycj t*test.support.import_helper.modules_cleanup(j&j&Vhttps://docs.python.org/3/library/test.html#test.support.import_helper.modules_cleanupj t(test.support.import_helper.modules_setup(j&j&Thttps://docs.python.org/3/library/test.html#test.support.import_helper.modules_setupj t!test.support.import_helper.unload(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.import_helper.unloadj t test.support.is_resource_enabled(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.is_resource_enabledj ttest.support.load_package_tests(j&j&Khttps://docs.python.org/3/library/test.html#test.support.load_package_testsj t(test.support.missing_compiler_executable(j&j&Thttps://docs.python.org/3/library/test.html#test.support.missing_compiler_executablej ttest.support.no_tracing(j&j&Chttps://docs.python.org/3/library/test.html#test.support.no_tracingj ttest.support.open_urlresource(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.open_urlresourcej t.test.support.optim_args_from_interpreter_flags(j&j&Zhttps://docs.python.org/3/library/test.html#test.support.optim_args_from_interpreter_flagsj t"test.support.os_helper.can_symlink(j&j&Nhttps://docs.python.org/3/library/test.html#test.support.os_helper.can_symlinkj t test.support.os_helper.can_xattr(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.os_helper.can_xattrj t!test.support.os_helper.change_cwd(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.os_helper.change_cwdj t(test.support.os_helper.create_empty_file(j&j&Thttps://docs.python.org/3/library/test.html#test.support.os_helper.create_empty_filej ttest.support.os_helper.fd_count(j&j&Khttps://docs.python.org/3/library/test.html#test.support.os_helper.fd_countj t-test.support.os_helper.fs_is_case_insensitive(j&j&Yhttps://docs.python.org/3/library/test.html#test.support.os_helper.fs_is_case_insensitivej t"test.support.os_helper.make_bad_fd(j&j&Nhttps://docs.python.org/3/library/test.html#test.support.os_helper.make_bad_fdj ttest.support.os_helper.rmdir(j&j&Hhttps://docs.python.org/3/library/test.html#test.support.os_helper.rmdirj ttest.support.os_helper.rmtree(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.os_helper.rmtreej t*test.support.os_helper.skip_unless_symlink(j&j&Vhttps://docs.python.org/3/library/test.html#test.support.os_helper.skip_unless_symlinkj t(test.support.os_helper.skip_unless_xattr(j&j&Thttps://docs.python.org/3/library/test.html#test.support.os_helper.skip_unless_xattrj ttest.support.os_helper.temp_cwd(j&j&Khttps://docs.python.org/3/library/test.html#test.support.os_helper.temp_cwdj ttest.support.os_helper.temp_dir(j&j&Khttps://docs.python.org/3/library/test.html#test.support.os_helper.temp_dirj t!test.support.os_helper.temp_umask(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.os_helper.temp_umaskj ttest.support.os_helper.unlink(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.os_helper.unlinkj ttest.support.patch(j&j&>https://docs.python.org/3/library/test.html#test.support.patchj ttest.support.print_warning(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.print_warningj t test.support.python_is_optimized(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.python_is_optimizedj ttest.support.reap_children(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.reap_childrenj t#test.support.record_original_stdout(j&j&Ohttps://docs.python.org/3/library/test.html#test.support.record_original_stdoutj ttest.support.refcount_test(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.refcount_testj ttest.support.requires(j&j&Ahttps://docs.python.org/3/library/test.html#test.support.requiresj ttest.support.requires_IEEE_754(j&j&Jhttps://docs.python.org/3/library/test.html#test.support.requires_IEEE_754j ttest.support.requires_bz2(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.requires_bz2j t test.support.requires_docstrings(j&j&Lhttps://docs.python.org/3/library/test.html#test.support.requires_docstringsj t%test.support.requires_freebsd_version(j&j&Qhttps://docs.python.org/3/library/test.html#test.support.requires_freebsd_versionj ttest.support.requires_gzip(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.requires_gzipj t!test.support.requires_limited_api(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.requires_limited_apij t#test.support.requires_linux_version(j&j&Ohttps://docs.python.org/3/library/test.html#test.support.requires_linux_versionj ttest.support.requires_lzma(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.requires_lzmaj t!test.support.requires_mac_version(j&j&Mhttps://docs.python.org/3/library/test.html#test.support.requires_mac_versionj ttest.support.requires_resource(j&j&Jhttps://docs.python.org/3/library/test.html#test.support.requires_resourcej ttest.support.requires_zlib(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.requires_zlibj ttest.support.run_in_subinterp(j&j&Ihttps://docs.python.org/3/library/test.html#test.support.run_in_subinterpj ttest.support.run_with_locale(j&j&Hhttps://docs.python.org/3/library/test.html#test.support.run_with_localej ttest.support.run_with_tz(j&j&Dhttps://docs.python.org/3/library/test.html#test.support.run_with_tzj t0test.support.script_helper.assert_python_failure(j&j&\https://docs.python.org/3/library/test.html#test.support.script_helper.assert_python_failurej t+test.support.script_helper.assert_python_ok(j&j&Whttps://docs.python.org/3/library/test.html#test.support.script_helper.assert_python_okj t;test.support.script_helper.interpreter_requires_environment(j&j&ghttps://docs.python.org/3/library/test.html#test.support.script_helper.interpreter_requires_environmentj t&test.support.script_helper.kill_python(j&j&Rhttps://docs.python.org/3/library/test.html#test.support.script_helper.kill_pythonj t#test.support.script_helper.make_pkg(j&j&Ohttps://docs.python.org/3/library/test.html#test.support.script_helper.make_pkgj t&test.support.script_helper.make_script(j&j&Rhttps://docs.python.org/3/library/test.html#test.support.script_helper.make_scriptj t'test.support.script_helper.make_zip_pkg(j&j&Shttps://docs.python.org/3/library/test.html#test.support.script_helper.make_zip_pkgj t*test.support.script_helper.make_zip_script(j&j&Vhttps://docs.python.org/3/library/test.html#test.support.script_helper.make_zip_scriptj t/test.support.script_helper.run_python_until_end(j&j&[https://docs.python.org/3/library/test.html#test.support.script_helper.run_python_until_endj t'test.support.script_helper.spawn_python(j&j&Shttps://docs.python.org/3/library/test.html#test.support.script_helper.spawn_pythonj ttest.support.set_memlimit(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.set_memlimitj ttest.support.setswitchinterval(j&j&Jhttps://docs.python.org/3/library/test.html#test.support.setswitchintervalj t7test.support.skip_if_broken_multiprocessing_synchronize(j&j&chttps://docs.python.org/3/library/test.html#test.support.skip_if_broken_multiprocessing_synchronizej ttest.support.sleeping_retry(j&j&Ghttps://docs.python.org/3/library/test.html#test.support.sleeping_retryj t$test.support.socket_helper.bind_port(j&j&Phttps://docs.python.org/3/library/test.html#test.support.socket_helper.bind_portj t+test.support.socket_helper.bind_unix_socket(j&j&Whttps://docs.python.org/3/library/test.html#test.support.socket_helper.bind_unix_socketj t+test.support.socket_helper.find_unused_port(j&j&Whttps://docs.python.org/3/library/test.html#test.support.socket_helper.find_unused_portj t7test.support.socket_helper.skip_unless_bind_unix_socket(j&j&chttps://docs.python.org/3/library/test.html#test.support.socket_helper.skip_unless_bind_unix_socketj t-test.support.socket_helper.transient_internet(j&j&Yhttps://docs.python.org/3/library/test.html#test.support.socket_helper.transient_internetj ttest.support.sortdict(j&j&Ahttps://docs.python.org/3/library/test.html#test.support.sortdictj ttest.support.swap_attr(j&j&Bhttps://docs.python.org/3/library/test.html#test.support.swap_attrj ttest.support.swap_item(j&j&Bhttps://docs.python.org/3/library/test.html#test.support.swap_itemj t&test.support.system_must_validate_cert(j&j&Rhttps://docs.python.org/3/library/test.html#test.support.system_must_validate_certj t7test.support.threading_helper.catch_threading_exception(j&j&chttps://docs.python.org/3/library/test.html#test.support.threading_helper.catch_threading_exceptionj t)test.support.threading_helper.join_thread(j&j&Uhttps://docs.python.org/3/library/test.html#test.support.threading_helper.join_threadj t*test.support.threading_helper.reap_threads(j&j&Vhttps://docs.python.org/3/library/test.html#test.support.threading_helper.reap_threadsj t+test.support.threading_helper.start_threads(j&j&Whttps://docs.python.org/3/library/test.html#test.support.threading_helper.start_threadsj t/test.support.threading_helper.threading_cleanup(j&j&[https://docs.python.org/3/library/test.html#test.support.threading_helper.threading_cleanupj t-test.support.threading_helper.threading_setup(j&j&Yhttps://docs.python.org/3/library/test.html#test.support.threading_helper.threading_setupj t/test.support.threading_helper.wait_threads_exit(j&j&[https://docs.python.org/3/library/test.html#test.support.threading_helper.wait_threads_exitj ttest.support.wait_process(j&j&Ehttps://docs.python.org/3/library/test.html#test.support.wait_processj t6test.support.warnings_helper.check_no_resource_warning(j&j&bhttps://docs.python.org/3/library/test.html#test.support.warnings_helper.check_no_resource_warningj t1test.support.warnings_helper.check_syntax_warning(j&j&]https://docs.python.org/3/library/test.html#test.support.warnings_helper.check_syntax_warningj t+test.support.warnings_helper.check_warnings(j&j&Whttps://docs.python.org/3/library/test.html#test.support.warnings_helper.check_warningsj t,test.support.warnings_helper.ignore_warnings(j&j&Xhttps://docs.python.org/3/library/test.html#test.support.warnings_helper.ignore_warningsj ttest.support.with_pymalloc(j&j&Fhttps://docs.python.org/3/library/test.html#test.support.with_pymallocj ttextwrap.dedent(j&j&?https://docs.python.org/3/library/textwrap.html#textwrap.dedentj t textwrap.fill(j&j&=https://docs.python.org/3/library/textwrap.html#textwrap.fillj ttextwrap.indent(j&j&?https://docs.python.org/3/library/textwrap.html#textwrap.indentj ttextwrap.shorten(j&j&@https://docs.python.org/3/library/textwrap.html#textwrap.shortenj t textwrap.wrap(j&j&=https://docs.python.org/3/library/textwrap.html#textwrap.wrapj tthreading.active_count(j&j&Ghttps://docs.python.org/3/library/threading.html#threading.active_countj tthreading.current_thread(j&j&Ihttps://docs.python.org/3/library/threading.html#threading.current_threadj tthreading.enumerate(j&j&Dhttps://docs.python.org/3/library/threading.html#threading.enumeratej tthreading.excepthook(j&j&Ehttps://docs.python.org/3/library/threading.html#threading.excepthookj tthreading.get_ident(j&j&Dhttps://docs.python.org/3/library/threading.html#threading.get_identj tthreading.get_native_id(j&j&Hhttps://docs.python.org/3/library/threading.html#threading.get_native_idj tthreading.getprofile(j&j&Ehttps://docs.python.org/3/library/threading.html#threading.getprofilej tthreading.gettrace(j&j&Chttps://docs.python.org/3/library/threading.html#threading.gettracej tthreading.main_thread(j&j&Fhttps://docs.python.org/3/library/threading.html#threading.main_threadj tthreading.setprofile(j&j&Ehttps://docs.python.org/3/library/threading.html#threading.setprofilej t threading.setprofile_all_threads(j&j&Qhttps://docs.python.org/3/library/threading.html#threading.setprofile_all_threadsj tthreading.settrace(j&j&Chttps://docs.python.org/3/library/threading.html#threading.settracej tthreading.settrace_all_threads(j&j&Ohttps://docs.python.org/3/library/threading.html#threading.settrace_all_threadsj tthreading.stack_size(j&j&Ehttps://docs.python.org/3/library/threading.html#threading.stack_sizej t time.asctime(j&j&8https://docs.python.org/3/library/time.html#time.asctimej ttime.clock_getres(j&j&=https://docs.python.org/3/library/time.html#time.clock_getresj ttime.clock_gettime(j&j&>https://docs.python.org/3/library/time.html#time.clock_gettimej ttime.clock_gettime_ns(j&j&Ahttps://docs.python.org/3/library/time.html#time.clock_gettime_nsj ttime.clock_settime(j&j&>https://docs.python.org/3/library/time.html#time.clock_settimej ttime.clock_settime_ns(j&j&Ahttps://docs.python.org/3/library/time.html#time.clock_settime_nsj t time.ctime(j&j&6https://docs.python.org/3/library/time.html#time.ctimej ttime.get_clock_info(j&j&?https://docs.python.org/3/library/time.html#time.get_clock_infoj t time.gmtime(j&j&7https://docs.python.org/3/library/time.html#time.gmtimej ttime.localtime(j&j&:https://docs.python.org/3/library/time.html#time.localtimej t time.mktime(j&j&7https://docs.python.org/3/library/time.html#time.mktimej ttime.monotonic(j&j&:https://docs.python.org/3/library/time.html#time.monotonicj ttime.monotonic_ns(j&j&=https://docs.python.org/3/library/time.html#time.monotonic_nsj ttime.perf_counter(j&j&=https://docs.python.org/3/library/time.html#time.perf_counterj ttime.perf_counter_ns(j&j&@https://docs.python.org/3/library/time.html#time.perf_counter_nsj ttime.process_time(j&j&=https://docs.python.org/3/library/time.html#time.process_timej ttime.process_time_ns(j&j&@https://docs.python.org/3/library/time.html#time.process_time_nsj ttime.pthread_getcpuclockid(j&j&Fhttps://docs.python.org/3/library/time.html#time.pthread_getcpuclockidj t time.sleep(j&j&6https://docs.python.org/3/library/time.html#time.sleepj t time.strftime(j&j&9https://docs.python.org/3/library/time.html#time.strftimej t time.strptime(j&j&9https://docs.python.org/3/library/time.html#time.strptimej ttime.thread_time(j&j&https://docs.python.org/3/library/turtle.html#turtle.colormodej tturtle.degrees(j&j&https://docs.python.org/3/library/turtle.html#turtle.fillcolorj tturtle.filling(j&j&https://docs.python.org/3/library/turtle.html#turtle.getcanvasj t turtle.getpen(j&j&;https://docs.python.org/3/library/turtle.html#turtle.getpenj tturtle.getscreen(j&j&>https://docs.python.org/3/library/turtle.html#turtle.getscreenj tturtle.getshapes(j&j&>https://docs.python.org/3/library/turtle.html#turtle.getshapesj tturtle.getturtle(j&j&>https://docs.python.org/3/library/turtle.html#turtle.getturtlej t turtle.goto(j&j&9https://docs.python.org/3/library/turtle.html#turtle.gotoj tturtle.heading(j&j&https://docs.python.org/3/library/turtle.html#turtle.isvisiblej t turtle.left(j&j&9https://docs.python.org/3/library/turtle.html#turtle.leftj t turtle.listen(j&j&;https://docs.python.org/3/library/turtle.html#turtle.listenj t turtle.lt(j&j&7https://docs.python.org/3/library/turtle.html#turtle.ltj tturtle.mainloop(j&j&=https://docs.python.org/3/library/turtle.html#turtle.mainloopj t turtle.mode(j&j&9https://docs.python.org/3/library/turtle.html#turtle.modej tturtle.numinput(j&j&=https://docs.python.org/3/library/turtle.html#turtle.numinputj tturtle.onclick(j&j&https://docs.python.org/3/library/turtle.html#turtle.onreleasej tturtle.onscreenclick(j&j&Bhttps://docs.python.org/3/library/turtle.html#turtle.onscreenclickj tturtle.ontimer(j&j&https://docs.python.org/3/library/turtle.html#turtle.shapesizej tturtle.shapetransform(j&j&Chttps://docs.python.org/3/library/turtle.html#turtle.shapetransformj tturtle.shearfactor(j&j&@https://docs.python.org/3/library/turtle.html#turtle.shearfactorj tturtle.showturtle(j&j&?https://docs.python.org/3/library/turtle.html#turtle.showturtlej t turtle.speed(j&j&:https://docs.python.org/3/library/turtle.html#turtle.speedj t turtle.st(j&j&7https://docs.python.org/3/library/turtle.html#turtle.stj t turtle.stamp(j&j&:https://docs.python.org/3/library/turtle.html#turtle.stampj tturtle.teleport(j&j&=https://docs.python.org/3/library/turtle.html#turtle.teleportj tturtle.textinput(j&j&>https://docs.python.org/3/library/turtle.html#turtle.textinputj t turtle.tilt(j&j&9https://docs.python.org/3/library/turtle.html#turtle.tiltj tturtle.tiltangle(j&j&>https://docs.python.org/3/library/turtle.html#turtle.tiltanglej t turtle.title(j&j&:https://docs.python.org/3/library/turtle.html#turtle.titlej tturtle.towards(j&j&https://docs.python.org/3/library/winreg.html#winreg.CreateKeyj twinreg.CreateKeyEx(j&j&@https://docs.python.org/3/library/winreg.html#winreg.CreateKeyExj twinreg.DeleteKey(j&j&>https://docs.python.org/3/library/winreg.html#winreg.DeleteKeyj twinreg.DeleteKeyEx(j&j&@https://docs.python.org/3/library/winreg.html#winreg.DeleteKeyExj twinreg.DeleteValue(j&j&@https://docs.python.org/3/library/winreg.html#winreg.DeleteValuej twinreg.DisableReflectionKey(j&j&Ihttps://docs.python.org/3/library/winreg.html#winreg.DisableReflectionKeyj twinreg.EnableReflectionKey(j&j&Hhttps://docs.python.org/3/library/winreg.html#winreg.EnableReflectionKeyj twinreg.EnumKey(j&j&https://docs.python.org/3/library/winreg.html#winreg.EnumValuej twinreg.ExpandEnvironmentStrings(j&j&Mhttps://docs.python.org/3/library/winreg.html#winreg.ExpandEnvironmentStringsj twinreg.FlushKey(j&j&=https://docs.python.org/3/library/winreg.html#winreg.FlushKeyj twinreg.LoadKey(j&j&https://docs.python.org/3/library/winreg.html#winreg.OpenKeyExj twinreg.QueryInfoKey(j&j&Ahttps://docs.python.org/3/library/winreg.html#winreg.QueryInfoKeyj twinreg.QueryReflectionKey(j&j&Ghttps://docs.python.org/3/library/winreg.html#winreg.QueryReflectionKeyj twinreg.QueryValue(j&j&?https://docs.python.org/3/library/winreg.html#winreg.QueryValuej twinreg.QueryValueEx(j&j&Ahttps://docs.python.org/3/library/winreg.html#winreg.QueryValueExj twinreg.SaveKey(j&j&https://docs.python.org/3/library/zlib.html#zlib.decompressobjj tzoneinfo.available_timezones(j&j&Lhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.available_timezonesj tzoneinfo.reset_tzpath(j&j&Ehttps://docs.python.org/3/library/zoneinfo.html#zoneinfo.reset_tzpathj tustd:pdbcommand}(!(j&j&7https://docs.python.org/3/library/pdb.html#pdbcommand-0j talias(j&j&;https://docs.python.org/3/library/pdb.html#pdbcommand-aliasj targs(j&j&:https://docs.python.org/3/library/pdb.html#pdbcommand-argsj tbreak(j&j&;https://docs.python.org/3/library/pdb.html#pdbcommand-breakj tclear(j&j&;https://docs.python.org/3/library/pdb.html#pdbcommand-clearj tcommands(j&j&>https://docs.python.org/3/library/pdb.html#pdbcommand-commandsj t condition(j&j&?https://docs.python.org/3/library/pdb.html#pdbcommand-conditionj tcontinue(j&j&>https://docs.python.org/3/library/pdb.html#pdbcommand-continuej tdebug(j&j&;https://docs.python.org/3/library/pdb.html#pdbcommand-debugj tdisable(j&j&=https://docs.python.org/3/library/pdb.html#pdbcommand-disablej tdisplay(j&j&=https://docs.python.org/3/library/pdb.html#pdbcommand-displayj tdown(j&j&:https://docs.python.org/3/library/pdb.html#pdbcommand-downj tenable(j&j&https://docs.python.org/3/library/pdb.html#pdbcommand-interactj tjump(j&j&:https://docs.python.org/3/library/pdb.html#pdbcommand-jumpj tlist(j&j&:https://docs.python.org/3/library/pdb.html#pdbcommand-listj tll(j&j&8https://docs.python.org/3/library/pdb.html#pdbcommand-llj tnext(j&j&:https://docs.python.org/3/library/pdb.html#pdbcommand-nextj tp(j&j&7https://docs.python.org/3/library/pdb.html#pdbcommand-pj tpp(j&j&8https://docs.python.org/3/library/pdb.html#pdbcommand-ppj tquit(j&j&:https://docs.python.org/3/library/pdb.html#pdbcommand-quitj trestart(j&j&=https://docs.python.org/3/library/pdb.html#pdbcommand-restartj treturn(j&j&https://docs.python.org/3/using/configure.html#cmdoption-buildj t--check-hash-based-pycs(j&j&Lhttps://docs.python.org/3/using/cmdline.html#cmdoption-check-hash-based-pycsj t--disable-ipv6(j&j&Ehttps://docs.python.org/3/using/configure.html#cmdoption-disable-ipv6j t--disable-test-modules(j&j&Mhttps://docs.python.org/3/using/configure.html#cmdoption-disable-test-modulesj t--enable-big-digits(j&j&Jhttps://docs.python.org/3/using/configure.html#cmdoption-enable-big-digitsj t --enable-bolt(j&j&Dhttps://docs.python.org/3/using/configure.html#cmdoption-enable-boltj t--enable-framework(j&j&Ihttps://docs.python.org/3/using/configure.html#cmdoption-enable-frameworkj t#--enable-loadable-sqlite-extensions(j&j&Zhttps://docs.python.org/3/using/configure.html#cmdoption-enable-loadable-sqlite-extensionsj t--enable-optimizations(j&j&Mhttps://docs.python.org/3/using/configure.html#cmdoption-enable-optimizationsj t--enable-profiling(j&j&Ihttps://docs.python.org/3/using/configure.html#cmdoption-enable-profilingj t--enable-pystats(j&j&Ghttps://docs.python.org/3/using/configure.html#cmdoption-enable-pystatsj t--enable-shared(j&j&Fhttps://docs.python.org/3/using/configure.html#cmdoption-enable-sharedj t--enable-universalsdk(j&j&Lhttps://docs.python.org/3/using/configure.html#cmdoption-enable-universalsdkj t--enable-wasm-dynamic-linking(j&j&Thttps://docs.python.org/3/using/configure.html#cmdoption-enable-wasm-dynamic-linkingj t--enable-wasm-pthreads(j&j&Mhttps://docs.python.org/3/using/configure.html#cmdoption-enable-wasm-pthreadsj t --exec-prefix(j&j&Dhttps://docs.python.org/3/using/configure.html#cmdoption-exec-prefixj t--help(j&j&;https://docs.python.org/3/using/cmdline.html#cmdoption-helpj t --help-all(j&j&?https://docs.python.org/3/using/cmdline.html#cmdoption-help-allj t --help-env(j&j&?https://docs.python.org/3/using/cmdline.html#cmdoption-help-envj t--help-xoptions(j&j&Dhttps://docs.python.org/3/using/cmdline.html#cmdoption-help-xoptionsj t--host(j&j&=https://docs.python.org/3/using/configure.html#cmdoption-hostj t--prefix(j&j&?https://docs.python.org/3/using/configure.html#cmdoption-prefixj t --version(j&j&>https://docs.python.org/3/using/cmdline.html#cmdoption-versionj t--with-address-sanitizer(j&j&Ohttps://docs.python.org/3/using/configure.html#cmdoption-with-address-sanitizerj t--with-assertions(j&j&Hhttps://docs.python.org/3/using/configure.html#cmdoption-with-assertionsj t--with-build-python(j&j&Jhttps://docs.python.org/3/using/configure.html#cmdoption-with-build-pythonj t--with-builtin-hashlib-hashes(j&j&Thttps://docs.python.org/3/using/configure.html#cmdoption-with-builtin-hashlib-hashesj t--with-computed-gotos(j&j&Lhttps://docs.python.org/3/using/configure.html#cmdoption-with-computed-gotosj t--with-dbmliborder(j&j&Ihttps://docs.python.org/3/using/configure.html#cmdoption-with-dbmliborderj t --with-dtrace(j&j&Dhttps://docs.python.org/3/using/configure.html#cmdoption-with-dtracej t--with-emscripten-target(j&j&Ohttps://docs.python.org/3/using/configure.html#cmdoption-with-emscripten-targetj t--with-ensurepip(j&j&Ghttps://docs.python.org/3/using/configure.html#cmdoption-with-ensurepipj t--with-framework-name(j&j&Lhttps://docs.python.org/3/using/configure.html#cmdoption-with-framework-namej t--with-hash-algorithm(j&j&Lhttps://docs.python.org/3/using/configure.html#cmdoption-with-hash-algorithmj t --with-libc(j&j&Bhttps://docs.python.org/3/using/configure.html#cmdoption-with-libcj t --with-libm(j&j&Bhttps://docs.python.org/3/using/configure.html#cmdoption-with-libmj t --with-libs(j&j&Bhttps://docs.python.org/3/using/configure.html#cmdoption-with-libsj t --with-lto(j&j&Ahttps://docs.python.org/3/using/configure.html#cmdoption-with-ltoj t--with-memory-sanitizer(j&j&Nhttps://docs.python.org/3/using/configure.html#cmdoption-with-memory-sanitizerj t--with-openssl(j&j&Ehttps://docs.python.org/3/using/configure.html#cmdoption-with-opensslj t--with-openssl-rpath(j&j&Khttps://docs.python.org/3/using/configure.html#cmdoption-with-openssl-rpathj t--with-pkg-config(j&j&Hhttps://docs.python.org/3/using/configure.html#cmdoption-with-pkg-configj t--with-platlibdir(j&j&Hhttps://docs.python.org/3/using/configure.html#cmdoption-with-platlibdirj t--with-pydebug(j&j&Ehttps://docs.python.org/3/using/configure.html#cmdoption-with-pydebugj t--with-readline(j&j&Fhttps://docs.python.org/3/using/configure.html#cmdoption-with-readlinej t--with-ssl-default-suites(j&j&Phttps://docs.python.org/3/using/configure.html#cmdoption-with-ssl-default-suitesj t--with-strict-overflow(j&j&Mhttps://docs.python.org/3/using/configure.html#cmdoption-with-strict-overflowj t --with-suffix(j&j&Dhttps://docs.python.org/3/using/configure.html#cmdoption-with-suffixj t--with-system-expat(j&j&Jhttps://docs.python.org/3/using/configure.html#cmdoption-with-system-expatj t--with-system-libmpdec(j&j&Mhttps://docs.python.org/3/using/configure.html#cmdoption-with-system-libmpdecj t--with-trace-refs(j&j&Hhttps://docs.python.org/3/using/configure.html#cmdoption-with-trace-refsj t --with-tzpath(j&j&Dhttps://docs.python.org/3/using/configure.html#cmdoption-with-tzpathj t#--with-undefined-behavior-sanitizer(j&j&Zhttps://docs.python.org/3/using/configure.html#cmdoption-with-undefined-behavior-sanitizerj t--with-universal-archs(j&j&Mhttps://docs.python.org/3/using/configure.html#cmdoption-with-universal-archsj t--with-valgrind(j&j&Fhttps://docs.python.org/3/using/configure.html#cmdoption-with-valgrindj t--with-wheel-pkg-dir(j&j&Khttps://docs.python.org/3/using/configure.html#cmdoption-with-wheel-pkg-dirj t--without-c-locale-coercion(j&j&Rhttps://docs.python.org/3/using/configure.html#cmdoption-without-c-locale-coercionj t--without-decimal-contextvar(j&j&Shttps://docs.python.org/3/using/configure.html#cmdoption-without-decimal-contextvarj t--without-doc-strings(j&j&Lhttps://docs.python.org/3/using/configure.html#cmdoption-without-doc-stringsj t--without-freelists(j&j&Jhttps://docs.python.org/3/using/configure.html#cmdoption-without-freelistsj t--without-pymalloc(j&j&Ihttps://docs.python.org/3/using/configure.html#cmdoption-without-pymallocj t--without-readline(j&j&Ihttps://docs.python.org/3/using/configure.html#cmdoption-without-readlinej t--without-static-libpython(j&j&Qhttps://docs.python.org/3/using/configure.html#cmdoption-without-static-libpythonj t-?(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-0j t-B(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Bj t-E(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Ej t-I(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Ij t-J(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Jj t-O(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Oj t-OO(j&j&9https://docs.python.org/3/using/cmdline.html#cmdoption-OOj t-P(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Pj t-R(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Rj t-S(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Sj t-V(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Vj t-W(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Wj t-X(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-Xj t-b(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-bj t-c(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-cj t-d(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-dj t-h(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-hj t-i(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-ij t-m(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-mj t-q(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-qj t-s(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-sj t-u(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-uj t-v(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-vj t-x(j&j&8https://docs.python.org/3/using/cmdline.html#cmdoption-xj t CONFIG_SITE(j&j&Hhttps://docs.python.org/3/using/configure.html#cmdoption-arg-CONFIG_SITEj t ast.--help(j&j&:https://docs.python.org/3/library/ast.html#cmdoption-ast-hj tast.--include-attributes(j&j&:https://docs.python.org/3/library/ast.html#cmdoption-ast-aj t ast.--indent(j&j&?https://docs.python.org/3/library/ast.html#cmdoption-ast-indentj t ast.--mode(j&j&=https://docs.python.org/3/library/ast.html#cmdoption-ast-modej tast.--no-type-comments(j&j&Ihttps://docs.python.org/3/library/ast.html#cmdoption-ast-no-type-commentsj tast.-a(j&j&:https://docs.python.org/3/library/ast.html#cmdoption-ast-aj tast.-h(j&j&:https://docs.python.org/3/library/ast.html#cmdoption-ast-hj tast.-i(j&j&:https://docs.python.org/3/library/ast.html#cmdoption-ast-ij tast.-m(j&j&:https://docs.python.org/3/library/ast.html#cmdoption-ast-mj tcalendar.--css(j&j&Fhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-cssj tcalendar.--encoding(j&j&Khttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-encodingj tcalendar.--help(j&j&Ghttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-helpj tcalendar.--lines(j&j&Hhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-linesj tcalendar.--locale(j&j&Ihttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-localej tcalendar.--months(j&j&Ihttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-monthsj tcalendar.--spacing(j&j&Jhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-spacingj tcalendar.--type(j&j&Ghttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-typej tcalendar.--width(j&j&Hhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-widthj t calendar.-L(j&j&Ihttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-localej t calendar.-c(j&j&Fhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-cssj t calendar.-e(j&j&Khttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-encodingj t calendar.-h(j&j&Ghttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-helpj t calendar.-l(j&j&Hhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-linesj t calendar.-m(j&j&Ihttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-monthsj t calendar.-s(j&j&Jhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-spacingj t calendar.-t(j&j&Ghttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-typej t calendar.-w(j&j&Hhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-widthj tcalendar.month(j&j&Lhttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-arg-monthj t calendar.year(j&j&Khttps://docs.python.org/3/library/calendar.html#cmdoption-calendar-arg-yearj tcompileall.--hardlink-dupes(j&j&Uhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-hardlink-dupesj tcompileall.--invalidation-mode(j&j&Xhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-invalidation-modej t compileall.-b(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-bj t compileall.-d(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-dj t compileall.-e(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-ej t compileall.-f(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-fj t compileall.-i(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-ij t compileall.-j(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-jj t compileall.-l(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-lj t compileall.-o(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-oj t compileall.-p(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-pj t compileall.-q(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-qj t compileall.-r(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-rj t compileall.-s(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-sj t compileall.-x(j&j&Hhttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-xj tcompileall.directory(j&j&Thttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-arg-directoryj tcompileall.file(j&j&Ohttps://docs.python.org/3/library/compileall.html#cmdoption-compileall-arg-filej t dis.--help(j&j&:https://docs.python.org/3/library/dis.html#cmdoption-dis-hj tdis.-h(j&j&:https://docs.python.org/3/library/dis.html#cmdoption-dis-hj t gzip.--best(j&j&?https://docs.python.org/3/library/gzip.html#cmdoption-gzip-bestj tgzip.--decompress(j&j&(j&j&Xhttps://docs.python.org/3/library/py_compile.html#cmdoption-python-m-py_compile-arg-filej t3python--m-sqlite3-[-h]-[-v]-[filename]-[sql].--help(j&j&\https://docs.python.org/3/library/sqlite3.html#cmdoption-python-m-sqlite3-h-v-filename-sql-hj t6python--m-sqlite3-[-h]-[-v]-[filename]-[sql].--version(j&j&\https://docs.python.org/3/library/sqlite3.html#cmdoption-python-m-sqlite3-h-v-filename-sql-vj t/python--m-sqlite3-[-h]-[-v]-[filename]-[sql].-h(j&j&\https://docs.python.org/3/library/sqlite3.html#cmdoption-python-m-sqlite3-h-v-filename-sql-hj t/python--m-sqlite3-[-h]-[-v]-[filename]-[sql].-v(j&j&\https://docs.python.org/3/library/sqlite3.html#cmdoption-python-m-sqlite3-h-v-filename-sql-vj tsite.--user-base(j&j&Dhttps://docs.python.org/3/library/site.html#cmdoption-site-user-basej tsite.--user-site(j&j&Dhttps://docs.python.org/3/library/site.html#cmdoption-site-user-sitej ttarfile.--create(j&j&Ghttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-createj ttarfile.--extract(j&j&Hhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-extractj ttarfile.--filter(j&j&Ghttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-filterj ttarfile.--list(j&j&Ehttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-listj ttarfile.--test(j&j&Ehttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-testj ttarfile.--verbose(j&j&Bhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-vj t tarfile.-c(j&j&Bhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-cj t tarfile.-e(j&j&Bhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-ej t tarfile.-l(j&j&Bhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-lj t tarfile.-t(j&j&Bhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-tj t tarfile.-v(j&j&Bhttps://docs.python.org/3/library/tarfile.html#cmdoption-tarfile-vj t timeit.--help(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-hj ttimeit.--number(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-nj ttimeit.--process(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-pj ttimeit.--repeat(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-rj ttimeit.--setup(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-sj t timeit.--unit(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-uj ttimeit.--verbose(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-vj t timeit.-h(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-hj t timeit.-n(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-nj t timeit.-p(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-pj t timeit.-r(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-rj t timeit.-s(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-sj t timeit.-u(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-uj t timeit.-v(j&j&@https://docs.python.org/3/library/timeit.html#cmdoption-timeit-vj ttokenize.--exact(j&j&Dhttps://docs.python.org/3/library/tokenize.html#cmdoption-tokenize-ej ttokenize.--help(j&j&Dhttps://docs.python.org/3/library/tokenize.html#cmdoption-tokenize-hj t tokenize.-e(j&j&Dhttps://docs.python.org/3/library/tokenize.html#cmdoption-tokenize-ej t tokenize.-h(j&j&Dhttps://docs.python.org/3/library/tokenize.html#cmdoption-tokenize-hj t trace.--count(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-cj ttrace.--coverdir(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-Cj t trace.--file(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-fj t trace.--help(j&j&Ahttps://docs.python.org/3/library/trace.html#cmdoption-trace-helpj ttrace.--ignore-dir(j&j&Ghttps://docs.python.org/3/library/trace.html#cmdoption-trace-ignore-dirj ttrace.--ignore-module(j&j&Jhttps://docs.python.org/3/library/trace.html#cmdoption-trace-ignore-modulej ttrace.--listfuncs(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-lj ttrace.--missing(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-mj ttrace.--no-report(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-Rj ttrace.--report(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-rj ttrace.--summary(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-sj ttrace.--timing(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-gj t trace.--trace(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-tj ttrace.--trackcalls(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-Tj ttrace.--version(j&j&Dhttps://docs.python.org/3/library/trace.html#cmdoption-trace-versionj ttrace.-C(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-Cj ttrace.-R(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-Rj ttrace.-T(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-Tj ttrace.-c(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-cj ttrace.-f(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-fj ttrace.-g(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-gj ttrace.-l(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-lj ttrace.-m(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-mj ttrace.-r(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-rj ttrace.-s(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-sj ttrace.-t(j&j&>https://docs.python.org/3/library/trace.html#cmdoption-trace-tj tunittest-discover.--pattern(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-pj t#unittest-discover.--start-directory(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-sj t'unittest-discover.--top-level-directory(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-tj tunittest-discover.--verbose(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-vj tunittest-discover.-p(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-pj tunittest-discover.-s(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-sj tunittest-discover.-t(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-tj tunittest-discover.-v(j&j&Mhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-vj tunittest.--buffer(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-bj tunittest.--catch(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-cj tunittest.--durations(j&j&Lhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-durationsj tunittest.--failfast(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-fj tunittest.--locals(j&j&Ihttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-localsj t unittest.-b(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-bj t unittest.-c(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-cj t unittest.-f(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-fj t unittest.-k(j&j&Dhttps://docs.python.org/3/library/unittest.html#cmdoption-unittest-kj t uuid.--help(j&j&>>(j&j&.https://docs.python.org/3/glossary.html#term-0j tBDFL(j&j&1https://docs.python.org/3/glossary.html#term-BDFLj tCPython(j&j&4https://docs.python.org/3/glossary.html#term-CPythonj tEAFP(j&j&1https://docs.python.org/3/glossary.html#term-EAFPj tGIL(j&j&0https://docs.python.org/3/glossary.html#term-GILj tIDLE(j&j&1https://docs.python.org/3/glossary.html#term-IDLEj tLBYL(j&j&1https://docs.python.org/3/glossary.html#term-LBYLj tMRO(j&j&0https://docs.python.org/3/glossary.html#term-MROj tPEP(j&j&0https://docs.python.org/3/glossary.html#term-PEPj t Python 3000(j&j&8https://docs.python.org/3/glossary.html#term-Python-3000j tPythonic(j&j&5https://docs.python.org/3/glossary.html#term-Pythonicj t Zen of Python(j&j&:https://docs.python.org/3/glossary.html#term-Zen-of-Pythonj t __future__(j&j&7https://docs.python.org/3/glossary.html#term-__future__j t __slots__(j&j&6https://docs.python.org/3/glossary.html#term-__slots__j tabstract base class(j&j&@https://docs.python.org/3/glossary.html#term-abstract-base-classj t annotation(j&j&7https://docs.python.org/3/glossary.html#term-annotationj targument(j&j&5https://docs.python.org/3/glossary.html#term-argumentj tasynchronous context manager(j&j&Ihttps://docs.python.org/3/glossary.html#term-asynchronous-context-managerj tasynchronous generator(j&j&Chttps://docs.python.org/3/glossary.html#term-asynchronous-generatorj tasynchronous generator iterator(j&j&Lhttps://docs.python.org/3/glossary.html#term-asynchronous-generator-iteratorj tasynchronous iterable(j&j&Bhttps://docs.python.org/3/glossary.html#term-asynchronous-iterablej tasynchronous iterator(j&j&Bhttps://docs.python.org/3/glossary.html#term-asynchronous-iteratorj t attribute(j&j&6https://docs.python.org/3/glossary.html#term-attributej t awaitable(j&j&6https://docs.python.org/3/glossary.html#term-awaitablej t binary file(j&j&8https://docs.python.org/3/glossary.html#term-binary-filej tborrowed reference(j&j&?https://docs.python.org/3/glossary.html#term-borrowed-referencej tbytecode(j&j&5https://docs.python.org/3/glossary.html#term-bytecodej tbytes-like object(j&j&>https://docs.python.org/3/glossary.html#term-bytes-like-objectj tcallable(j&j&5https://docs.python.org/3/glossary.html#term-callablej tcallback(j&j&5https://docs.python.org/3/glossary.html#term-callbackj tclass(j&j&2https://docs.python.org/3/glossary.html#term-classj tclass variable(j&j&;https://docs.python.org/3/glossary.html#term-class-variablej tcomplex number(j&j&;https://docs.python.org/3/glossary.html#term-complex-numberj tcontext manager(j&j&https://docs.python.org/3/glossary.html#term-namespace-packagej t nested scope(j&j&9https://docs.python.org/3/glossary.html#term-nested-scopej tnew-style class(j&j&https://docs.python.org/3/glossary.html#term-path-based-finderj t path entry(j&j&7https://docs.python.org/3/glossary.html#term-path-entryj tpath entry finder(j&j&>https://docs.python.org/3/glossary.html#term-path-entry-finderj tpath entry hook(j&j&https://docs.python.org/3/glossary.html#term-set-comprehensionj tsingle dispatch(j&j&https://docs.python.org/3/c-api/intro.html#api-refcountdetailsReference Count Detailst api-refcounts(j&j&8https://docs.python.org/3/c-api/intro.html#api-refcountsReference Countst api-types(j&j&4https://docs.python.org/3/c-api/intro.html#api-typesTypest apiabiversion(j&j&@https://docs.python.org/3/c-api/apiabiversion.html#apiabiversionAPI and ABI Versioningt applications(j&j&:https://docs.python.org/3/library/struct.html#applications Applicationstarbitrary-object-messages(j&j&Fhttps://docs.python.org/3/howto/logging.html#arbitrary-object-messages#Using arbitrary objects as messagest archiving(j&j&:https://docs.python.org/3/library/archiving.html#archivingData Compression and Archivingtarchiving-operations(j&j&Bhttps://docs.python.org/3/library/shutil.html#archiving-operationsArchiving operationst arg-parsing(j&j&4https://docs.python.org/3/c-api/arg.html#arg-parsing%Parsing arguments and building valuestargparse-tutorial(j&j&?https://docs.python.org/3/howto/argparse.html#argparse-tutorialArgparse Tutorialt argparse-type(j&j&=https://docs.python.org/3/library/argparse.html#argparse-typetypetargs(j&j&4https://docs.python.org/3/library/argparse.html#argsBeyond sys.argvtas(j&j&:https://docs.python.org/3/reference/compound_stmts.html#asThe with statementt as-patterns(j&j&Chttps://docs.python.org/3/reference/compound_stmts.html#as-patterns AS Patternstassert(j&j&https://docs.python.org/3/library/unittest.html#assert-methodsj t assignment(j&j&@https://docs.python.org/3/reference/simple_stmts.html#assignmentAssignment statementstast-cli(j&j&2https://docs.python.org/3/library/ast.html#ast-cliCommand-Line Usagetast-compiler-flags(j&j&=https://docs.python.org/3/library/ast.html#ast-compiler-flagsCompiler Flagstast-expressions(j&j&:https://docs.python.org/3/library/ast.html#ast-expressions Expressionstast-root-nodes(j&j&9https://docs.python.org/3/library/ast.html#ast-root-nodes Root nodestast-statements(j&j&9https://docs.python.org/3/library/ast.html#ast-statements Statementstast-type-params(j&j&:https://docs.python.org/3/library/ast.html#ast-type-paramsType parameterstasync(j&j&=https://docs.python.org/3/reference/compound_stmts.html#async Coroutinest async def(j&j&Ahttps://docs.python.org/3/reference/compound_stmts.html#async-defCoroutine function definitiont async for(j&j&Ahttps://docs.python.org/3/reference/compound_stmts.html#async-forThe async for statementt async with(j&j&Bhttps://docs.python.org/3/reference/compound_stmts.html#async-withThe async with statementtasync-context-managers(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#async-context-managersAsynchronous Context Managerstasync-iterators(j&j&Bhttps://docs.python.org/3/reference/datamodel.html#async-iteratorsAsynchronous Iteratorst async-structs(j&j&:https://docs.python.org/3/c-api/typeobj.html#async-structsAsync Object Structurest asynchronous-generator-functions(j&j&Uhttps://docs.python.org/3/reference/expressions.html#asynchronous-generator-functions Asynchronous generator functionstasynchronous-generator-methods(j&j&Shttps://docs.python.org/3/reference/expressions.html#asynchronous-generator-methods'Asynchronous generator-iterator methodstasynchronous-programming(j&j&Fhttps://docs.python.org/3/library/typing.html#asynchronous-programming/Aliases to asynchronous ABCs in collections.abctasyncio-awaitables(j&j&Fhttps://docs.python.org/3/library/asyncio-task.html#asyncio-awaitables Awaitablest asyncio-cli(j&j&:https://docs.python.org/3/library/asyncio.html#asyncio-cli asyncio REPLtasyncio-coroutine-not-scheduled(j&j&Rhttps://docs.python.org/3/library/asyncio-dev.html#asyncio-coroutine-not-scheduledDetect never-awaited coroutinestasyncio-custom-policies(j&j&Mhttps://docs.python.org/3/library/asyncio-policy.html#asyncio-custom-policiesCustom Policiestasyncio-debug-mode(j&j&Ehttps://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode Debug Modetasyncio-delayed-calls(j&j&Nhttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-delayed-callsScheduling delayed callbackst asyncio-dev(j&j&>https://docs.python.org/3/library/asyncio-dev.html#asyncio-devDeveloping with asynciotasyncio-event-loop(j&j&Khttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-event-loop Event Loopt"asyncio-event-loop-implementations(j&j&[https://docs.python.org/3/library/asyncio-eventloop.html#asyncio-event-loop-implementationsEvent Loop Implementationstasyncio-event-loop-methods(j&j&Shttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-event-loop-methodsEvent Loop Methodstasyncio-event-loops(j&j&Lhttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-event-loopsEvent Loop Implementationstasyncio-exceptions(j&j&Lhttps://docs.python.org/3/library/asyncio-exceptions.html#asyncio-exceptions Exceptionstasyncio-futures(j&j&Ehttps://docs.python.org/3/library/asyncio-future.html#asyncio-futuresFuturestasyncio-handle-blocking(j&j&Jhttps://docs.python.org/3/library/asyncio-dev.html#asyncio-handle-blockingRunning Blocking Codetasyncio-logger(j&j&Ahttps://docs.python.org/3/library/asyncio-dev.html#asyncio-loggerLoggingtasyncio-multithreading(j&j&Ihttps://docs.python.org/3/library/asyncio-dev.html#asyncio-multithreadingConcurrency and Multithreadingtasyncio-pass-keywords(j&j&Nhttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-pass-keywordsj tasyncio-platform-support(j&j&Qhttps://docs.python.org/3/library/asyncio-platforms.html#asyncio-platform-supportPlatform Supporttasyncio-policies(j&j&Fhttps://docs.python.org/3/library/asyncio-policy.html#asyncio-policiesPoliciestasyncio-policy-builtin(j&j&Lhttps://docs.python.org/3/library/asyncio-policy.html#asyncio-policy-builtinj tasyncio-policy-get-set(j&j&Lhttps://docs.python.org/3/library/asyncio-policy.html#asyncio-policy-get-setGetting and Setting the Policytasyncio-policy-objects(j&j&Lhttps://docs.python.org/3/library/asyncio-policy.html#asyncio-policy-objectsPolicy Objectstasyncio-protocol(j&j&Hhttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-protocol Protocolstasyncio-queues(j&j&Chttps://docs.python.org/3/library/asyncio-queue.html#asyncio-queuesQueuestasyncio-streams(j&j&Ehttps://docs.python.org/3/library/asyncio-stream.html#asyncio-streamsStreamstasyncio-subprocess(j&j&Lhttps://docs.python.org/3/library/asyncio-subprocess.html#asyncio-subprocess Subprocessestasyncio-subprocess-protocols(j&j&Thttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-subprocess-protocolsSubprocess Protocolstasyncio-subprocess-threads(j&j&Thttps://docs.python.org/3/library/asyncio-subprocess.html#asyncio-subprocess-threadsSubprocess and Threadstasyncio-subprocess-transports(j&j&Uhttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-subprocess-transportsSubprocess Transportst asyncio-sync(j&j&@https://docs.python.org/3/library/asyncio-sync.html#asyncio-syncSynchronization Primitivestasyncio-tcp-echo-client-streams(j&j&Uhttps://docs.python.org/3/library/asyncio-stream.html#asyncio-tcp-echo-client-streamsTCP echo client using streamstasyncio-tcp-echo-server-streams(j&j&Uhttps://docs.python.org/3/library/asyncio-stream.html#asyncio-tcp-echo-server-streamsTCP echo server using streamstasyncio-transport(j&j&Ihttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-transport Transportstasyncio-transports-protocols(j&j&Thttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-transports-protocolsTransports and Protocolst asyncio-udp-echo-client-protocol(j&j&Xhttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-udp-echo-client-protocolUDP Echo Clientt asyncio-udp-echo-server-protocol(j&j&Xhttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-udp-echo-server-protocolUDP Echo Servertasyncio-watchers(j&j&Fhttps://docs.python.org/3/library/asyncio-policy.html#asyncio-watchersProcess Watcherstasyncio-windows-subprocess(j&j&Shttps://docs.python.org/3/library/asyncio-platforms.html#asyncio-windows-subprocessSubprocess Support on Windowstasyncio_example_barrier(j&j&Khttps://docs.python.org/3/library/asyncio-sync.html#asyncio-example-barrierj tasyncio_example_call_later(j&j&Shttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-example-call-later*Display the current date with call_later()t!asyncio_example_create_connection(j&j&Yhttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-example-create-connectionConnecting Existing Socketst)asyncio_example_create_connection-streams(j&j&_https://docs.python.org/3/library/asyncio-stream.html#asyncio-example-create-connection-streams6Register an open socket to wait for data using streamst&asyncio_example_create_subprocess_exec(j&j&`https://docs.python.org/3/library/asyncio-subprocess.html#asyncio-example-create-subprocess-execj tasyncio_example_future(j&j&Lhttps://docs.python.org/3/library/asyncio-future.html#asyncio-example-futurej tasyncio_example_gather(j&j&Jhttps://docs.python.org/3/library/asyncio-task.html#asyncio-example-gatherj t#asyncio_example_lowlevel_helloworld(j&j&\https://docs.python.org/3/library/asyncio-eventloop.html#asyncio-example-lowlevel-helloworldHello World with call_soon()tasyncio_example_queue_dist(j&j&Ohttps://docs.python.org/3/library/asyncio-queue.html#asyncio-example-queue-distj tasyncio_example_sleep(j&j&Ihttps://docs.python.org/3/library/asyncio-task.html#asyncio-example-sleepj tasyncio_example_stream(j&j&Lhttps://docs.python.org/3/library/asyncio-stream.html#asyncio-example-streamj t asyncio_example_subprocess_proto(j&j&Xhttps://docs.python.org/3/library/asyncio-protocol.html#asyncio-example-subprocess-proto-loop.subprocess_exec() and SubprocessProtocolt asyncio_example_subprocess_shell(j&j&Zhttps://docs.python.org/3/library/asyncio-subprocess.html#asyncio-example-subprocess-shellj tasyncio_example_sync_event(j&j&Nhttps://docs.python.org/3/library/asyncio-sync.html#asyncio-example-sync-eventj tasyncio_example_task_cancel(j&j&Ohttps://docs.python.org/3/library/asyncio-task.html#asyncio-example-task-cancelj t(asyncio_example_tcp_echo_client_protocol(j&j&`https://docs.python.org/3/library/asyncio-protocol.html#asyncio-example-tcp-echo-client-protocolTCP Echo Clientt(asyncio_example_tcp_echo_server_protocol(j&j&`https://docs.python.org/3/library/asyncio-protocol.html#asyncio-example-tcp-echo-server-protocolTCP Echo Servertasyncio_example_unix_signals(j&j&Uhttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-example-unix-signals*Set signal handlers for SIGINT and SIGTERMtasyncio_example_waitfor(j&j&Khttps://docs.python.org/3/library/asyncio-task.html#asyncio-example-waitforj tasyncio_example_watch_fd(j&j&Qhttps://docs.python.org/3/library/asyncio-eventloop.html#asyncio-example-watch-fd'Watch a file descriptor for read eventstatexit-example(j&j&https://docs.python.org/3/library/bisect.html#bisect-functionsj tbisect-example(j&j&https://docs.python.org/3/whatsnew/3.8.html#bpo-36085-whatsnewj tbpo-36817-whatsnew(j&j&>https://docs.python.org/3/whatsnew/3.8.html#bpo-36817-whatsnewBf-strings support = for self-documenting expressions and debuggingtbreak(j&j&;https://docs.python.org/3/reference/simple_stmts.html#breakThe break statementtbrowser-controllers(j&j&Ehttps://docs.python.org/3/library/webbrowser.html#browser-controllersBrowser Controller Objectstbsd0(j&j&+https://docs.python.org/3/license.html#bsd0CZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON 3.12.5 DOCUMENTATIONtbuffer-request-types(j&j&@https://docs.python.org/3/c-api/buffer.html#buffer-request-typesBuffer request typestbuffer-structs(j&j&;https://docs.python.org/3/c-api/typeobj.html#buffer-structsBuffer Object Structurestbuffer-structure(j&j&https://docs.python.org/3/c-api/arg.html#c-arg-borrowed-bufferj t c-preinit(j&j&:https://docs.python.org/3/c-api/init_config.html#c-preinit%Preinitialize Python with PyPreConfigtc-wrapper-software(j&j&?https://docs.python.org/3/faq/extending.html#c-wrapper-software.Writing C is hard; are there any alternatives?tc99(j&j&.https://docs.python.org/3/library/sys.html#c99j tcab(j&j&1https://docs.python.org/3/library/msilib.html#cab CAB Objectstcacheftp-handler-objects(j&j&Nhttps://docs.python.org/3/library/urllib.request.html#cacheftp-handler-objectsCacheFTPHandler Objectst calendar-cli(j&j&https://docs.python.org/3/c-api/structures.html#common-structsCommon Object Structurestcomparison-with-json(j&j&Bhttps://docs.python.org/3/library/pickle.html#comparison-with-jsonComparison with jsont comparisons(j&j&@https://docs.python.org/3/reference/expressions.html#comparisons Comparisonstcompat32_message(j&j&Nhttps://docs.python.org/3/library/email.compat32-message.html#compat32-messageKemail.message.Message: Representing an email message using the compat32 APIt compilation(j&j&>https://docs.python.org/3/extending/extending.html#compilationCompilation and Linkagetcompileall-cli(j&j&@https://docs.python.org/3/library/compileall.html#compileall-cliCommand-line uset compiling(j&j&https://docs.python.org/3/library/concurrency.html#concurrencyConcurrent Executiontcondition-objects(j&j&Bhttps://docs.python.org/3/library/threading.html#condition-objectsCondition Objectstconfigparser-objects(j&j&Hhttps://docs.python.org/3/library/configparser.html#configparser-objectsConfigParser Objectstconfigure-options(j&j&@https://docs.python.org/3/using/configure.html#configure-optionsConfigure Optionstconfigure-queue(j&j&Ehttps://docs.python.org/3/library/logging.config.html#configure-queue*Configuring QueueHandler and QueueListenertconsole-objects(j&j&;https://docs.python.org/3/library/code.html#console-objectsInteractive Console Objectstconst(j&j&5https://docs.python.org/3/library/argparse.html#constj t constants(j&j&7https://docs.python.org/3/library/winreg.html#constants Constantstcontent-handler-objects(j&j&Nhttps://docs.python.org/3/library/xml.sax.handler.html#content-handler-objectsContentHandler Objectstcontents-of-module-re(j&j&?https://docs.python.org/3/library/re.html#contents-of-module-reModule Contentst context-info(j&j&Bhttps://docs.python.org/3/howto/logging-cookbook.html#context-info4Adding contextual information to your logging outputtcontext-manager(j&j&Ehttps://docs.python.org/3/howto/logging-cookbook.html#context-manager-Using a context manager for selective loggingtcontext-manager-types(j&j&Chttps://docs.python.org/3/library/typing.html#context-manager-typesAliases to contextlib ABCstcontext-managers(j&j&Chttps://docs.python.org/3/reference/datamodel.html#context-managersWith Statement Context Managerst contextlibmod(j&j&9https://docs.python.org/3/whatsnew/2.5.html#contextlibmodThe contextlib moduletcontextvarsobjects(j&j&Chttps://docs.python.org/3/c-api/contextvars.html#contextvarsobjectsContext Variables Objectst%contextvarsobjects_pointertype_change(j&j&Vhttps://docs.python.org/3/c-api/contextvars.html#contextvarsobjects-pointertype-changej tcontinue(j&j&>https://docs.python.org/3/reference/simple_stmts.html#continueThe continue statementtcontributing-to-python(j&j&:https://docs.python.org/3/bugs.html#contributing-to-python/Getting started contributing to Python yourselft conversions(j&j&@https://docs.python.org/3/reference/expressions.html#conversionsArithmetic conversionstconverting-argument-sequence(j&j&Nhttps://docs.python.org/3/library/subprocess.html#converting-argument-sequence6Converting an argument sequence to a string on Windowstcookbook-ref-links(j&j&Hhttps://docs.python.org/3/howto/logging-cookbook.html#cookbook-ref-linksOther resourcestcookbook-rotator-namer(j&j&Lhttps://docs.python.org/3/howto/logging-cookbook.html#cookbook-rotator-namer>Using a rotator and namer to customize log rotation processingtcookie-example(j&j&Bhttps://docs.python.org/3/library/http.cookies.html#cookie-exampleExampletcookie-jar-objects(j&j&Hhttps://docs.python.org/3/library/http.cookiejar.html#cookie-jar-objects#CookieJar and FileCookieJar Objectstcookie-objects(j&j&Bhttps://docs.python.org/3/library/http.cookies.html#cookie-objectsCookie Objectstcookie-policy-objects(j&j&Khttps://docs.python.org/3/library/http.cookiejar.html#cookie-policy-objectsCookiePolicy Objectst coro-objects(j&j&6https://docs.python.org/3/c-api/coro.html#coro-objectsCoroutine Objectst coroutine(j&j&=https://docs.python.org/3/library/asyncio-task.html#coroutine Coroutinestcoroutine-objects(j&j&Dhttps://docs.python.org/3/reference/datamodel.html#coroutine-objectsCoroutine Objectstcorresponding-to-built-in-types(j&j&Mhttps://docs.python.org/3/library/typing.html#corresponding-to-built-in-typesAliases to built-in typest/corresponding-to-collections-in-collections-abc(j&j&]https://docs.python.org/3/library/typing.html#corresponding-to-collections-in-collections-abc,Aliases to container ABCs in collections.abct/corresponding-to-other-types-in-collections-abc(j&j&]https://docs.python.org/3/library/typing.html#corresponding-to-other-types-in-collections-abc(Aliases to other ABCs in collections.abct%corresponding-to-types-in-collections(j&j&Shttps://docs.python.org/3/library/typing.html#corresponding-to-types-in-collectionsAliases to types in collectionst countingrefs(j&j&=https://docs.python.org/3/c-api/refcounting.html#countingrefsReference Countingt cplusplus(j&j&https://docs.python.org/3/library/ctypes.html#ctypes-surprises Surprisestctypes-type-conversions(j&j&Ehttps://docs.python.org/3/library/ctypes.html#ctypes-type-conversionsType conversionstctypes-utility-functions(j&j&Fhttps://docs.python.org/3/library/ctypes.html#ctypes-utility-functionsUtility functionst ctypes-variable-sized-data-types(j&j&Nhttps://docs.python.org/3/library/ctypes.html#ctypes-variable-sized-data-typesVariable-sized data typestcurses-acs-codes(j&j&>https://docs.python.org/3/library/curses.html#curses-acs-codesj tcurses-functions(j&j&>https://docs.python.org/3/library/curses.html#curses-functions Functionst curses-howto(j&j&8https://docs.python.org/3/howto/curses.html#curses-howtoCurses Programming with Pythontcurses-panel-objects(j&j&Hhttps://docs.python.org/3/library/curses.panel.html#curses-panel-objects Panel Objectstcurses-textpad-objects(j&j&Dhttps://docs.python.org/3/library/curses.html#curses-textpad-objectsTextbox objectstcurses-window-objects(j&j&Chttps://docs.python.org/3/library/curses.html#curses-window-objectsWindow Objectstcursespanel-functions(j&j&Ihttps://docs.python.org/3/library/curses.panel.html#cursespanel-functions Functionstcustom-format-exception(j&j&Mhttps://docs.python.org/3/howto/logging-cookbook.html#custom-format-exceptionCustomized exception formattingtcustom-handlers(j&j&Ehttps://docs.python.org/3/howto/logging-cookbook.html#custom-handlers&Customizing handlers with dictConfig()tcustom-level-handling(j&j&Khttps://docs.python.org/3/howto/logging-cookbook.html#custom-level-handlingCustom handling of levelst custom-levels(j&j&:https://docs.python.org/3/howto/logging.html#custom-levels Custom Levelstcustom-logrecord(j&j&Fhttps://docs.python.org/3/howto/logging-cookbook.html#custom-logrecordCustomizing LogRecordt custominterp(j&j&@https://docs.python.org/3/library/custominterp.html#custominterpCustom Python Interpreterst customization(j&j&@https://docs.python.org/3/reference/datamodel.html#customizationBasic customizationtcustomize-memory-allocators(j&j&Ghttps://docs.python.org/3/c-api/memory.html#customize-memory-allocatorsCustomize Memory Allocatorstdata-handler-objects(j&j&Jhttps://docs.python.org/3/library/urllib.request.html#data-handler-objectsDataHandler Objectstdatabase-objects(j&j&>https://docs.python.org/3/library/msilib.html#database-objectsDatabase Objectstdataclasses-class-variables(j&j&Nhttps://docs.python.org/3/library/dataclasses.html#dataclasses-class-variablesClass variablestdataclasses-frozen(j&j&Ehttps://docs.python.org/3/library/dataclasses.html#dataclasses-frozenFrozen instancestdataclasses-inheritance(j&j&Jhttps://docs.python.org/3/library/dataclasses.html#dataclasses-inheritance Inheritancetdataclasses-init-only-variables(j&j&Rhttps://docs.python.org/3/library/dataclasses.html#dataclasses-init-only-variablesInit-only variablestdatagram-handler(j&j&Hhttps://docs.python.org/3/library/logging.handlers.html#datagram-handlerDatagramHandlert datamodel(j&j&https://docs.python.org/3/library/decimal.html#decimal-contextContext objectstdecimal-decimal(j&j&>https://docs.python.org/3/library/decimal.html#decimal-decimalDecimal objectst decimal-faq(j&j&:https://docs.python.org/3/library/decimal.html#decimal-faq Decimal FAQt decimal-notes(j&j&https://docs.python.org/3/library/decimal.html#decimal-recipesRecipestdecimal-rounding-modes(j&j&Ehttps://docs.python.org/3/library/decimal.html#decimal-rounding-modes Constantstdecimal-signals(j&j&>https://docs.python.org/3/library/decimal.html#decimal-signalsSignalstdecimal-threads(j&j&>https://docs.python.org/3/library/decimal.html#decimal-threadsWorking with threadstdecimal-tutorial(j&j&?https://docs.python.org/3/library/decimal.html#decimal-tutorialQuick-start Tutorialtdecompress-wbits(j&j&https://docs.python.org/3/reference/datamodel.html#descriptorsImplementing Descriptorstdest(j&j&4https://docs.python.org/3/library/argparse.html#destj tdeterministic-profiling(j&j&Fhttps://docs.python.org/3/library/profile.html#deterministic-profiling What Is Deterministic Profiling?t development(j&j&>https://docs.python.org/3/library/development.html#developmentDevelopment Toolstdevmode(j&j&6https://docs.python.org/3/library/devmode.html#devmodePython Development Modetdevpoll-objects(j&j&=https://docs.python.org/3/library/select.html#devpoll-objects/dev/poll Polling Objectstdict(j&j&9https://docs.python.org/3/reference/expressions.html#dictDictionary displayst dict-views(j&j&:https://docs.python.org/3/library/stdtypes.html#dict-viewsDictionary view objectst dictobjects(j&j&5https://docs.python.org/3/c-api/dict.html#dictobjectsDictionary Objectstdiffer-examples(j&j&>https://docs.python.org/3/library/difflib.html#differ-examplesDiffer Exampletdiffer-objects(j&j&=https://docs.python.org/3/library/difflib.html#differ-objectsDiffer Objectstdifflib-interface(j&j&@https://docs.python.org/3/library/difflib.html#difflib-interface#A command-line interface to difflibtdir_fd(j&j&0https://docs.python.org/3/library/os.html#dir-fdj tdircmp-objects(j&j&=https://docs.python.org/3/library/filecmp.html#dircmp-objectsThe dircmp classtdis-cli(j&j&2https://docs.python.org/3/library/dis.html#dis-cliCommand-line interfacetdisable_posix_spawn(j&j&Ehttps://docs.python.org/3/library/subprocess.html#disable-posix-spawn)Disabling use of vfork() or posix_spawn()t disable_vfork(j&j&?https://docs.python.org/3/library/subprocess.html#disable-vfork)Disabling use of vfork() or posix_spawn()tdistinct(j&j&6https://docs.python.org/3/library/typing.html#distinctNewTypetdistributing-index(j&j&Dhttps://docs.python.org/3/distributing/index.html#distributing-indexDistributing Python Modulest+distributing-python-applications-on-the-mac(j&j&Thttps://docs.python.org/3/using/mac.html#distributing-python-applications-on-the-mac Distributing Python Applicationst distributions(j&j&Ghttps://docs.python.org/3/library/importlib.metadata.html#distributions Distributionstdistutils-deprecated(j&j&Ahttps://docs.python.org/3/whatsnew/3.10.html#distutils-deprecated distutilst dnt-basics(j&j&Ehttps://docs.python.org/3/extending/newtypes_tutorial.html#dnt-basics The Basicstdnt-type-methods(j&j&Bhttps://docs.python.org/3/extending/newtypes.html#dnt-type-methodsj tdoc-xmlrpc-servers(j&j&Ghttps://docs.python.org/3/library/xmlrpc.server.html#doc-xmlrpc-serversDocXMLRPCServer Objectstdoctest-advanced-api(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest-advanced-api Advanced APItdoctest-basic-api(j&j&@https://docs.python.org/3/library/doctest.html#doctest-basic-api Basic APItdoctest-debugging(j&j&@https://docs.python.org/3/library/doctest.html#doctest-debugging Debuggingtdoctest-directives(j&j&Ahttps://docs.python.org/3/library/doctest.html#doctest-directives Directivestdoctest-doctest(j&j&>https://docs.python.org/3/library/doctest.html#doctest-doctestDocTest Objectstdoctest-doctestfinder(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest-doctestfinderDocTestFinder objectstdoctest-doctestparser(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest-doctestparserDocTestParser objectstdoctest-doctestrunner(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest-doctestrunnerDocTestRunner objectstdoctest-example(j&j&>https://docs.python.org/3/library/doctest.html#doctest-exampleExample Objectstdoctest-exceptions(j&j&Ahttps://docs.python.org/3/library/doctest.html#doctest-exceptionsWhat About Exceptions?tdoctest-execution-context(j&j&Hhttps://docs.python.org/3/library/doctest.html#doctest-execution-contextWhat’s the Execution Context?tdoctest-finding-examples(j&j&Ghttps://docs.python.org/3/library/doctest.html#doctest-finding-examples&How are Docstring Examples Recognized?tdoctest-how-it-works(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest-how-it-works How It Workstdoctest-options(j&j&>https://docs.python.org/3/library/doctest.html#doctest-options Option Flagstdoctest-outputchecker(j&j&Dhttps://docs.python.org/3/library/doctest.html#doctest-outputcheckerOutputChecker objectstdoctest-simple-testfile(j&j&Fhttps://docs.python.org/3/library/doctest.html#doctest-simple-testfile.Simple Usage: Checking Examples in a Text Filetdoctest-simple-testmod(j&j&Ehttps://docs.python.org/3/library/doctest.html#doctest-simple-testmod-Simple Usage: Checking Examples in Docstringstdoctest-soapbox(j&j&>https://docs.python.org/3/library/doctest.html#doctest-soapboxSoapboxtdoctest-unittest-api(j&j&Chttps://docs.python.org/3/library/doctest.html#doctest-unittest-api Unittest APItdoctest-warnings(j&j&?https://docs.python.org/3/library/doctest.html#doctest-warningsWarningstdoctest-which-docstrings(j&j&Ghttps://docs.python.org/3/library/doctest.html#doctest-which-docstringsWhich Docstrings Are Examined?tdom-accessor-methods(j&j&Chttps://docs.python.org/3/library/xml.dom.html#dom-accessor-methodsAccessor Methodstdom-attr-objects(j&j&?https://docs.python.org/3/library/xml.dom.html#dom-attr-objects Attr Objectstdom-attributelist-objects(j&j&Hhttps://docs.python.org/3/library/xml.dom.html#dom-attributelist-objectsNamedNodeMap Objectstdom-comment-objects(j&j&Bhttps://docs.python.org/3/library/xml.dom.html#dom-comment-objectsComment Objectstdom-conformance(j&j&>https://docs.python.org/3/library/xml.dom.html#dom-conformance Conformancetdom-document-objects(j&j&Chttps://docs.python.org/3/library/xml.dom.html#dom-document-objectsDocument Objectstdom-documenttype-objects(j&j&Ghttps://docs.python.org/3/library/xml.dom.html#dom-documenttype-objectsDocumentType Objectstdom-element-objects(j&j&Bhttps://docs.python.org/3/library/xml.dom.html#dom-element-objectsElement Objectst dom-example(j&j&Bhttps://docs.python.org/3/library/xml.dom.minidom.html#dom-example DOM Exampletdom-exceptions(j&j&=https://docs.python.org/3/library/xml.dom.html#dom-exceptions Exceptionstdom-implementation-objects(j&j&Ihttps://docs.python.org/3/library/xml.dom.html#dom-implementation-objectsDOMImplementation Objectstdom-node-objects(j&j&?https://docs.python.org/3/library/xml.dom.html#dom-node-objects Node Objectstdom-nodelist-objects(j&j&Chttps://docs.python.org/3/library/xml.dom.html#dom-nodelist-objectsNodeList Objectst dom-objects(j&j&:https://docs.python.org/3/library/xml.dom.html#dom-objectsObjects in the DOMtdom-pi-objects(j&j&=https://docs.python.org/3/library/xml.dom.html#dom-pi-objectsProcessingInstruction Objectstdom-text-objects(j&j&?https://docs.python.org/3/library/xml.dom.html#dom-text-objectsText and CDATASection Objectstdom-type-mapping(j&j&?https://docs.python.org/3/library/xml.dom.html#dom-type-mapping Type Mappingtdomeventstream-objects(j&j&Mhttps://docs.python.org/3/library/xml.dom.pulldom.html#domeventstream-objectsDOMEventStream Objectstdtd-handler-objects(j&j&Jhttps://docs.python.org/3/library/xml.sax.handler.html#dtd-handler-objectsDTDHandler Objectstdynamic-features(j&j&Hhttps://docs.python.org/3/reference/executionmodel.html#dynamic-features!Interaction with dynamic featurestdynamic-linking(j&j&@https://docs.python.org/3/extending/windows.html#dynamic-linking$Differences Between Unix and Windowsteager-task-factory(j&j&Fhttps://docs.python.org/3/library/asyncio-task.html#eager-task-factoryEager Task Factorytediting-and-navigation(j&j&Bhttps://docs.python.org/3/library/idle.html#editing-and-navigationEditing and Navigationteditors(j&j&4https://docs.python.org/3/using/editors.html#editorsEditors and IDEstefficient_string_concatenation(j&j&Mhttps://docs.python.org/3/faq/programming.html#efficient-string-concatenationDWhat is the most efficient way to concatenate many strings together?telementinclude-functions(j&j&Uhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementinclude-functions Functionstelementtree-element-objects(j&j&Xhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-element-objectsElement Objectstelementtree-elementtree-objects(j&j&\https://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-elementtree-objectsElementTree Objectstelementtree-functions(j&j&Rhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-functions Functionstelementtree-parsing-xml(j&j&Thttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-parsing-xml Parsing XMLtelementtree-pull-parsing(j&j&Uhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-pull-parsing!Pull API for non-blocking parsingtelementtree-qname-objects(j&j&Vhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-qname-objects QName Objectstelementtree-section(j&j&?https://docs.python.org/3/whatsnew/2.7.html#elementtree-sectionUpdated module: ElementTree 1.3telementtree-treebuilder-objects(j&j&\https://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-treebuilder-objectsTreeBuilder Objectstelementtree-xinclude(j&j&Qhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xincludeXInclude supporttelementtree-xmlparser-objects(j&j&Zhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xmlparser-objectsXMLParser Objectst!elementtree-xmlpullparser-objects(j&j&^https://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xmlpullparser-objectsXMLPullParser Objectstelementtree-xpath(j&j&Nhttps://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xpath XPath supporttelif(j&j&https://docs.python.org/3/library/locale.html#embedding-locale4For extension writers and programs that embed Pythontembeddingincplusplus(j&j&Ghttps://docs.python.org/3/extending/embedding.html#embeddingincplusplusEmbedding Python in C++t encodings(j&j&Chttps://docs.python.org/3/reference/lexical_analysis.html#encodingsEncoding declarationstencodings-overview(j&j&@https://docs.python.org/3/library/codecs.html#encodings-overviewEncodings and Unicodetentity-resolver-objects(j&j&Nhttps://docs.python.org/3/library/xml.sax.handler.html#entity-resolver-objectsEntityResolver Objectst entry-points(j&j&Fhttps://docs.python.org/3/library/importlib.metadata.html#entry-points Entry pointstenum-advanced-tutorial(j&j&@https://docs.python.org/3/howto/enum.html#enum-advanced-tutorial?Programmatic access to enumeration members and their attributestenum-basic-tutorial(j&j&=https://docs.python.org/3/howto/enum.html#enum-basic-tutorialj tenum-class-differences(j&j&@https://docs.python.org/3/howto/enum.html#enum-class-differences"How are Enums and Flags different?t enum-cookbook(j&j&7https://docs.python.org/3/howto/enum.html#enum-cookbook Enum Cookbooktenum-dataclass-support(j&j&@https://docs.python.org/3/howto/enum.html#enum-dataclass-supportDataclass supporttenum-time-period(j&j&:https://docs.python.org/3/howto/enum.html#enum-time-period TimePeriodtenumtype-examples(j&j&;https://docs.python.org/3/howto/enum.html#enumtype-examplesSubclassing EnumTypetepoch(j&j&1https://docs.python.org/3/library/time.html#epochj t epoll-objects(j&j&;https://docs.python.org/3/library/select.html#epoll-objects.Edge and Level Trigger Polling (epoll) Objectsterror-handlers(j&j&https://docs.python.org/3/reference/expressions.html#evalorderEvaluation ordert event-objects(j&j&>https://docs.python.org/3/library/threading.html#event-objects Event Objectstexcept(j&j&>https://docs.python.org/3/reference/compound_stmts.html#except except clauset except_else(j&j&Chttps://docs.python.org/3/reference/compound_stmts.html#except-else else clauset except_star(j&j&Chttps://docs.python.org/3/reference/compound_stmts.html#except-starexcept* clausetexception-changed(j&j&?https://docs.python.org/3/library/winreg.html#exception-changedj texceptionhandling(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#exceptionhandlingException Handlingt exceptions(j&j&Bhttps://docs.python.org/3/reference/executionmodel.html#exceptions Exceptionst execmodel(j&j&Ahttps://docs.python.org/3/reference/executionmodel.html#execmodelExecution modeltexpat-content-models(j&j&Chttps://docs.python.org/3/library/pyexpat.html#expat-content-modelsContent Model Descriptionst expat-errors(j&j&;https://docs.python.org/3/library/pyexpat.html#expat-errorsExpat error constantst expat-example(j&j&https://docs.python.org/3/reference/expressions.html#exprlistsExpression listst exprstmts(j&j&?https://docs.python.org/3/reference/simple_stmts.html#exprstmtsExpression statementstextending-errors(j&j&Chttps://docs.python.org/3/extending/extending.html#extending-errors!Intermezzo: Errors and Exceptionstextending-index(j&j&>https://docs.python.org/3/extending/index.html#extending-index.Extending and Embedding the Python Interpretertextending-intro(j&j&Bhttps://docs.python.org/3/extending/extending.html#extending-introExtending Python with C or C++textending-simpleexample(j&j&Jhttps://docs.python.org/3/extending/extending.html#extending-simpleexampleA Simple Exampletextending-with-embedding(j&j&Khttps://docs.python.org/3/extending/embedding.html#extending-with-embeddingExtending Embedded Pythont f-strings(j&j&Chttps://docs.python.org/3/reference/lexical_analysis.html#f-stringsj tfaq-argument-vs-parameter(j&j&Hhttps://docs.python.org/3/faq/programming.html#faq-argument-vs-parameter8What is the difference between arguments and parameters?t$faq-augmented-assignment-tuple-error(j&j&Shttps://docs.python.org/3/faq/programming.html#faq-augmented-assignment-tuple-errorOWhy does a_tuple[i] += [‘item’] raise an exception when the addition works?tfaq-cache-method-calls(j&j&Ehttps://docs.python.org/3/faq/programming.html#faq-cache-method-callsHow do I cache method calls?tfaq-create-standalone-binary(j&j&Khttps://docs.python.org/3/faq/programming.html#faq-create-standalone-binary;How can I create a stand-alone binary from a Python script?t faq-index(j&j&2https://docs.python.org/3/faq/index.html#faq-index!Python Frequently Asked Questionstfaq-multidimensional-list(j&j&Hhttps://docs.python.org/3/faq/programming.html#faq-multidimensional-list(How do I create a multidimensional list?tfaq-positional-only-arguments(j&j&Lhttps://docs.python.org/3/faq/programming.html#faq-positional-only-arguments@What does the slash(/) in the parameter list of a function mean?t$faq-programming-raw-string-backslash(j&j&Shttps://docs.python.org/3/faq/programming.html#faq-programming-raw-string-backslash9Can I end a raw string with an odd number of backslashes?tfaq-run-program-under-windows(j&j&Hhttps://docs.python.org/3/faq/windows.html#faq-run-program-under-windows,How do I run a Python program under Windows?tfaq-unboundlocalerror(j&j&Dhttps://docs.python.org/3/faq/programming.html#faq-unboundlocalerrorDWhy am I getting an UnboundLocalError when the variable has a value?tfaq-version-numbering-scheme(j&j&Ghttps://docs.python.org/3/faq/general.html#faq-version-numbering-scheme2How does the Python version numbering scheme work?tfaster-cpython-faq-memory(j&j&Fhttps://docs.python.org/3/whatsnew/3.11.html#faster-cpython-faq-memory"Will CPython 3.11 use more memory?tfaster-cpython-faq-my-code(j&j&Ghttps://docs.python.org/3/whatsnew/3.11.html#faster-cpython-faq-my-code5How should I write my code to utilize these speedups?tfaster-cpython-jit(j&j&?https://docs.python.org/3/whatsnew/3.11.html#faster-cpython-jitIs there a JIT compiler?tfaster-cpython-ymmv(j&j&@https://docs.python.org/3/whatsnew/3.11.html#faster-cpython-ymmv/I don’t see any speedups in my workload. Why?t fault-objects(j&j&Bhttps://docs.python.org/3/library/xmlrpc.client.html#fault-objects Fault Objectstfaulthandler-fd(j&j&Chttps://docs.python.org/3/library/faulthandler.html#faulthandler-fdIssue with file descriptorstfd_inheritance(j&j&8https://docs.python.org/3/library/os.html#fd-inheritanceInheritance of File Descriptorstfeatures(j&j&6https://docs.python.org/3/library/msilib.html#featuresFeaturestfile-cookie-jar-classes(j&j&Mhttps://docs.python.org/3/library/http.cookiejar.html#file-cookie-jar-classes;FileCookieJar subclasses and co-operation with web browserst file-handler(j&j&Dhttps://docs.python.org/3/library/logging.handlers.html#file-handler FileHandlertfile-handler-objects(j&j&Jhttps://docs.python.org/3/library/urllib.request.html#file-handler-objectsFileHandler Objectst file-input(j&j&Ghttps://docs.python.org/3/reference/toplevel_components.html#file-input File inputtfile-operations(j&j&=https://docs.python.org/3/library/shutil.html#file-operationsDirectory and files operationst fileformats(j&j&>https://docs.python.org/3/library/fileformats.html#fileformats File Formatst filemodes(j&j&:https://docs.python.org/3/library/functions.html#filemodesj t fileobjects(j&j&5https://docs.python.org/3/c-api/file.html#fileobjects File Objectstfiles(j&j&?https://docs.python.org/3/library/importlib.metadata.html#filesDistribution filestfilesys(j&j&6https://docs.python.org/3/library/filesys.html#filesysFile and Directory Accesstfilesystem-encoding(j&j&=https://docs.python.org/3/library/os.html#filesystem-encoding=File Names, Command Line Arguments, and Environment Variablestfilter(j&j&5https://docs.python.org/3/library/logging.html#filterFilter Objectstfilter-chain-specs(j&j&>https://docs.python.org/3/library/lzma.html#filter-chain-specsSpecifying custom filter chainstfilters-contextual(j&j&Hhttps://docs.python.org/3/howto/logging-cookbook.html#filters-contextual.Using Filters to impart contextual informationtfilters-dictconfig(j&j&Hhttps://docs.python.org/3/howto/logging-cookbook.html#filters-dictconfig%Configuring filters with dictConfig()tfinalize-examples(j&j&@https://docs.python.org/3/library/weakref.html#finalize-examplesFinalizer Objectstfinally(j&j&?https://docs.python.org/3/reference/compound_stmts.html#finallyfinally clausetfinders-and-loaders(j&j&Chttps://docs.python.org/3/reference/import.html#finders-and-loadersFinders and loaderstfloating(j&j&Bhttps://docs.python.org/3/reference/lexical_analysis.html#floatingFloating-point literalst floatobjects(j&j&7https://docs.python.org/3/c-api/float.html#floatobjectsFloating-Point Objectstfollow_symlinks(j&j&9https://docs.python.org/3/library/os.html#follow-symlinksj tfor(j&j&;https://docs.python.org/3/reference/compound_stmts.html#forThe for statementtfork-and-threads(j&j&:https://docs.python.org/3/c-api/init.html#fork-and-threadsCautions about fork()tformat-characters(j&j&?https://docs.python.org/3/library/struct.html#format-charactersFormat Characterst format-codes(j&j&Using particular formatting styles throughout your applicationt frame-objects(j&j&@https://docs.python.org/3/reference/datamodel.html#frame-objects Frame objectst frameworks(j&j&https://docs.python.org/3/library/ftplib.html#ftplib-reference Referencetfull-grammar-specification(j&j&Khttps://docs.python.org/3/reference/grammar.html#full-grammar-specificationFull Grammar specificationtfunc-bytearray(j&j&?https://docs.python.org/3/library/functions.html#func-bytearrayj t func-bytes(j&j&;https://docs.python.org/3/library/functions.html#func-bytesj t func-dict(j&j&:https://docs.python.org/3/library/functions.html#func-dictj t func-eval(j&j&:https://docs.python.org/3/library/functions.html#func-evalj tfunc-frozenset(j&j&?https://docs.python.org/3/library/functions.html#func-frozensetj t func-list(j&j&:https://docs.python.org/3/library/functions.html#func-listj tfunc-memoryview(j&j&@https://docs.python.org/3/library/functions.html#func-memoryviewj t func-range(j&j&;https://docs.python.org/3/library/functions.html#func-rangej tfunc-set(j&j&9https://docs.python.org/3/library/functions.html#func-setj tfunc-str(j&j&9https://docs.python.org/3/library/functions.html#func-strj t func-tuple(j&j&;https://docs.python.org/3/library/functions.html#func-tuplej tfunction(j&j&@https://docs.python.org/3/reference/compound_stmts.html#functionFunction definitionstfunction-objects(j&j&>https://docs.python.org/3/c-api/function.html#function-objectsFunction Objectstfunctional-howto-iterators(j&j&Jhttps://docs.python.org/3/howto/functional.html#functional-howto-iterators Iteratorst functions(j&j&7https://docs.python.org/3/library/winreg.html#functions Functionstfunctions-in-cgi-module(j&j&Bhttps://docs.python.org/3/library/cgi.html#functions-in-cgi-module Functionst fundamental(j&j&9https://docs.python.org/3/c-api/concrete.html#fundamentalFundamental Objectstfurther-examples(j&j&Nhttps://docs.python.org/3/library/unittest.mock-examples.html#further-examplesFurther Examplestfuture(j&j&https://docs.python.org/3/library/hashlib.html#hash-algorithmsHash algorithmsthashlib-seealso(j&j&>https://docs.python.org/3/library/hashlib.html#hashlib-seealsoj thashlib-usedforsecurity(j&j&Fhttps://docs.python.org/3/library/hashlib.html#hashlib-usedforsecurityj t heap-types(j&j&7https://docs.python.org/3/c-api/typeobj.html#heap-types Heap Typesthelp(j&j&4https://docs.python.org/3/library/argparse.html#helpj t help-sources(j&j&8https://docs.python.org/3/library/idle.html#help-sources Help sourcesthigh-level-embedding(j&j&Ghttps://docs.python.org/3/extending/embedding.html#high-level-embeddingVery High Level Embeddingthistory-and-license(j&j&:https://docs.python.org/3/license.html#history-and-licenseHistory and Licensethkey-constants(j&j&https://docs.python.org/3/howto/ipaddress.html#ipaddress-howto'An introduction to the ipaddress moduletipc(j&j&.https://docs.python.org/3/library/ipc.html#ipc)Networking and Interprocess Communicationtirrefutable_case(j&j&Hhttps://docs.python.org/3/reference/compound_stmts.html#irrefutable-caseIrrefutable Case Blockstis(j&j&7https://docs.python.org/3/reference/expressions.html#isIdentity comparisonstis not(j&j&;https://docs.python.org/3/reference/expressions.html#is-notIdentity comparisonstisolating-extensions-howto(j&j&Thttps://docs.python.org/3/howto/isolating-extensions.html#isolating-extensions-howtoIsolating Extension Modulestiterator(j&j&2https://docs.python.org/3/c-api/iter.html#iteratorIterator Protocoltiterator-objects(j&j&>https://docs.python.org/3/c-api/iterator.html#iterator-objectsIterator Objectstitertools-functions(j&j&Dhttps://docs.python.org/3/library/itertools.html#itertools-functionsItertool Functionstitertools-recipes(j&j&Bhttps://docs.python.org/3/library/itertools.html#itertools-recipesItertools Recipestjson-commandline(j&j&https://docs.python.org/3/glossary.html#keyword-only-parameterj tkeywords(j&j&Bhttps://docs.python.org/3/reference/lexical_analysis.html#keywordsKeywordstkqueue-objects(j&j&https://docs.python.org/3/library/mailbox.html#mailbox-maildirMaildir objectstmailbox-maildirmessage(j&j&Ehttps://docs.python.org/3/library/mailbox.html#mailbox-maildirmessageMaildirMessage objectst mailbox-mbox(j&j&;https://docs.python.org/3/library/mailbox.html#mailbox-mbox mbox objectstmailbox-mboxmessage(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox-mboxmessagemboxMessage objectstmailbox-message-objects(j&j&Fhttps://docs.python.org/3/library/mailbox.html#mailbox-message-objectsMessage objectst mailbox-mh(j&j&9https://docs.python.org/3/library/mailbox.html#mailbox-mh MH objectstmailbox-mhmessage(j&j&@https://docs.python.org/3/library/mailbox.html#mailbox-mhmessageMHMessage objectst mailbox-mmdf(j&j&;https://docs.python.org/3/library/mailbox.html#mailbox-mmdf MMDF objectstmailbox-mmdfmessage(j&j&Bhttps://docs.python.org/3/library/mailbox.html#mailbox-mmdfmessageMMDFMessage objectstmailbox-objects(j&j&>https://docs.python.org/3/library/mailbox.html#mailbox-objectsMailbox objectst main_spec(j&j&9https://docs.python.org/3/reference/import.html#main-spec__main__.__spec__t map-constants(j&j&9https://docs.python.org/3/library/mmap.html#map-constantsMAP_* Constantst mapobjects(j&j&8https://docs.python.org/3/c-api/concrete.html#mapobjectsContainer Objectstmapping(j&j&4https://docs.python.org/3/c-api/mapping.html#mappingMapping Protocoltmapping-patterns(j&j&Hhttps://docs.python.org/3/reference/compound_stmts.html#mapping-patternsMapping Patternstmapping-structs(j&j&https://docs.python.org/3/c-api/marshal.html#marshalling-utilsData marshalling supporttmatch(j&j&=https://docs.python.org/3/reference/compound_stmts.html#matchThe match statementt match-objects(j&j&7https://docs.python.org/3/library/re.html#match-objects Match Objectstmax-path(j&j&5https://docs.python.org/3/using/windows.html#max-path Removing the MAX_PATH Limitationtmembership-test-details(j&j&Lhttps://docs.python.org/3/reference/expressions.html#membership-test-detailsMembership test operationstmemory(j&j&2https://docs.python.org/3/c-api/memory.html#memoryMemory Managementtmemory-handler(j&j&Fhttps://docs.python.org/3/library/logging.handlers.html#memory-handler MemoryHandlertmemoryexamples(j&j&:https://docs.python.org/3/c-api/memory.html#memoryexamplesExamplestmemoryinterface(j&j&;https://docs.python.org/3/c-api/memory.html#memoryinterfaceMemory Interfacetmemoryoverview(j&j&:https://docs.python.org/3/c-api/memory.html#memoryoverviewOverviewtmemoryview-objects(j&j&Bhttps://docs.python.org/3/c-api/memoryview.html#memoryview-objectsMemoryView objectstmessagebox-buttons(j&j&Lhttps://docs.python.org/3/library/tkinter.messagebox.html#messagebox-buttonsj tmessagebox-icons(j&j&Jhttps://docs.python.org/3/library/tkinter.messagebox.html#messagebox-iconsj tmessagebox-types(j&j&Jhttps://docs.python.org/3/library/tkinter.messagebox.html#messagebox-typesj t metaclasses(j&j&>https://docs.python.org/3/reference/datamodel.html#metaclasses Metaclassestmetadata(j&j&Bhttps://docs.python.org/3/library/importlib.metadata.html#metadataDistribution metadatatmetavar(j&j&7https://docs.python.org/3/library/argparse.html#metavarj t meth-str-join(j&j&=https://docs.python.org/3/library/stdtypes.html#meth-str-joinj tmeth-thread-join(j&j&Ahttps://docs.python.org/3/library/threading.html#meth-thread-joinj tmeth_fastcall-meth_keywords(j&j&Khttps://docs.python.org/3/c-api/structures.html#meth-fastcall-meth-keywordsMETH_FASTCALL | METH_KEYWORDSt'meth_method-meth_fastcall-meth_keywords(j&j&Whttps://docs.python.org/3/c-api/structures.html#meth-method-meth-fastcall-meth-keywords+METH_METHOD | METH_FASTCALL | METH_KEYWORDStmeth_varargs-meth_keywords(j&j&Jhttps://docs.python.org/3/c-api/structures.html#meth-varargs-meth-keywordsMETH_VARARGS | METH_KEYWORDStmethod-binding(j&j&Ahttps://docs.python.org/3/reference/datamodel.html#method-bindingj tmethod-objects(j&j&:https://docs.python.org/3/c-api/method.html#method-objectsMethod Objectst methodtable(j&j&>https://docs.python.org/3/extending/extending.html#methodtable7The Module’s Method Table and Initialization Functiontmimetypes-objects(j&j&Bhttps://docs.python.org/3/library/mimetypes.html#mimetypes-objectsMimeTypes Objectstminidom-and-dom(j&j&Fhttps://docs.python.org/3/library/xml.dom.minidom.html#minidom-and-domminidom and the DOM standardtminidom-objects(j&j&Fhttps://docs.python.org/3/library/xml.dom.minidom.html#minidom-objects DOM Objectstmixer-device-objects(j&j&Ghttps://docs.python.org/3/library/ossaudiodev.html#mixer-device-objectsMixer Device Objectstmkdir_modebits(j&j&8https://docs.python.org/3/library/os.html#mkdir-modebitsj tmmedia(j&j&0https://docs.python.org/3/library/mm.html#mmediaMultimedia Servicest mod-weakref(j&j&:https://docs.python.org/3/library/weakref.html#mod-weakrefweakref — Weak referencestmodindex(j&j&*https://docs.python.org/3/py-modindex.html Module Indext module-ctypes(j&j&9https://docs.python.org/3/whatsnew/2.5.html#module-ctypesThe ctypes packaget module-etree(j&j&8https://docs.python.org/3/whatsnew/2.5.html#module-etreeThe ElementTree packagetmodule-hashlib(j&j&:https://docs.python.org/3/whatsnew/2.5.html#module-hashlibThe hashlib packaget module-sqlite(j&j&9https://docs.python.org/3/whatsnew/2.5.html#module-sqliteThe sqlite3 packagetmodule-wsgiref(j&j&:https://docs.python.org/3/whatsnew/2.5.html#module-wsgirefThe wsgiref packagetmodulefinder-example(j&j&Hhttps://docs.python.org/3/library/modulefinder.html#modulefinder-exampleExample usage of ModuleFindert moduleobjects(j&j&9https://docs.python.org/3/c-api/module.html#moduleobjectsModule Objectstmodules(j&j&6https://docs.python.org/3/library/modules.html#modulesImporting Modulestmore-metacharacters(j&j&>https://docs.python.org/3/howto/regex.html#more-metacharactersMore Metacharacterstmorsel-objects(j&j&Bhttps://docs.python.org/3/library/http.cookies.html#morsel-objectsMorsel Objectst msi-directory(j&j&;https://docs.python.org/3/library/msilib.html#msi-directoryDirectory Objectst msi-errors(j&j&8https://docs.python.org/3/library/msilib.html#msi-errorsErrorstmsi-gui(j&j&5https://docs.python.org/3/library/msilib.html#msi-gui GUI classest msi-tables(j&j&8https://docs.python.org/3/library/msilib.html#msi-tablesPrecomputed tablestmsvcrt-console(j&j&https://docs.python.org/3/reference/executionmodel.html#namingNaming and bindingtnargs(j&j&5https://docs.python.org/3/library/argparse.html#nargsj tnetdata(j&j&6https://docs.python.org/3/library/netdata.html#netdataInternet Data Handlingt netrc-objects(j&j&:https://docs.python.org/3/library/netrc.html#netrc-objects netrc Objectstnetwork-logging(j&j&Ehttps://docs.python.org/3/howto/logging-cookbook.html#network-logging5Sending and receiving logging events across a networktnew-25-context-managers(j&j&Chttps://docs.python.org/3/whatsnew/2.5.html#new-25-context-managersWriting Context Managerstnew-26-context-managers(j&j&Chttps://docs.python.org/3/whatsnew/2.6.html#new-26-context-managersWriting Context Managerstnew-26-interpreter(j&j&>https://docs.python.org/3/whatsnew/2.6.html#new-26-interpreterInterpreter Changestnew-27-interpreter(j&j&>https://docs.python.org/3/whatsnew/2.7.html#new-27-interpreterInterpreter Changest new-decimal(j&j&7https://docs.python.org/3/whatsnew/3.3.html#new-decimaldecimalt new-email(j&j&5https://docs.python.org/3/whatsnew/3.3.html#new-emailemailtnew-feat-related-type-hints(j&j&Hhttps://docs.python.org/3/whatsnew/3.10.html#new-feat-related-type-hints"New Features Related to Type Hintstnew-feat-related-type-hints-311(j&j&Lhttps://docs.python.org/3/whatsnew/3.11.html#new-feat-related-type-hints-311"New Features Related to Type Hintstnew-module-contextlib(j&j&Ahttps://docs.python.org/3/whatsnew/2.6.html#new-module-contextlibThe contextlib moduletnew-types-topics(j&j&Bhttps://docs.python.org/3/extending/newtypes.html#new-types-topics)Defining Extension Types: Assorted Topicst new-vs-init(j&j&5https://docs.python.org/3/howto/enum.html#new-vs-init$When to use __new__() vs. __init__()tnewtypes(j&j&5https://docs.python.org/3/c-api/objimpl.html#newtypesObject Implementation Supportt nntp-objects(j&j&;https://docs.python.org/3/library/nntplib.html#nntp-objects NNTP Objectst noneobject(j&j&4https://docs.python.org/3/c-api/none.html#noneobjectThe None Objecttnonlocal(j&j&>https://docs.python.org/3/reference/simple_stmts.html#nonlocalThe nonlocal statementtnot(j&j&8https://docs.python.org/3/reference/expressions.html#notBoolean operationstnot in(j&j&;https://docs.python.org/3/reference/expressions.html#not-inMembership test operationstnotation(j&j&>https://docs.python.org/3/reference/introduction.html#notationNotationtnote(j&j&2https://docs.python.org/3/library/turtle.html#notej tnt-eventlog-handler(j&j&Khttps://docs.python.org/3/library/logging.handlers.html#nt-eventlog-handlerNTEventLogHandlert null-handler(j&j&Dhttps://docs.python.org/3/library/logging.handlers.html#null-handler NullHandlert nullpointers(j&j&?https://docs.python.org/3/extending/extending.html#nullpointers NULL Pointerstnumber(j&j&2https://docs.python.org/3/c-api/number.html#numberNumber Protocoltnumber-structs(j&j&;https://docs.python.org/3/c-api/typeobj.html#number-structsNumber Object Structurestnumbers(j&j&Ahttps://docs.python.org/3/reference/lexical_analysis.html#numbersNumeric literalstnumeric(j&j&6https://docs.python.org/3/library/numeric.html#numeric Numeric and Mathematical Modulest numeric-hash(j&j&https://docs.python.org/3/library/persistence.html#persistenceData Persistencetphysical-lines(j&j&Hhttps://docs.python.org/3/reference/lexical_analysis.html#physical-linesPhysical linestpickle-dispatch(j&j&=https://docs.python.org/3/library/pickle.html#pickle-dispatchDispatch Tablestpickle-example(j&j&https://docs.python.org/3/library/pickle.html#pickle-picklable"What can be pickled and unpickled?tpickle-protocols(j&j&>https://docs.python.org/3/library/pickle.html#pickle-protocolsData stream formattpickle-restrict(j&j&=https://docs.python.org/3/library/pickle.html#pickle-restrictRestricting Globalst pickle-state(j&j&:https://docs.python.org/3/library/pickle.html#pickle-stateHandling Stateful Objectstpickletools-cli(j&j&Bhttps://docs.python.org/3/library/pickletools.html#pickletools-cliCommand line usagetpickling(j&j&8https://docs.python.org/3/library/zoneinfo.html#picklingPickle serializationt poll-objects(j&j&:https://docs.python.org/3/library/select.html#poll-objectsPolling Objectst pop3-example(j&j&:https://docs.python.org/3/library/poplib.html#pop3-example POP3 Examplet pop3-objects(j&j&:https://docs.python.org/3/library/poplib.html#pop3-objects POP3 Objectstporting(j&j&3https://docs.python.org/3/whatsnew/2.5.html#portingPorting to Python 2.5tporting-to-python-37(j&j&@https://docs.python.org/3/whatsnew/3.7.html#porting-to-python-37Porting to Python 3.7tportingpythoncode(j&j&=https://docs.python.org/3/whatsnew/3.3.html#portingpythoncodePorting Python codetports(j&j&1https://docs.python.org/3/whatsnew/2.5.html#portsPort-Specific Changestpositional-only_parameter(j&j&Ahttps://docs.python.org/3/glossary.html#positional-only-parameterj tposix-contents(j&j&;https://docs.python.org/3/library/posix.html#posix-contentsNotable Module Contentstposix-large-files(j&j&>https://docs.python.org/3/library/posix.html#posix-large-filesLarge File Supporttpost-init-processing(j&j&Ghttps://docs.python.org/3/library/dataclasses.html#post-init-processingPost-init processingtpower(j&j&:https://docs.python.org/3/reference/expressions.html#powerThe power operatortpprint-example(j&j&https://docs.python.org/3/library/pprint.html#pprint-functions Functionst pre-init-safe(j&j&7https://docs.python.org/3/c-api/init.html#pre-init-safeBefore Python Initializationt preferences(j&j&7https://docs.python.org/3/library/idle.html#preferencesSetting preferencestprefix-matching(j&j&?https://docs.python.org/3/library/argparse.html#prefix-matching(Argument abbreviations (prefix matching)tprepare(j&j&:https://docs.python.org/3/reference/datamodel.html#preparePreparing the class namespacetprettyprinter-objects(j&j&Chttps://docs.python.org/3/library/pprint.html#prettyprinter-objectsPrettyPrinter Objectst primaries(j&j&>https://docs.python.org/3/reference/expressions.html#primaries Primariestprivate-name-mangling(j&j&Jhttps://docs.python.org/3/reference/expressions.html#private-name-manglingPrivate name manglingtprocesscontrol(j&j&7https://docs.python.org/3/c-api/sys.html#processcontrolProcess Controltprocesspoolexecutor-example(j&j&Uhttps://docs.python.org/3/library/concurrent.futures.html#processpoolexecutor-exampleProcessPoolExecutor Exampletprofile(j&j&6https://docs.python.org/3/library/profile.html#profileThe Python Profilerstprofile-calibration(j&j&Bhttps://docs.python.org/3/library/profile.html#profile-calibration Calibrationt profile-cli(j&j&:https://docs.python.org/3/library/profile.html#profile-clij tprofile-instant(j&j&>https://docs.python.org/3/library/profile.html#profile-instantInstant User’s Manualtprofile-limitations(j&j&Bhttps://docs.python.org/3/library/profile.html#profile-limitations Limitationst profile-stats(j&j&https://docs.python.org/3/howto/pyporting.html#pyporting-howto%How to port Python 2 Code to Python 3tpython(j&j&4https://docs.python.org/3/library/python.html#pythonPython Runtime Servicestpython-buffer-protocol(j&j&Ihttps://docs.python.org/3/reference/datamodel.html#python-buffer-protocolEmulating buffer typestpython-interface(j&j&>https://docs.python.org/3/library/timeit.html#python-interfacePython Interfacet python-shell(j&j&8https://docs.python.org/3/library/idle.html#python-shell Python Shelltpython_2.3_mro(j&j&7https://docs.python.org/3/howto/mro.html#python-2-3-mro&The Python 2.3 Method Resolution Ordertpyzipfile-objects(j&j&@https://docs.python.org/3/library/zipfile.html#pyzipfile-objectsPyZipFile Objectstqt-gui(j&j&https://docs.python.org/3/library/re.html#re-special-sequencesj t re-syntax(j&j&3https://docs.python.org/3/library/re.html#re-syntaxRegular Expression Syntaxtreader-objects(j&j&9https://docs.python.org/3/library/csv.html#reader-objectsReader Objectstreadline-completion(j&j&Chttps://docs.python.org/3/library/readline.html#readline-completion Completiontreadline-example(j&j&@https://docs.python.org/3/library/readline.html#readline-exampleExampletreal-valued-distributions(j&j&Ghttps://docs.python.org/3/library/random.html#real-valued-distributionsReal-valued distributionstrecord-objects(j&j&https://docs.python.org/3/library/pickle.html#reducer-override8Custom Reduction for Types, Functions, and Other Objectst reentrant-cms(j&j&?https://docs.python.org/3/library/contextlib.html#reentrant-cmsReentrant context managerst refcounts(j&j&https://docs.python.org/3/reference/index.html#reference-indexThe Python Language Referencet reflection(j&j&:https://docs.python.org/3/c-api/reflection.html#reflection Reflectiont regex-howto(j&j&6https://docs.python.org/3/howto/regex.html#regex-howtoRegular Expression HOWTOtregrtest(j&j&4https://docs.python.org/3/library/test.html#regrtest.Running tests using the command-line interfacetrelativeimports(j&j&?https://docs.python.org/3/reference/import.html#relativeimportsPackage Relative Importst relevant-peps(j&j&;https://docs.python.org/3/library/typing.html#relevant-peps(Specification for the Python Type Systemtremoved-in-python-39(j&j&@https://docs.python.org/3/whatsnew/3.9.html#removed-in-python-39Removedtreporting-bugs(j&j&2https://docs.python.org/3/bugs.html#reporting-bugsDealing with Bugst repr-objects(j&j&;https://docs.python.org/3/library/reprlib.html#repr-objects Repr Objectstrequest-objects(j&j&Ehttps://docs.python.org/3/library/urllib.request.html#request-objectsRequest Objectstrequired(j&j&8https://docs.python.org/3/library/argparse.html#requiredj t requirements(j&j&Fhttps://docs.python.org/3/library/importlib.metadata.html#requirementsDistribution requirementst resolve_names(j&j&Ehttps://docs.python.org/3/reference/executionmodel.html#resolve-namesResolution of namest restrict_exec(j&j&Ehttps://docs.python.org/3/reference/executionmodel.html#restrict-exec!Builtins and restricted executiontreturn(j&j&https://docs.python.org/3/library/contextlib.html#reusable-cmsReusable context managerst richcmpfuncs(j&j&?https://docs.python.org/3/reference/datamodel.html#richcmpfuncsj trlcompleter-config(j&j&>https://docs.python.org/3/library/site.html#rlcompleter-configReadline configurationt rlock-objects(j&j&>https://docs.python.org/3/library/threading.html#rlock-objects RLock Objectstrotating-file-handler(j&j&Mhttps://docs.python.org/3/library/logging.handlers.html#rotating-file-handlerRotatingFileHandlert run-custom(j&j&6https://docs.python.org/3/library/idle.html#run-customRun… Customizedt run-module(j&j&6https://docs.python.org/3/library/idle.html#run-module Run Moduletsax-error-handler(j&j&Hhttps://docs.python.org/3/library/xml.sax.handler.html#sax-error-handlerErrorHandler Objectstsax-exception-objects(j&j&Dhttps://docs.python.org/3/library/xml.sax.html#sax-exception-objectsSAXException Objectstscheduler-objects(j&j&>https://docs.python.org/3/library/sched.html#scheduler-objectsScheduler Objectstscreenspecific(j&j&https://docs.python.org/3/whatsnew/2.3.html#section-generatorsPEP 255: Simple Generatorstsection-pep301(j&j&:https://docs.python.org/3/whatsnew/2.3.html#section-pep3011PEP 301: Package Index and Metadata for Distutilstsection-pep302(j&j&:https://docs.python.org/3/whatsnew/2.3.html#section-pep302PEP 302: New Import Hookstsection-pep305(j&j&:https://docs.python.org/3/whatsnew/2.3.html#section-pep305PEP 305: Comma-separated Filestsection-pep307(j&j&:https://docs.python.org/3/whatsnew/2.3.html#section-pep307PEP 307: Pickle Enhancementstsection-pymalloc(j&j&https://docs.python.org/3/library/sqlite3.html#sqlite3-conformHow to write adaptable objectst"sqlite3-connection-context-manager(j&j&Qhttps://docs.python.org/3/library/sqlite3.html#sqlite3-connection-context-manager)How to use the connection context managertsqlite3-connection-objects(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3-connection-objectsConnection objectstsqlite3-connection-shortcuts(j&j&Khttps://docs.python.org/3/library/sqlite3.html#sqlite3-connection-shortcuts&How to use connection shortcut methodst sqlite3-controlling-transactions(j&j&Ohttps://docs.python.org/3/library/sqlite3.html#sqlite3-controlling-transactionsTransaction controltsqlite3-converters(j&j&Ahttps://docs.python.org/3/library/sqlite3.html#sqlite3-converters3How to convert SQLite values to custom Python typestsqlite3-cursor-objects(j&j&Ehttps://docs.python.org/3/library/sqlite3.html#sqlite3-cursor-objectsCursor objectstsqlite3-dbconfig-constants(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3-dbconfig-constants=j tsqlite3-default-converters(j&j&Ihttps://docs.python.org/3/library/sqlite3.html#sqlite3-default-converters,Default adapters and converters (deprecated)tsqlite3-exceptions(j&j&Ahttps://docs.python.org/3/library/sqlite3.html#sqlite3-exceptions Exceptionstsqlite3-explanation(j&j&Bhttps://docs.python.org/3/library/sqlite3.html#sqlite3-explanation Explanationtsqlite3-howto-encoding(j&j&Ehttps://docs.python.org/3/library/sqlite3.html#sqlite3-howto-encoding&How to handle non-UTF-8 text encodingstsqlite3-howto-row-factory(j&j&Hhttps://docs.python.org/3/library/sqlite3.html#sqlite3-howto-row-factory#How to create and use row factoriestsqlite3-howtos(j&j&=https://docs.python.org/3/library/sqlite3.html#sqlite3-howtos How-to guidest sqlite3-intro(j&j&https://docs.python.org/3/library/stdtypes.html#stdcomparisons Comparisonststream-handler(j&j&Fhttps://docs.python.org/3/library/logging.handlers.html#stream-handler StreamHandlertstream-reader-objects(j&j&Chttps://docs.python.org/3/library/codecs.html#stream-reader-objectsStreamReader Objectststream-reader-writer(j&j&Bhttps://docs.python.org/3/library/codecs.html#stream-reader-writerStreamReaderWriter Objectststream-recoder-objects(j&j&Dhttps://docs.python.org/3/library/codecs.html#stream-recoder-objectsStreamRecoder Objectststream-writer-objects(j&j&Chttps://docs.python.org/3/library/codecs.html#stream-writer-objectsStreamWriter Objectststrftime-strptime-behavior(j&j&Jhttps://docs.python.org/3/library/datetime.html#strftime-strptime-behavior"strftime() and strptime() Behaviortstring-concatenation(j&j&Nhttps://docs.python.org/3/reference/lexical_analysis.html#string-concatenationString literal concatenationtstring-conversion(j&j&Ahttps://docs.python.org/3/c-api/conversion.html#string-conversion String conversion and formattingtstring-formatting(j&j&?https://docs.python.org/3/library/string.html#string-formattingCustom String Formattingtstring-methods(j&j&>https://docs.python.org/3/library/stdtypes.html#string-methodsString Methodststrings(j&j&Ahttps://docs.python.org/3/reference/lexical_analysis.html#stringsString and Bytes literalststringservices(j&j&:https://docs.python.org/3/library/text.html#stringservicesText Processing Serviceststruct-alignment(j&j&>https://docs.python.org/3/library/struct.html#struct-alignmentByte Order, Size, and Alignmenttstruct-examples(j&j&=https://docs.python.org/3/library/struct.html#struct-examplesExampleststruct-format-strings(j&j&Chttps://docs.python.org/3/library/struct.html#struct-format-stringsFormat Stringststruct-native-formats(j&j&Chttps://docs.python.org/3/library/struct.html#struct-native-formatsNative Formatststruct-objects(j&j&https://docs.python.org/3/library/sysconfig.html#sysconfig-cliUsing sysconfig as a scripttsysconfig-home-scheme(j&j&Fhttps://docs.python.org/3/library/sysconfig.html#sysconfig-home-scheme Home schemetsysconfig-prefix-scheme(j&j&Hhttps://docs.python.org/3/library/sysconfig.html#sysconfig-prefix-scheme Prefix schemetsysconfig-user-scheme(j&j&Fhttps://docs.python.org/3/library/sysconfig.html#sysconfig-user-scheme User schemetsyslog-handler(j&j&Fhttps://docs.python.org/3/library/logging.handlers.html#syslog-handler SysLogHandlertsystemfunctions(j&j&8https://docs.python.org/3/c-api/sys.html#systemfunctionsSystem Functionst tar-examples(j&j&;https://docs.python.org/3/library/tarfile.html#tar-examplesExamplest tar-formats(j&j&:https://docs.python.org/3/library/tarfile.html#tar-formatsSupported tar formatst tar-unicode(j&j&:https://docs.python.org/3/library/tarfile.html#tar-unicodeUnicode issuesttarfile-commandline(j&j&Bhttps://docs.python.org/3/library/tarfile.html#tarfile-commandlineCommand-Line Interfacettarfile-extraction-filter(j&j&Hhttps://docs.python.org/3/library/tarfile.html#tarfile-extraction-filterExtraction filtersttarfile-extraction-refuse(j&j&Hhttps://docs.python.org/3/library/tarfile.html#tarfile-extraction-refuse Filter errorsttarfile-objects(j&j&>https://docs.python.org/3/library/tarfile.html#tarfile-objectsTarFile Objectsttarinfo-objects(j&j&>https://docs.python.org/3/library/tarfile.html#tarinfo-objectsTarInfo Objectst taskgroups(j&j&>https://docs.python.org/3/library/asyncio-task.html#taskgroups Task Groupsttelnet-example(j&j&?https://docs.python.org/3/library/telnetlib.html#telnet-exampleTelnet Examplettelnet-objects(j&j&?https://docs.python.org/3/library/telnetlib.html#telnet-objectsTelnet Objectsttempfile-examples(j&j&Ahttps://docs.python.org/3/library/tempfile.html#tempfile-examplesExamplesttempfile-mktemp-deprecated(j&j&Jhttps://docs.python.org/3/library/tempfile.html#tempfile-mktemp-deprecated"Deprecated functions and variablesttemplate-objects(j&j&=https://docs.python.org/3/library/pipes.html#template-objectsTemplate Objectsttemplate-strings(j&j&>https://docs.python.org/3/library/string.html#template-stringsTemplate stringst terminal-size(j&j&7https://docs.python.org/3/library/os.html#terminal-sizeQuerying the size of a terminalttermios-example(j&j&>https://docs.python.org/3/library/termios.html#termios-exampleExamplet test-prefix(j&j&@https://docs.python.org/3/library/unittest.mock.html#test-prefix TEST_PREFIXttestcase-objects(j&j&@https://docs.python.org/3/library/unittest.html#testcase-objects Test casesttestsuite-objects(j&j&Ahttps://docs.python.org/3/library/unittest.html#testsuite-objectsGrouping teststtext-transforms(j&j&=https://docs.python.org/3/library/codecs.html#text-transformsText Transformsttextseq(j&j&7https://docs.python.org/3/library/stdtypes.html#textseqText Sequence Type — strt textservices(j&j&8https://docs.python.org/3/library/text.html#textservicesText Processing Servicestthe-backslash-plague(j&j&?https://docs.python.org/3/howto/regex.html#the-backslash-plagueThe Backslash Plaguetthinice(j&j&:https://docs.python.org/3/extending/extending.html#thiniceThin Icetthread-local-storage(j&j&>https://docs.python.org/3/c-api/init.html#thread-local-storageThread Local Storage Supporttthread-local-storage-api(j&j&Bhttps://docs.python.org/3/c-api/init.html#thread-local-storage-apiThread Local Storage (TLS) APItthread-objects(j&j&?https://docs.python.org/3/library/threading.html#thread-objectsThread Objectstthread-specific-storage-api(j&j&Ehttps://docs.python.org/3/c-api/init.html#thread-specific-storage-api!Thread Specific Storage (TSS) APItthreadpoolexecutor-example(j&j&Thttps://docs.python.org/3/library/concurrent.futures.html#threadpoolexecutor-exampleThreadPoolExecutor Exampletthreads(j&j&1https://docs.python.org/3/c-api/init.html#threads,Thread State and the Global Interpreter Lockttime-clock-id-constants(j&j&Chttps://docs.python.org/3/library/time.html#time-clock-id-constantsClock ID Constantsttime-functions(j&j&:https://docs.python.org/3/library/time.html#time-functions Functionsttime-timezone-constants(j&j&Chttps://docs.python.org/3/library/time.html#time-timezone-constantsTimezone Constantsttimed-rotating-file-handler(j&j&Shttps://docs.python.org/3/library/logging.handlers.html#timed-rotating-file-handlerTimedRotatingFileHandlerttimeit-command-line-interface(j&j&Khttps://docs.python.org/3/library/timeit.html#timeit-command-line-interfaceCommand-Line Interfacettimeit-examples(j&j&=https://docs.python.org/3/library/timeit.html#timeit-examplesExamplest timer-objects(j&j&>https://docs.python.org/3/library/threading.html#timer-objects Timer Objectsttkinter(j&j&1https://docs.python.org/3/library/tk.html#tkinter!Graphical User Interfaces with Tkttkinter-file-handlers(j&j&Dhttps://docs.python.org/3/library/tkinter.html#tkinter-file-handlers File Handlersttkinter-setting-options(j&j&Fhttps://docs.python.org/3/library/tkinter.html#tkinter-setting-optionsSetting Optionst tokenize-cli(j&j&https://docs.python.org/3/tutorial/appendix.html#tut-customizeThe Customization Modulesttut-data-compression(j&j&Chttps://docs.python.org/3/tutorial/stdlib.html#tut-data-compressionData Compressionttut-dates-and-times(j&j&Bhttps://docs.python.org/3/tutorial/stdlib.html#tut-dates-and-timesDates and Timesttut-decimal-fp(j&j&>https://docs.python.org/3/tutorial/stdlib2.html#tut-decimal-fp!Decimal Floating-Point Arithmeticttut-defaultargs(j&j&Chttps://docs.python.org/3/tutorial/controlflow.html#tut-defaultargsDefault Argument Valuest tut-defining(j&j&@https://docs.python.org/3/tutorial/controlflow.html#tut-definingMore on Defining Functionsttut-del(j&j&>https://docs.python.org/3/tutorial/datastructures.html#tut-delThe del statementttut-dictionaries(j&j&Ghttps://docs.python.org/3/tutorial/datastructures.html#tut-dictionaries Dictionariesttut-dir(j&j&7https://docs.python.org/3/tutorial/modules.html#tut-dirThe dir() Functionttut-docstrings(j&j&Bhttps://docs.python.org/3/tutorial/controlflow.html#tut-docstringsDocumentation Stringst tut-error(j&j&:https://docs.python.org/3/tutorial/appendix.html#tut-errorError Handlingt tut-errors(j&j&9https://docs.python.org/3/tutorial/errors.html#tut-errorsErrors and Exceptionsttut-exception-chaining(j&j&Ehttps://docs.python.org/3/tutorial/errors.html#tut-exception-chainingException Chainingttut-exception-groups(j&j&Chttps://docs.python.org/3/tutorial/errors.html#tut-exception-groups2Raising and Handling Multiple Unrelated Exceptionsttut-exception-notes(j&j&Bhttps://docs.python.org/3/tutorial/errors.html#tut-exception-notesEnriching Exceptions with Notesttut-exceptions(j&j&=https://docs.python.org/3/tutorial/errors.html#tut-exceptions Exceptionst tut-f-strings(j&j&Ahttps://docs.python.org/3/tutorial/inputoutput.html#tut-f-stringsFormatted String Literalsttut-file-wildcards(j&j&Ahttps://docs.python.org/3/tutorial/stdlib.html#tut-file-wildcardsFile Wildcardsttut-filemethods(j&j&Chttps://docs.python.org/3/tutorial/inputoutput.html#tut-filemethodsMethods of File Objectst tut-files(j&j&=https://docs.python.org/3/tutorial/inputoutput.html#tut-filesReading and Writing Filesttut-firstclasses(j&j&@https://docs.python.org/3/tutorial/classes.html#tut-firstclassesA First Look at Classesttut-firststeps(j&j&Chttps://docs.python.org/3/tutorial/introduction.html#tut-firststepsFirst Steps Towards Programmingttut-for(j&j&;https://docs.python.org/3/tutorial/controlflow.html#tut-forfor Statementsttut-formatting(j&j&Bhttps://docs.python.org/3/tutorial/inputoutput.html#tut-formattingFancier Output Formattingt tut-fp-error(j&j&Bhttps://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-errorRepresentation Errort tut-fp-issues(j&j&Chttps://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues2Floating-Point Arithmetic: Issues and Limitationst tut-functions(j&j&Ahttps://docs.python.org/3/tutorial/controlflow.html#tut-functionsDefining Functionsttut-generators(j&j&>https://docs.python.org/3/tutorial/classes.html#tut-generators Generatorst tut-genexps(j&j&;https://docs.python.org/3/tutorial/classes.html#tut-genexpsGenerator Expressionst tut-handling(j&j&;https://docs.python.org/3/tutorial/errors.html#tut-handlingHandling Exceptionsttut-if(j&j&:https://docs.python.org/3/tutorial/controlflow.html#tut-if if Statementst tut-informal(j&j&Ahttps://docs.python.org/3/tutorial/introduction.html#tut-informal"An Informal Introduction to Pythonttut-inheritance(j&j&?https://docs.python.org/3/tutorial/classes.html#tut-inheritance Inheritancettut-instanceobjects(j&j&Chttps://docs.python.org/3/tutorial/classes.html#tut-instanceobjectsInstance Objectst tut-interac(j&j&https://docs.python.org/3/tutorial/interpreter.html#tut-interp#The Interpreter and Its Environmentt tut-intro(j&j&:https://docs.python.org/3/tutorial/appetite.html#tut-introWhetting Your Appetitet tut-invoking(j&j&@https://docs.python.org/3/tutorial/interpreter.html#tut-invokingInvoking the Interpreterttut-io(j&j&:https://docs.python.org/3/tutorial/inputoutput.html#tut-ioInput and Outputt tut-iterators(j&j&=https://docs.python.org/3/tutorial/classes.html#tut-iterators Iteratorsttut-json(j&j&https://docs.python.org/3/tutorial/controlflow.html#tut-lambdaLambda Expressionsttut-list-tools(j&j&>https://docs.python.org/3/tutorial/stdlib2.html#tut-list-toolsTools for Working with Listst tut-listcomps(j&j&Dhttps://docs.python.org/3/tutorial/datastructures.html#tut-listcompsList Comprehensionst tut-lists(j&j&>https://docs.python.org/3/tutorial/introduction.html#tut-listsListsttut-lists-as-queues(j&j&Jhttps://docs.python.org/3/tutorial/datastructures.html#tut-lists-as-queuesUsing Lists as Queuesttut-lists-as-stacks(j&j&Jhttps://docs.python.org/3/tutorial/datastructures.html#tut-lists-as-stacksUsing Lists as Stackst tut-logging(j&j&;https://docs.python.org/3/tutorial/stdlib2.html#tut-loggingLoggingttut-loopidioms(j&j&Ehttps://docs.python.org/3/tutorial/datastructures.html#tut-loopidiomsLooping Techniquest tut-match(j&j&=https://docs.python.org/3/tutorial/controlflow.html#tut-matchmatch Statementsttut-mathematics(j&j&>https://docs.python.org/3/tutorial/stdlib.html#tut-mathematics Mathematicsttut-methodobjects(j&j&Ahttps://docs.python.org/3/tutorial/classes.html#tut-methodobjectsMethod Objectst tut-modules(j&j&;https://docs.python.org/3/tutorial/modules.html#tut-modulesModulesttut-modulesasscripts(j&j&Dhttps://docs.python.org/3/tutorial/modules.html#tut-modulesasscriptsExecuting modules as scriptsttut-morecontrol(j&j&Chttps://docs.python.org/3/tutorial/controlflow.html#tut-morecontrolMore Control Flow Toolst tut-morelists(j&j&Dhttps://docs.python.org/3/tutorial/datastructures.html#tut-morelists More on Liststtut-moremodules(j&j&?https://docs.python.org/3/tutorial/modules.html#tut-moremodulesMore on Modulesttut-multi-threading(j&j&Chttps://docs.python.org/3/tutorial/stdlib2.html#tut-multi-threadingMulti-threadingt tut-multiple(j&j&https://docs.python.org/3/tutorial/modules.html#tut-searchpathThe Module Search Pathttut-sets(j&j&?https://docs.python.org/3/tutorial/datastructures.html#tut-setsSetsttut-source-encoding(j&j&Ghttps://docs.python.org/3/tutorial/interpreter.html#tut-source-encodingSource Code Encodingttut-standardmodules(j&j&Chttps://docs.python.org/3/tutorial/modules.html#tut-standardmodulesStandard Modulest tut-startup(j&j&https://docs.python.org/3/tutorial/stdlib2.html#tut-templating Templatingt tut-tuples(j&j&Ahttps://docs.python.org/3/tutorial/datastructures.html#tut-tuplesTuples and Sequencesttut-unpacking-arguments(j&j&Khttps://docs.python.org/3/tutorial/controlflow.html#tut-unpacking-argumentsUnpacking Argument Liststtut-userexceptions(j&j&Ahttps://docs.python.org/3/tutorial/errors.html#tut-userexceptionsUser-defined Exceptionst tut-using(j&j&=https://docs.python.org/3/tutorial/interpreter.html#tut-usingUsing the Python Interpreterttut-venv(j&j&5https://docs.python.org/3/tutorial/venv.html#tut-venv!Virtual Environments and Packagesttut-weak-references(j&j&Chttps://docs.python.org/3/tutorial/stdlib2.html#tut-weak-referencesWeak Referencest tut-whatnow(j&j&;https://docs.python.org/3/tutorial/whatnow.html#tut-whatnow What Now?ttutorial-index(j&j&https://docs.python.org/3/c-api/typehints.html#typehintobjectsObjects for Type Hintingttypeiter(j&j&8https://docs.python.org/3/library/stdtypes.html#typeiterIterator Typesttypememoryview(j&j&>https://docs.python.org/3/library/stdtypes.html#typememoryview Memory Viewst typeobjects(j&j&5https://docs.python.org/3/c-api/type.html#typeobjects Type Objectsttypes(j&j&8https://docs.python.org/3/reference/datamodel.html#typesThe standard type hierarchyttypes-genericalias(j&j&Bhttps://docs.python.org/3/library/stdtypes.html#types-genericaliasGeneric Alias Typet types-set(j&j&9https://docs.python.org/3/library/stdtypes.html#types-setSet Types — set, frozensett types-union(j&j&;https://docs.python.org/3/library/stdtypes.html#types-union Union Typettypesfunctions(j&j&>https://docs.python.org/3/library/stdtypes.html#typesfunctions Functionst typesinternal(j&j&=https://docs.python.org/3/library/stdtypes.html#typesinternalInternal Objectst typesmapping(j&j&https://docs.python.org/3/library/stdtypes.html#typesseq-rangeRangesttypesseq-tuple(j&j&>https://docs.python.org/3/library/stdtypes.html#typesseq-tupleTuplesttypevar(j&j&5https://docs.python.org/3/library/typing.html#typevarj t typevartuple(j&j&:https://docs.python.org/3/library/typing.html#typevartuplej ttyping-constrained-typevar(j&j&Hhttps://docs.python.org/3/library/typing.html#typing-constrained-typevarj tunary(j&j&:https://docs.python.org/3/reference/expressions.html#unary'Unary arithmetic and bitwise operationst unicode-howto(j&j&:https://docs.python.org/3/howto/unicode.html#unicode-howto Unicode HOWTOtunicodeexceptions(j&j&Ahttps://docs.python.org/3/c-api/exceptions.html#unicodeexceptionsUnicode Exception Objectstunicodemethodsandslots(j&j&Chttps://docs.python.org/3/c-api/unicode.html#unicodemethodsandslotsMethods and Slot Functionstunicodeobjects(j&j&;https://docs.python.org/3/c-api/unicode.html#unicodeobjectsUnicode Objects and Codecstunittest-command-line-interface(j&j&Ohttps://docs.python.org/3/library/unittest.html#unittest-command-line-interfaceCommand-Line Interfacetunittest-contents(j&j&Ahttps://docs.python.org/3/library/unittest.html#unittest-contentsClasses and functionstunittest-minimal-example(j&j&Hhttps://docs.python.org/3/library/unittest.html#unittest-minimal-example Basic exampletunittest-section(j&j&https://docs.python.org/3/using/cmdline.html#using-on-warningsj tusing-on-windows(j&j&=https://docs.python.org/3/using/windows.html#using-on-windowsUsing Python on Windowstusing-the-cgi-module(j&j&?https://docs.python.org/3/library/cgi.html#using-the-cgi-moduleUsing the cgi moduletusing-the-tracker(j&j&5https://docs.python.org/3/bugs.html#using-the-trackerUsing the Python issue trackertutc-formatting(j&j&Dhttps://docs.python.org/3/howto/logging-cookbook.html#utc-formatting2Formatting times using UTC (GMT) via configurationt utf8-mode(j&j&3https://docs.python.org/3/library/os.html#utf8-modePython UTF-8 Modet utilities(j&j&8https://docs.python.org/3/c-api/utilities.html#utilities Utilitiestuuid-cli(j&j&4https://docs.python.org/3/library/uuid.html#uuid-cliCommand-Line Usagetuuid-cli-example(j&j&https://docs.python.org/3/library/warnings.html#warning-filterThe Warnings Filtertwarning-functions(j&j&Ahttps://docs.python.org/3/library/warnings.html#warning-functionsAvailable Functionstwarning-ignored(j&j&?https://docs.python.org/3/library/warnings.html#warning-ignored.Updating Code For New Versions of Dependenciestwarning-suppress(j&j&@https://docs.python.org/3/library/warnings.html#warning-suppress Temporarily Suppressing Warningstwarning-testing(j&j&?https://docs.python.org/3/library/warnings.html#warning-testingTesting Warningstwasm-availability(j&j&>https://docs.python.org/3/library/intro.html#wasm-availabilityWebAssembly platformstwatched-file-handler(j&j&Lhttps://docs.python.org/3/library/logging.handlers.html#watched-file-handlerWatchedFileHandlertwave-read-objects(j&j&=https://docs.python.org/3/library/wave.html#wave-read-objectsWave_read Objectstwave-write-objects(j&j&>https://docs.python.org/3/library/wave.html#wave-write-objectsWave_write Objectstweakref-example(j&j&>https://docs.python.org/3/library/weakref.html#weakref-exampleExampletweakref-objects(j&j&>https://docs.python.org/3/library/weakref.html#weakref-objectsWeak Reference Objectstweakref-support(j&j&Ahttps://docs.python.org/3/extending/newtypes.html#weakref-supportWeak Reference Supporttweakrefobjects(j&j&;https://docs.python.org/3/c-api/weakref.html#weakrefobjectsWeak Reference Objectstwhats-new-in-2.6(j&j&https://docs.python.org/3/whatsnew/3.4.html#whatsnew-ensurepip ensurepipt whatsnew-enum(j&j&9https://docs.python.org/3/whatsnew/3.4.html#whatsnew-enumenumtwhatsnew-index(j&j&https://docs.python.org/3/whatsnew/3.4.html#whatsnew-marshal-3marshalt whatsnew-multiprocessing-no-fork(j&j&Lhttps://docs.python.org/3/whatsnew/3.4.html#whatsnew-multiprocessing-no-forkj twhatsnew-ordereddict(j&j&@https://docs.python.org/3/whatsnew/3.5.html#whatsnew-ordereddictj twhatsnew-pathlib(j&j&PEP 453: Explicit Bootstrapping of PIP in Python Installationstwhatsnew-pep-456(j&j&PEP 465 - A dedicated infix operator for matrix multiplicationtwhatsnew-pep-471(j&j&https://docs.python.org/3/whatsnew/3.4.html#whatsnew-selectors selectorstwhatsnew-singledispatch(j&j&Chttps://docs.python.org/3/whatsnew/3.4.html#whatsnew-singledispatchj twhatsnew-sslmemorybio(j&j&Ahttps://docs.python.org/3/whatsnew/3.5.html#whatsnew-sslmemorybioMemory BIO Supporttwhatsnew-statistics(j&j&?https://docs.python.org/3/whatsnew/3.4.html#whatsnew-statistics statisticstwhatsnew-subprocess(j&j&?https://docs.python.org/3/whatsnew/3.5.html#whatsnew-subprocess subprocesstwhatsnew-tls-11-12(j&j&>https://docs.python.org/3/whatsnew/3.4.html#whatsnew-tls-11-12j twhatsnew-traceback(j&j&>https://docs.python.org/3/whatsnew/3.5.html#whatsnew-traceback tracebacktwhatsnew-tracemalloc(j&j&@https://docs.python.org/3/whatsnew/3.4.html#whatsnew-tracemalloc tracemalloctwhatsnew-typing-py312(j&j&Bhttps://docs.python.org/3/whatsnew/3.12.html#whatsnew-typing-py312typingtwhatsnew-zipapp(j&j&;https://docs.python.org/3/whatsnew/3.5.html#whatsnew-zipappzipapptwhatsnew27-capsules(j&j&?https://docs.python.org/3/whatsnew/2.7.html#whatsnew27-capsulesCapsulestwhatsnew27-python31(j&j&?https://docs.python.org/3/whatsnew/2.7.html#whatsnew27-python31The Future for Python 2.xtwhatsnew310-deprecated(j&j&Chttps://docs.python.org/3/whatsnew/3.10.html#whatsnew310-deprecated Deprecatedtwhatsnew310-pep563(j&j&?https://docs.python.org/3/whatsnew/3.10.html#whatsnew310-pep563Parenthesized context managerstwhatsnew310-pep597(j&j&?https://docs.python.org/3/whatsnew/3.10.html#whatsnew310-pep5975Optional EncodingWarning and encoding="locale" optiontwhatsnew310-removed(j&j&@https://docs.python.org/3/whatsnew/3.10.html#whatsnew310-removedRemovedtwhatsnew311-added-opcodes(j&j&Fhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-added-opcodes New opcodestwhatsnew311-asyncio(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-asyncioasynciotwhatsnew311-build-changes(j&j&Fhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-build-changes Build Changestwhatsnew311-bytecode-changes(j&j&Ihttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-bytecode-changesCPython bytecode changestwhatsnew311-c-api(j&j&>https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-c-api C API Changestwhatsnew311-c-api-deprecated(j&j&Ihttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-c-api-deprecated Deprecatedtwhatsnew311-c-api-new-features(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-c-api-new-features New Featurest!whatsnew311-c-api-pending-removal(j&j&Nhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-c-api-pending-removalPending Removal in Python 3.12twhatsnew311-c-api-porting(j&j&Fhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-c-api-portingPorting to Python 3.11twhatsnew311-c-api-removed(j&j&Fhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-c-api-removedRemovedtwhatsnew311-changed-opcodes(j&j&Hhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-changed-opcodesChanged/removed opcodest#whatsnew311-changed-removed-opcodes(j&j&Phttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-changed-removed-opcodesChanged/removed opcodestwhatsnew311-contextlib(j&j&Chttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-contextlib contextlibtwhatsnew311-dataclasses(j&j&Dhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-dataclasses dataclassestwhatsnew311-datetime(j&j&Ahttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-datetimedatetimetwhatsnew311-deprecated(j&j&Chttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-deprecated Deprecatedtwhatsnew311-deprecated-builtins(j&j&Lhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-deprecated-builtinsLanguage/Builtinstwhatsnew311-deprecated-language(j&j&Lhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-deprecated-languageLanguage/Builtinstwhatsnew311-deprecated-modules(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-deprecated-modulesModulestwhatsnew311-deprecated-stdlib(j&j&Jhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-deprecated-stdlibStandard Librarytwhatsnew311-enum(j&j&=https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-enumenumtwhatsnew311-faster-cpython(j&j&Ghttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-cpythonFaster CPythont whatsnew311-faster-cpython-about(j&j&Mhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-cpython-aboutAbouttwhatsnew311-faster-cpython-faq(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-cpython-faqFAQtwhatsnew311-faster-cpython-misc(j&j&Lhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-cpython-miscMisctwhatsnew311-faster-imports(j&j&Ghttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-imports$Frozen imports / Static code objectstwhatsnew311-faster-runtime(j&j&Ghttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-runtimeFaster Runtimetwhatsnew311-faster-startup(j&j&Ghttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-faster-startupFaster Startuptwhatsnew311-fcntl(j&j&>https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-fcntlfcntltwhatsnew311-features(j&j&Ahttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-features New Featurestwhatsnew311-fractions(j&j&Bhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-fractions fractionstwhatsnew311-functools(j&j&Bhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-functools functoolstwhatsnew311-gzip(j&j&=https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-gzipgziptwhatsnew311-hashlib(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-hashlibhashlibtwhatsnew311-idle(j&j&=https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-idleIDLE and idlelibtwhatsnew311-improved-modules(j&j&Ihttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-improved-modulesImproved Modulestwhatsnew311-inline-calls(j&j&Ehttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-inline-callsInlined Python function callstwhatsnew311-inspect(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-inspectinspecttwhatsnew311-lazy-python-frames(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-lazy-python-framesCheaper, lazy Python framestwhatsnew311-locale(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-localelocaletwhatsnew311-logging(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-loggingloggingtwhatsnew311-math(j&j&=https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-mathmathtwhatsnew311-new-modules(j&j&Dhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-new-modules New Modulestwhatsnew311-operator(j&j&Ahttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-operatoroperatortwhatsnew311-optimizations(j&j&Fhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-optimizations Optimizationstwhatsnew311-os(j&j&;https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-osost(whatsnew311-other-implementation-changes(j&j&Uhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-other-implementation-changes$Other CPython Implementation Changestwhatsnew311-other-lang-changes(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-other-lang-changesOther Language Changestwhatsnew311-pathlib(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pathlibpathlibtwhatsnew311-pending-removal(j&j&Hhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pending-removalPending Removal in Python 3.12twhatsnew311-pep563-deferred(j&j&Hhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep563-deferredPEP 563 may not be the futuretwhatsnew311-pep594(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep594j twhatsnew311-pep624(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep624j twhatsnew311-pep646(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep646PEP 646: Variadic genericstwhatsnew311-pep654(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654%PEP 654: Exception Groups and except*twhatsnew311-pep655(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep655GPEP 655: Marking individual TypedDict items as required or not-requiredtwhatsnew311-pep657(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep6573PEP 657: Fine-grained error locations in tracebackstwhatsnew311-pep659(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep659*PEP 659: Specializing Adaptive Interpretertwhatsnew311-pep670(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep670j twhatsnew311-pep673(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep673PEP 673: Self typetwhatsnew311-pep675(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep675&PEP 675: Arbitrary literal string typetwhatsnew311-pep678(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep678.PEP 678: Exceptions can be enriched with notestwhatsnew311-pep681(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep681PEP 681: Data class transformstwhatsnew311-porting(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-portingPorting to Python 3.11t!whatsnew311-python-api-deprecated(j&j&Nhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-python-api-deprecated Deprecatedt&whatsnew311-python-api-pending-removal(j&j&Shttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-python-api-pending-removalPending Removal in Python 3.12twhatsnew311-python-api-porting(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-python-api-portingPorting to Python 3.11twhatsnew311-python-api-removed(j&j&Khttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-python-api-removedRemovedtwhatsnew311-pythonsafepath(j&j&Ghttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pythonsafepathj twhatsnew311-re(j&j&;https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-reretwhatsnew311-removed(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-removedRemovedtwhatsnew311-removed-opcodes(j&j&Hhttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-removed-opcodesChanged/removed opcodestwhatsnew311-replaced-opcodes(j&j&Ihttps://docs.python.org/3/whatsnew/3.11.html#whatsnew311-replaced-opcodesReplaced opcodestwhatsnew311-shutil(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-shutilshutiltwhatsnew311-socket(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-socketsockettwhatsnew311-sqlite3(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-sqlite3sqlite3twhatsnew311-string(j&j&?https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-stringstringtwhatsnew311-summary(j&j&@https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-summarySummary – Release highlightstwhatsnew311-sys(j&j&https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-tracing$DTrace and SystemTap probing supporttwhatsnew36-typing(j&j&=https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-typingtypingtwhatsnew36-venv(j&j&;https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-venvvenvtwhatsnew37-asyncio-deprecated(j&j&Ihttps://docs.python.org/3/whatsnew/3.7.html#whatsnew37-asyncio-deprecatedasynciotwhatsnew37-asyncio-perf(j&j&Chttps://docs.python.org/3/whatsnew/3.7.html#whatsnew37-asyncio-perfj twhatsnew37-devmode(j&j&>https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-devmode Python Development Mode (-X dev)twhatsnew37-pep538(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep538!PEP 538: Legacy C Locale Coerciontwhatsnew37-pep539(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep539+PEP 539: New C API for Thread-Local Storagetwhatsnew37-pep540(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep540"PEP 540: Forced UTF-8 Runtime Modetwhatsnew37-pep545(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep545*PEP 545: Python Documentation Translationstwhatsnew37-pep552(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep552PEP 552: Hash-based .pyc Filestwhatsnew37-pep553(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep553PEP 553: Built-in breakpoint()twhatsnew37-pep557(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep557 dataclassestwhatsnew37-pep560(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep5609PEP 560: Core Support for typing module and Generic Typestwhatsnew37-pep562(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep5625PEP 562: Customization of Access to Module Attributestwhatsnew37-pep563(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep563,PEP 563: Postponed Evaluation of Annotationstwhatsnew37-pep564(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep5646PEP 564: New Time Functions With Nanosecond Resolutiontwhatsnew37-pep565(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep565,PEP 565: Show DeprecationWarning in __main__twhatsnew37-pep567(j&j&=https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-pep567 contextvarstwhatsnew37-perf(j&j&;https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-perf Optimizationstwhatsnew37_asyncio(j&j&>https://docs.python.org/3/whatsnew/3.7.html#whatsnew37-asyncioasynciotwhatsnew37_importlib_resources(j&j&Jhttps://docs.python.org/3/whatsnew/3.7.html#whatsnew37-importlib-resourcesimportlib.resourcestwhatsnew_email_contentmanager(j&j&Ihttps://docs.python.org/3/whatsnew/3.4.html#whatsnew-email-contentmanagerj twhere-to-patch(j&j&Chttps://docs.python.org/3/library/unittest.mock.html#where-to-patchWhere to patchtwhile(j&j&=https://docs.python.org/3/reference/compound_stmts.html#whileThe while statementt whitespace(j&j&Dhttps://docs.python.org/3/reference/lexical_analysis.html#whitespaceWhitespace between tokenst.why-can-t-i-use-an-assignment-in-an-expression(j&j&Xhttps://docs.python.org/3/faq/design.html#why-can-t-i-use-an-assignment-in-an-expression1Why can’t I use an assignment in an expression?twhy-self(j&j&2https://docs.python.org/3/faq/design.html#why-selfGWhy must ‘self’ be used explicitly in method definitions and calls?twildcard-patterns(j&j&Ihttps://docs.python.org/3/reference/compound_stmts.html#wildcard-patternsWildcard Patternst win-cookbook(j&j&=https://docs.python.org/3/extending/windows.html#win-cookbookA Cookbook Approachtwin-dlls(j&j&9https://docs.python.org/3/extending/windows.html#win-dllsUsing DLLs in Practicet win-utf8-mode(j&j&:https://docs.python.org/3/using/windows.html#win-utf8-mode UTF-8 modetwindows-embeddable(j&j&?https://docs.python.org/3/using/windows.html#windows-embeddableThe embeddable packaget windows-faq(j&j&6https://docs.python.org/3/faq/windows.html#windows-faqPython on Windows FAQt windows-full(j&j&9https://docs.python.org/3/using/windows.html#windows-fullThe full installert windows-nuget(j&j&:https://docs.python.org/3/using/windows.html#windows-nugetThe nuget.org packagestwindows-path-mod(j&j&=https://docs.python.org/3/using/windows.html#windows-path-modFinding the Python executablet windows-store(j&j&:https://docs.python.org/3/using/windows.html#windows-storeThe Microsoft Store packagetwindows_finding_modules(j&j&Dhttps://docs.python.org/3/using/windows.html#windows-finding-modulesFinding modulestwith(j&j&https://docs.python.org/3/library/xml.html#xml-vulnerabilitiesXML vulnerabilitiestxmlparser-objects(j&j&@https://docs.python.org/3/library/pyexpat.html#xmlparser-objectsXMLParser Objectstxmlreader-objects(j&j&Ghttps://docs.python.org/3/library/xml.sax.reader.html#xmlreader-objectsXMLReader Objectstxmlrpc-client-example(j&j&Jhttps://docs.python.org/3/library/xmlrpc.client.html#xmlrpc-client-exampleExample of Client Usagetyield(j&j&;https://docs.python.org/3/reference/simple_stmts.html#yieldThe yield statementt yieldexpr(j&j&>https://docs.python.org/3/reference/expressions.html#yieldexprYield expressionstzeromq-handlers(j&j&Ehttps://docs.python.org/3/howto/logging-cookbook.html#zeromq-handlershttps://docs.python.org/3/library/zipfile.html#zipfile-objectsZipFile Objectstzipfile-resources-limitations(j&j&Lhttps://docs.python.org/3/library/zipfile.html#zipfile-resources-limitationsResources limitationstzipimport-examples(j&j&Chttps://docs.python.org/3/library/zipimport.html#zipimport-examplesExamplestzipimporter-objects(j&j&Dhttps://docs.python.org/3/library/zipimport.html#zipimporter-objectszipimporter Objectstzipinfo-objects(j&j&>https://docs.python.org/3/library/zipfile.html#zipinfo-objectsZipInfo Objectst!zoneinfo_data_compile_time_config(j&j&Qhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo-data-compile-time-configCompile-time configurationtzoneinfo_data_configuration(j&j&Khttps://docs.python.org/3/library/zoneinfo.html#zoneinfo-data-configurationConfiguring the data sourcestzoneinfo_data_environment_var(j&j&Mhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo-data-environment-varEnvironment configurationtzoneinfo_data_runtime_config(j&j&Lhttps://docs.python.org/3/library/zoneinfo.html#zoneinfo-data-runtime-configRuntime configurationtu std:envvar}( BASECFLAGS(j&j&@https://docs.python.org/3/using/configure.html#envvar-BASECFLAGSj t BASECPPFLAGS(j&j&Bhttps://docs.python.org/3/using/configure.html#envvar-BASECPPFLAGSj t BLDSHARED(j&j&?https://docs.python.org/3/using/configure.html#envvar-BLDSHAREDj tCC(j&j&8https://docs.python.org/3/using/configure.html#envvar-CCj tCCSHARED(j&j&>https://docs.python.org/3/using/configure.html#envvar-CCSHAREDj tCFLAGS(j&j&https://docs.python.org/3/using/configure.html#envvar-CPPFLAGSj tCXX(j&j&9https://docs.python.org/3/using/configure.html#envvar-CXXj t EXTRA_CFLAGS(j&j&Bhttps://docs.python.org/3/using/configure.html#envvar-EXTRA_CFLAGSj tLDFLAGS(j&j&=https://docs.python.org/3/using/configure.html#envvar-LDFLAGSj tLDFLAGS_NODIST(j&j&Dhttps://docs.python.org/3/using/configure.html#envvar-LDFLAGS_NODISTj tLDSHARED(j&j&>https://docs.python.org/3/using/configure.html#envvar-LDSHAREDj tLIBS(j&j&:https://docs.python.org/3/using/configure.html#envvar-LIBSj tLINKCC(j&j&https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHOMEj t PYTHONINSPECT(j&j&Ahttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONINSPECTj tPYTHONINTMAXSTRDIGITS(j&j&Ihttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONINTMAXSTRDIGITSj tPYTHONIOENCODING(j&j&Dhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONIOENCODINGj tPYTHONLEGACYWINDOWSFSENCODING(j&j&Qhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONLEGACYWINDOWSFSENCODINGj tPYTHONLEGACYWINDOWSSTDIO(j&j&Lhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONLEGACYWINDOWSSTDIOj t PYTHONMALLOC(j&j&@https://docs.python.org/3/using/cmdline.html#envvar-PYTHONMALLOCj tPYTHONMALLOCSTATS(j&j&Ehttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONMALLOCSTATSj tPYTHONNODEBUGRANGES(j&j&Ghttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGESj tPYTHONNOUSERSITE(j&j&Dhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONNOUSERSITEj tPYTHONOPTIMIZE(j&j&Bhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONOPTIMIZEj t PYTHONPATH(j&j&>https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATHj tPYTHONPERFSUPPORT(j&j&Ehttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONPERFSUPPORTj tPYTHONPLATLIBDIR(j&j&Dhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONPLATLIBDIRj tPYTHONPROFILEIMPORTTIME(j&j&Khttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONPROFILEIMPORTTIMEj tPYTHONPYCACHEPREFIX(j&j&Ghttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONPYCACHEPREFIXj tPYTHONSAFEPATH(j&j&Bhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONSAFEPATHj t PYTHONSTARTUP(j&j&Ahttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONSTARTUPj tPYTHONTRACEMALLOC(j&j&Ehttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONTRACEMALLOCj t PYTHONTZPATH(j&j&Chttps://docs.python.org/3/library/zoneinfo.html#envvar-PYTHONTZPATHj tPYTHONUNBUFFERED(j&j&Dhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFEREDj tPYTHONUSERBASE(j&j&Bhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONUSERBASEj t PYTHONUTF8(j&j&>https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUTF8j t PYTHONVERBOSE(j&j&Ahttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONVERBOSEj tPYTHONWARNDEFAULTENCODING(j&j&Mhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNDEFAULTENCODINGj tPYTHONWARNINGS(j&j&Bhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGSj tPY_BUILTIN_MODULE_CFLAGS(j&j&Nhttps://docs.python.org/3/using/configure.html#envvar-PY_BUILTIN_MODULE_CFLAGSj t PY_CFLAGS(j&j&?https://docs.python.org/3/using/configure.html#envvar-PY_CFLAGSj tPY_CFLAGS_NODIST(j&j&Fhttps://docs.python.org/3/using/configure.html#envvar-PY_CFLAGS_NODISTj tPY_CORE_CFLAGS(j&j&Dhttps://docs.python.org/3/using/configure.html#envvar-PY_CORE_CFLAGSj tPY_CORE_LDFLAGS(j&j&Ehttps://docs.python.org/3/using/configure.html#envvar-PY_CORE_LDFLAGSj t PY_CPPFLAGS(j&j&Ahttps://docs.python.org/3/using/configure.html#envvar-PY_CPPFLAGSj t PY_LDFLAGS(j&j&@https://docs.python.org/3/using/configure.html#envvar-PY_LDFLAGSj tPY_LDFLAGS_NODIST(j&j&Ghttps://docs.python.org/3/using/configure.html#envvar-PY_LDFLAGS_NODISTj tPY_STDMODULE_CFLAGS(j&j&Ihttps://docs.python.org/3/using/configure.html#envvar-PY_STDMODULE_CFLAGSj tu std:opcode}(BEFORE_ASYNC_WITH(j&j&Chttps://docs.python.org/3/library/dis.html#opcode-BEFORE_ASYNC_WITHj t BEFORE_WITH(j&j&=https://docs.python.org/3/library/dis.html#opcode-BEFORE_WITHj t BINARY_OP(j&j&;https://docs.python.org/3/library/dis.html#opcode-BINARY_OPj t BINARY_SLICE(j&j&>https://docs.python.org/3/library/dis.html#opcode-BINARY_SLICEj t BINARY_SUBSCR(j&j&?https://docs.python.org/3/library/dis.html#opcode-BINARY_SUBSCRj tBUILD_CONST_KEY_MAP(j&j&Ehttps://docs.python.org/3/library/dis.html#opcode-BUILD_CONST_KEY_MAPj t BUILD_LIST(j&j&https://docs.python.org/3/library/dis.html#opcode-BUILD_STRINGj t BUILD_TUPLE(j&j&=https://docs.python.org/3/library/dis.html#opcode-BUILD_TUPLEj tCACHE(j&j&7https://docs.python.org/3/library/dis.html#opcode-CACHEj tCALL(j&j&6https://docs.python.org/3/library/dis.html#opcode-CALLj tCALL_FUNCTION_EX(j&j&Bhttps://docs.python.org/3/library/dis.html#opcode-CALL_FUNCTION_EXj tCALL_INTRINSIC_1(j&j&Bhttps://docs.python.org/3/library/dis.html#opcode-CALL_INTRINSIC_1j tCALL_INTRINSIC_2(j&j&Bhttps://docs.python.org/3/library/dis.html#opcode-CALL_INTRINSIC_2j tCHECK_EG_MATCH(j&j&@https://docs.python.org/3/library/dis.html#opcode-CHECK_EG_MATCHj tCHECK_EXC_MATCH(j&j&Ahttps://docs.python.org/3/library/dis.html#opcode-CHECK_EXC_MATCHj t CLEANUP_THROW(j&j&?https://docs.python.org/3/library/dis.html#opcode-CLEANUP_THROWj t COMPARE_OP(j&j&https://docs.python.org/3/library/dis.html#opcode-DELETE_DEREFj t DELETE_FAST(j&j&=https://docs.python.org/3/library/dis.html#opcode-DELETE_FASTj t DELETE_GLOBAL(j&j&?https://docs.python.org/3/library/dis.html#opcode-DELETE_GLOBALj t DELETE_NAME(j&j&=https://docs.python.org/3/library/dis.html#opcode-DELETE_NAMEj t DELETE_SUBSCR(j&j&?https://docs.python.org/3/library/dis.html#opcode-DELETE_SUBSCRj t DICT_MERGE(j&j&https://docs.python.org/3/library/dis.html#opcode-EXTENDED_ARGj t FORMAT_VALUE(j&j&>https://docs.python.org/3/library/dis.html#opcode-FORMAT_VALUEj tFOR_ITER(j&j&:https://docs.python.org/3/library/dis.html#opcode-FOR_ITERj t GET_AITER(j&j&;https://docs.python.org/3/library/dis.html#opcode-GET_AITERj t GET_ANEXT(j&j&;https://docs.python.org/3/library/dis.html#opcode-GET_ANEXTj t GET_AWAITABLE(j&j&?https://docs.python.org/3/library/dis.html#opcode-GET_AWAITABLEj tGET_ITER(j&j&:https://docs.python.org/3/library/dis.html#opcode-GET_ITERj tGET_LEN(j&j&9https://docs.python.org/3/library/dis.html#opcode-GET_LENj tGET_YIELD_FROM_ITER(j&j&Ehttps://docs.python.org/3/library/dis.html#opcode-GET_YIELD_FROM_ITERj t HAVE_ARGUMENT(j&j&?https://docs.python.org/3/library/dis.html#opcode-HAVE_ARGUMENTj t IMPORT_FROM(j&j&=https://docs.python.org/3/library/dis.html#opcode-IMPORT_FROMj t IMPORT_NAME(j&j&=https://docs.python.org/3/library/dis.html#opcode-IMPORT_NAMEj tIS_OP(j&j&7https://docs.python.org/3/library/dis.html#opcode-IS_OPj tJUMP(j&j&6https://docs.python.org/3/library/dis.html#opcode-JUMPj t JUMP_BACKWARD(j&j&?https://docs.python.org/3/library/dis.html#opcode-JUMP_BACKWARDj tJUMP_BACKWARD_NO_INTERRUPT(j&j&Lhttps://docs.python.org/3/library/dis.html#opcode-JUMP_BACKWARD_NO_INTERRUPTj t JUMP_FORWARD(j&j&>https://docs.python.org/3/library/dis.html#opcode-JUMP_FORWARDj tJUMP_NO_INTERRUPT(j&j&Chttps://docs.python.org/3/library/dis.html#opcode-JUMP_NO_INTERRUPTj tKW_NAMES(j&j&:https://docs.python.org/3/library/dis.html#opcode-KW_NAMESj t LIST_APPEND(j&j&=https://docs.python.org/3/library/dis.html#opcode-LIST_APPENDj t LIST_EXTEND(j&j&=https://docs.python.org/3/library/dis.html#opcode-LIST_EXTENDj tLOAD_ASSERTION_ERROR(j&j&Fhttps://docs.python.org/3/library/dis.html#opcode-LOAD_ASSERTION_ERRORj t LOAD_ATTR(j&j&;https://docs.python.org/3/library/dis.html#opcode-LOAD_ATTRj tLOAD_BUILD_CLASS(j&j&Bhttps://docs.python.org/3/library/dis.html#opcode-LOAD_BUILD_CLASSj t LOAD_CLOSURE(j&j&>https://docs.python.org/3/library/dis.html#opcode-LOAD_CLOSUREj t LOAD_CONST(j&j&https://docs.python.org/3/library/dis.html#opcode-RETURN_CONSTj tRETURN_GENERATOR(j&j&Bhttps://docs.python.org/3/library/dis.html#opcode-RETURN_GENERATORj t RETURN_VALUE(j&j&>https://docs.python.org/3/library/dis.html#opcode-RETURN_VALUEj tSEND(j&j&6https://docs.python.org/3/library/dis.html#opcode-SENDj tSETUP_ANNOTATIONS(j&j&Chttps://docs.python.org/3/library/dis.html#opcode-SETUP_ANNOTATIONSj t SETUP_CLEANUP(j&j&?https://docs.python.org/3/library/dis.html#opcode-SETUP_CLEANUPj t SETUP_FINALLY(j&j&?https://docs.python.org/3/library/dis.html#opcode-SETUP_FINALLYj t SETUP_WITH(j&j&https://docs.python.org/3/library/dis.html#opcode-STORE_GLOBALj t STORE_NAME(j&j&https://docs.python.org/3/library/dis.html#opcode-STORE_SUBSCRj tSWAP(j&j&6https://docs.python.org/3/library/dis.html#opcode-SWAPj t UNARY_INVERT(j&j&>https://docs.python.org/3/library/dis.html#opcode-UNARY_INVERTj tUNARY_NEGATIVE(j&j&@https://docs.python.org/3/library/dis.html#opcode-UNARY_NEGATIVEj t UNARY_NOT(j&j&;https://docs.python.org/3/library/dis.html#opcode-UNARY_NOTj t UNPACK_EX(j&j&;https://docs.python.org/3/library/dis.html#opcode-UNPACK_EXj tUNPACK_SEQUENCE(j&j&Ahttps://docs.python.org/3/library/dis.html#opcode-UNPACK_SEQUENCEj tWITH_EXCEPT_START(j&j&Chttps://docs.python.org/3/library/dis.html#opcode-WITH_EXCEPT_STARTj t YIELD_VALUE(j&j&=https://docs.python.org/3/library/dis.html#opcode-YIELD_VALUEj tustd:monitoring-event}(BRANCH(j&j&Mhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-BRANCHj tCALL(j&j&Khttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-CALLj tC_RAISE(j&j&Nhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-C_RAISEj tC_RETURN(j&j&Ohttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-C_RETURNj tEXCEPTION_HANDLED(j&j&Xhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-EXCEPTION_HANDLEDj t INSTRUCTION(j&j&Rhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-INSTRUCTIONj tJUMP(j&j&Khttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-JUMPj tLINE(j&j&Khttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-LINEj t NO_EVENTS(j&j&Phttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-NO_EVENTSj t PY_RESUME(j&j&Phttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-PY_RESUMEj t PY_RETURN(j&j&Phttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-PY_RETURNj tPY_START(j&j&Ohttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-PY_STARTj tPY_THROW(j&j&Ohttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-PY_THROWj t PY_UNWIND(j&j&Phttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-PY_UNWINDj tPY_YIELD(j&j&Ohttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-PY_YIELDj tRAISE(j&j&Lhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-RAISEj tRERAISE(j&j&Nhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-RERAISEj tSTOP_ITERATION(j&j&Uhttps://docs.python.org/3/library/sys.monitoring.html#monitoring-event-STOP_ITERATIONj tustd:doc}(about(j&j&$https://docs.python.org/3/about.htmlAbout these documentstbugs(j&j&#https://docs.python.org/3/bugs.htmlDealing with Bugstc-api/abstract(j&j&-https://docs.python.org/3/c-api/abstract.htmlAbstract Objects Layertc-api/allocation(j&j&/https://docs.python.org/3/c-api/allocation.htmlAllocating Objects on the Heaptc-api/apiabiversion(j&j&2https://docs.python.org/3/c-api/apiabiversion.htmlAPI and ABI Versioningt c-api/arg(j&j&(https://docs.python.org/3/c-api/arg.html%Parsing arguments and building valuest c-api/bool(j&j&)https://docs.python.org/3/c-api/bool.htmlBoolean Objectst c-api/buffer(j&j&+https://docs.python.org/3/c-api/buffer.htmlBuffer Protocoltc-api/bytearray(j&j&.https://docs.python.org/3/c-api/bytearray.htmlByte Array Objectst c-api/bytes(j&j&*https://docs.python.org/3/c-api/bytes.html Bytes Objectst c-api/call(j&j&)https://docs.python.org/3/c-api/call.html Call Protocolt c-api/capsule(j&j&,https://docs.python.org/3/c-api/capsule.htmlCapsulest c-api/cell(j&j&)https://docs.python.org/3/c-api/cell.html Cell Objectst c-api/code(j&j&)https://docs.python.org/3/c-api/code.html Code Objectst c-api/codec(j&j&*https://docs.python.org/3/c-api/codec.html$Codec registry and support functionst c-api/complex(j&j&,https://docs.python.org/3/c-api/complex.htmlComplex Number Objectstc-api/concrete(j&j&-https://docs.python.org/3/c-api/concrete.htmlConcrete Objects Layertc-api/contextvars(j&j&0https://docs.python.org/3/c-api/contextvars.htmlContext Variables Objectstc-api/conversion(j&j&/https://docs.python.org/3/c-api/conversion.html String conversion and formattingt c-api/coro(j&j&)https://docs.python.org/3/c-api/coro.htmlCoroutine Objectstc-api/datetime(j&j&-https://docs.python.org/3/c-api/datetime.htmlDateTime Objectstc-api/descriptor(j&j&/https://docs.python.org/3/c-api/descriptor.htmlDescriptor Objectst c-api/dict(j&j&)https://docs.python.org/3/c-api/dict.htmlDictionary Objectstc-api/exceptions(j&j&/https://docs.python.org/3/c-api/exceptions.htmlException Handlingt c-api/file(j&j&)https://docs.python.org/3/c-api/file.html File Objectst c-api/float(j&j&*https://docs.python.org/3/c-api/float.htmlFloating-Point Objectst c-api/frame(j&j&*https://docs.python.org/3/c-api/frame.html Frame Objectstc-api/function(j&j&-https://docs.python.org/3/c-api/function.htmlFunction Objectstc-api/gcsupport(j&j&.https://docs.python.org/3/c-api/gcsupport.html$Supporting Cyclic Garbage Collectiont c-api/gen(j&j&(https://docs.python.org/3/c-api/gen.htmlGenerator Objectst c-api/hash(j&j&)https://docs.python.org/3/c-api/hash.html PyHash APIt c-api/import(j&j&+https://docs.python.org/3/c-api/import.htmlImporting Modulest c-api/index(j&j&*https://docs.python.org/3/c-api/index.htmlPython/C API Reference Manualt c-api/init(j&j&)https://docs.python.org/3/c-api/init.html)Initialization, Finalization, and Threadstc-api/init_config(j&j&0https://docs.python.org/3/c-api/init_config.html#Python Initialization Configurationt c-api/intro(j&j&*https://docs.python.org/3/c-api/intro.html Introductiont c-api/iter(j&j&)https://docs.python.org/3/c-api/iter.htmlIterator Protocoltc-api/iterator(j&j&-https://docs.python.org/3/c-api/iterator.htmlIterator Objectst c-api/list(j&j&)https://docs.python.org/3/c-api/list.html List Objectst c-api/long(j&j&)https://docs.python.org/3/c-api/long.htmlInteger Objectst c-api/mapping(j&j&,https://docs.python.org/3/c-api/mapping.htmlMapping Protocolt c-api/marshal(j&j&,https://docs.python.org/3/c-api/marshal.htmlData marshalling supportt c-api/memory(j&j&+https://docs.python.org/3/c-api/memory.htmlMemory Managementtc-api/memoryview(j&j&/https://docs.python.org/3/c-api/memoryview.htmlMemoryView objectst c-api/method(j&j&+https://docs.python.org/3/c-api/method.htmlInstance Method Objectst c-api/module(j&j&+https://docs.python.org/3/c-api/module.htmlModule Objectst c-api/none(j&j&)https://docs.python.org/3/c-api/none.htmlThe None Objectt c-api/number(j&j&+https://docs.python.org/3/c-api/number.htmlNumber Protocoltc-api/objbuffer(j&j&.https://docs.python.org/3/c-api/objbuffer.htmlOld Buffer Protocolt c-api/object(j&j&+https://docs.python.org/3/c-api/object.htmlObject Protocolt c-api/objimpl(j&j&,https://docs.python.org/3/c-api/objimpl.htmlObject Implementation Supporttc-api/perfmaps(j&j&-https://docs.python.org/3/c-api/perfmaps.htmlSupport for Perf Mapstc-api/refcounting(j&j&0https://docs.python.org/3/c-api/refcounting.htmlReference Countingtc-api/reflection(j&j&/https://docs.python.org/3/c-api/reflection.html Reflectiontc-api/sequence(j&j&-https://docs.python.org/3/c-api/sequence.htmlSequence Protocolt c-api/set(j&j&(https://docs.python.org/3/c-api/set.html Set Objectst c-api/slice(j&j&*https://docs.python.org/3/c-api/slice.html Slice Objectst c-api/stable(j&j&+https://docs.python.org/3/c-api/stable.htmlC API Stabilitytc-api/structures(j&j&/https://docs.python.org/3/c-api/structures.htmlCommon Object Structurest c-api/sys(j&j&(https://docs.python.org/3/c-api/sys.htmlOperating System Utilitiest c-api/tuple(j&j&*https://docs.python.org/3/c-api/tuple.html Tuple Objectst c-api/type(j&j&)https://docs.python.org/3/c-api/type.html Type Objectstc-api/typehints(j&j&.https://docs.python.org/3/c-api/typehints.htmlObjects for Type Hintingt c-api/typeobj(j&j&,https://docs.python.org/3/c-api/typeobj.html Type Objectst c-api/unicode(j&j&,https://docs.python.org/3/c-api/unicode.htmlUnicode Objects and Codecstc-api/utilities(j&j&.https://docs.python.org/3/c-api/utilities.html Utilitiestc-api/veryhigh(j&j&-https://docs.python.org/3/c-api/veryhigh.htmlThe Very High Level Layert c-api/weakref(j&j&,https://docs.python.org/3/c-api/weakref.htmlWeak Reference Objectstcontents(j&j&'https://docs.python.org/3/contents.htmlPython Documentation contentst copyright(j&j&(https://docs.python.org/3/copyright.html Copyrightt*deprecations/c-api-pending-removal-in-3.14(j&j&Ihttps://docs.python.org/3/deprecations/c-api-pending-removal-in-3.14.htmlPending Removal in Python 3.14t*deprecations/c-api-pending-removal-in-3.15(j&j&Ihttps://docs.python.org/3/deprecations/c-api-pending-removal-in-3.15.htmlPending Removal in Python 3.15t,deprecations/c-api-pending-removal-in-future(j&j&Khttps://docs.python.org/3/deprecations/c-api-pending-removal-in-future.html"Pending Removal in Future Versionstdeprecations/index(j&j&1https://docs.python.org/3/deprecations/index.html Deprecationst$deprecations/pending-removal-in-3.13(j&j&Chttps://docs.python.org/3/deprecations/pending-removal-in-3.13.htmlPending Removal in Python 3.13t$deprecations/pending-removal-in-3.14(j&j&Chttps://docs.python.org/3/deprecations/pending-removal-in-3.14.htmlPending Removal in Python 3.14t$deprecations/pending-removal-in-3.15(j&j&Chttps://docs.python.org/3/deprecations/pending-removal-in-3.15.htmlPending Removal in Python 3.15t$deprecations/pending-removal-in-3.16(j&j&Chttps://docs.python.org/3/deprecations/pending-removal-in-3.16.htmlPending Removal in Python 3.16t&deprecations/pending-removal-in-future(j&j&Ehttps://docs.python.org/3/deprecations/pending-removal-in-future.html"Pending Removal in Future Versionstdistributing/index(j&j&1https://docs.python.org/3/distributing/index.htmlDistributing Python Modulestextending/building(j&j&1https://docs.python.org/3/extending/building.htmlBuilding C and C++ Extensionstextending/embedding(j&j&2https://docs.python.org/3/extending/embedding.html'Embedding Python in Another Applicationtextending/extending(j&j&2https://docs.python.org/3/extending/extending.htmlExtending Python with C or C++textending/index(j&j&.https://docs.python.org/3/extending/index.html.Extending and Embedding the Python Interpretertextending/newtypes(j&j&1https://docs.python.org/3/extending/newtypes.html)Defining Extension Types: Assorted Topicstextending/newtypes_tutorial(j&j&:https://docs.python.org/3/extending/newtypes_tutorial.html"Defining Extension Types: Tutorialtextending/windows(j&j&0https://docs.python.org/3/extending/windows.html(Building C and C++ Extensions on Windowst faq/design(j&j&)https://docs.python.org/3/faq/design.htmlDesign and History FAQt faq/extending(j&j&,https://docs.python.org/3/faq/extending.htmlExtending/Embedding FAQt faq/general(j&j&*https://docs.python.org/3/faq/general.htmlGeneral Python FAQtfaq/gui(j&j&&https://docs.python.org/3/faq/gui.htmlGraphic User Interface FAQt faq/index(j&j&(https://docs.python.org/3/faq/index.html!Python Frequently Asked Questionst faq/installed(j&j&,https://docs.python.org/3/faq/installed.html1“Why is Python Installed on my Computer?” FAQt faq/library(j&j&*https://docs.python.org/3/faq/library.htmlLibrary and Extension FAQtfaq/programming(j&j&.https://docs.python.org/3/faq/programming.htmlProgramming FAQt faq/windows(j&j&*https://docs.python.org/3/faq/windows.htmlPython on Windows FAQtglossary(j&j&'https://docs.python.org/3/glossary.htmlGlossarythowto/annotations(j&j&0https://docs.python.org/3/howto/annotations.htmlAnnotations Best Practicesthowto/argparse(j&j&-https://docs.python.org/3/howto/argparse.htmlArgparse Tutorialt howto/clinic(j&j&+https://docs.python.org/3/howto/clinic.htmlArgument Clinic How-Tothowto/cporting(j&j&-https://docs.python.org/3/howto/cporting.html%Porting Extension Modules to Python 3t howto/curses(j&j&+https://docs.python.org/3/howto/curses.htmlCurses Programming with Pythonthowto/descriptor(j&j&/https://docs.python.org/3/howto/descriptor.htmlDescriptor Guidet howto/enum(j&j&)https://docs.python.org/3/howto/enum.html Enum HOWTOthowto/functional(j&j&/https://docs.python.org/3/howto/functional.htmlFunctional Programming HOWTOthowto/gdb_helpers(j&j&0https://docs.python.org/3/howto/gdb_helpers.html9Debugging C API extensions and CPython Internals with GDBt howto/index(j&j&*https://docs.python.org/3/howto/index.html Python HOWTOsthowto/instrumentation(j&j&4https://docs.python.org/3/howto/instrumentation.html/Instrumenting CPython with DTrace and SystemTapthowto/ipaddress(j&j&.https://docs.python.org/3/howto/ipaddress.html'An introduction to the ipaddress modulethowto/isolating-extensions(j&j&9https://docs.python.org/3/howto/isolating-extensions.htmlIsolating Extension Modulest howto/logging(j&j&,https://docs.python.org/3/howto/logging.html Logging HOWTOthowto/logging-cookbook(j&j&5https://docs.python.org/3/howto/logging-cookbook.htmlLogging Cookbookt howto/mro(j&j&(https://docs.python.org/3/howto/mro.html&The Python 2.3 Method Resolution Orderthowto/perf_profiling(j&j&3https://docs.python.org/3/howto/perf_profiling.html*Python support for the Linux perf profilerthowto/pyporting(j&j&.https://docs.python.org/3/howto/pyporting.html%How to port Python 2 Code to Python 3t howto/regex(j&j&*https://docs.python.org/3/howto/regex.htmlRegular Expression HOWTOt howto/sockets(j&j&,https://docs.python.org/3/howto/sockets.htmlSocket Programming HOWTOt howto/sorting(j&j&,https://docs.python.org/3/howto/sorting.htmlSorting Techniquest howto/unicode(j&j&,https://docs.python.org/3/howto/unicode.html Unicode HOWTOt howto/urllib2(j&j&,https://docs.python.org/3/howto/urllib2.html7HOWTO Fetch Internet Resources Using The urllib Packagetinstalling/index(j&j&/https://docs.python.org/3/installing/index.htmlInstalling Python Modulest library/2to3(j&j&+https://docs.python.org/3/library/2to3.html12to3 — Automated Python 2 to 3 code translationtlibrary/__future__(j&j&1https://docs.python.org/3/library/__future__.html+__future__ — Future statement definitionstlibrary/__main__(j&j&/https://docs.python.org/3/library/__main__.html'__main__ — Top-level code environmenttlibrary/_thread(j&j&.https://docs.python.org/3/library/_thread.html#_thread — Low-level threading APIt library/abc(j&j&*https://docs.python.org/3/library/abc.htmlabc — Abstract Base Classest library/aifc(j&j&+https://docs.python.org/3/library/aifc.html+aifc — Read and write AIFF and AIFC filest library/allos(j&j&,https://docs.python.org/3/library/allos.html!Generic Operating System Servicestlibrary/archiving(j&j&0https://docs.python.org/3/library/archiving.htmlData Compression and Archivingtlibrary/argparse(j&j&/https://docs.python.org/3/library/argparse.htmlHargparse — Parser for command-line options, arguments and sub-commandst library/array(j&j&,https://docs.python.org/3/library/array.html,array — Efficient arrays of numeric valuest library/ast(j&j&*https://docs.python.org/3/library/ast.htmlast — Abstract Syntax Treestlibrary/asyncio(j&j&.https://docs.python.org/3/library/asyncio.htmlasyncio — Asynchronous I/Otlibrary/asyncio-api-index(j&j&8https://docs.python.org/3/library/asyncio-api-index.htmlHigh-level API Indextlibrary/asyncio-dev(j&j&2https://docs.python.org/3/library/asyncio-dev.htmlDeveloping with asynciotlibrary/asyncio-eventloop(j&j&8https://docs.python.org/3/library/asyncio-eventloop.html Event Looptlibrary/asyncio-exceptions(j&j&9https://docs.python.org/3/library/asyncio-exceptions.html Exceptionstlibrary/asyncio-extending(j&j&8https://docs.python.org/3/library/asyncio-extending.html Extendingtlibrary/asyncio-future(j&j&5https://docs.python.org/3/library/asyncio-future.htmlFuturestlibrary/asyncio-llapi-index(j&j&:https://docs.python.org/3/library/asyncio-llapi-index.htmlLow-level API Indextlibrary/asyncio-platforms(j&j&8https://docs.python.org/3/library/asyncio-platforms.htmlPlatform Supporttlibrary/asyncio-policy(j&j&5https://docs.python.org/3/library/asyncio-policy.htmlPoliciestlibrary/asyncio-protocol(j&j&7https://docs.python.org/3/library/asyncio-protocol.htmlTransports and Protocolstlibrary/asyncio-queue(j&j&4https://docs.python.org/3/library/asyncio-queue.htmlQueuestlibrary/asyncio-runner(j&j&5https://docs.python.org/3/library/asyncio-runner.htmlRunnerstlibrary/asyncio-stream(j&j&5https://docs.python.org/3/library/asyncio-stream.htmlStreamstlibrary/asyncio-subprocess(j&j&9https://docs.python.org/3/library/asyncio-subprocess.html Subprocessestlibrary/asyncio-sync(j&j&3https://docs.python.org/3/library/asyncio-sync.htmlSynchronization Primitivestlibrary/asyncio-task(j&j&3https://docs.python.org/3/library/asyncio-task.htmlCoroutines and Taskstlibrary/atexit(j&j&-https://docs.python.org/3/library/atexit.htmlatexit — Exit handlerstlibrary/audioop(j&j&.https://docs.python.org/3/library/audioop.html%audioop — Manipulate raw audio datatlibrary/audit_events(j&j&3https://docs.python.org/3/library/audit_events.htmlAudit events tabletlibrary/base64(j&j&-https://docs.python.org/3/library/base64.html8base64 — Base16, Base32, Base64, Base85 Data Encodingst library/bdb(j&j&*https://docs.python.org/3/library/bdb.htmlbdb — Debugger frameworktlibrary/binary(j&j&-https://docs.python.org/3/library/binary.htmlBinary Data Servicestlibrary/binascii(j&j&/https://docs.python.org/3/library/binascii.html-binascii — Convert between binary and ASCIItlibrary/bisect(j&j&-https://docs.python.org/3/library/bisect.html$bisect — Array bisection algorithmtlibrary/builtins(j&j&/https://docs.python.org/3/library/builtins.htmlbuiltins — Built-in objectst library/bz2(j&j&*https://docs.python.org/3/library/bz2.html%bz2 — Support for bzip2 compressiontlibrary/calendar(j&j&/https://docs.python.org/3/library/calendar.html/calendar — General calendar-related functionst library/cgi(j&j&*https://docs.python.org/3/library/cgi.html(cgi — Common Gateway Interface supportt library/cgitb(j&j&,https://docs.python.org/3/library/cgitb.html+cgitb — Traceback manager for CGI scriptst library/chunk(j&j&,https://docs.python.org/3/library/chunk.htmlchunk — Read IFF chunked datat library/cmath(j&j&,https://docs.python.org/3/library/cmath.html4cmath — Mathematical functions for complex numberst library/cmd(j&j&*https://docs.python.org/3/library/cmd.html6cmd — Support for line-oriented command interpreterstlibrary/cmdline(j&j&.https://docs.python.org/3/library/cmdline.html$Modules command-line interface (CLI)t library/code(j&j&+https://docs.python.org/3/library/code.html!code — Interpreter base classestlibrary/codecs(j&j&-https://docs.python.org/3/library/codecs.html*codecs — Codec registry and base classestlibrary/codeop(j&j&-https://docs.python.org/3/library/codeop.htmlcodeop — Compile Python codetlibrary/collections(j&j&2https://docs.python.org/3/library/collections.html#collections — Container datatypestlibrary/collections.abc(j&j&6https://docs.python.org/3/library/collections.abc.html8collections.abc — Abstract Base Classes for Containerstlibrary/colorsys(j&j&/https://docs.python.org/3/library/colorsys.html.colorsys — Conversions between color systemstlibrary/compileall(j&j&1https://docs.python.org/3/library/compileall.html,compileall — Byte-compile Python librariestlibrary/concurrency(j&j&2https://docs.python.org/3/library/concurrency.htmlConcurrent Executiontlibrary/concurrent(j&j&1https://docs.python.org/3/library/concurrent.htmlThe concurrent packagetlibrary/concurrent.futures(j&j&9https://docs.python.org/3/library/concurrent.futures.html/concurrent.futures — Launching parallel taskstlibrary/configparser(j&j&3https://docs.python.org/3/library/configparser.html*configparser — Configuration file parsertlibrary/constants(j&j&0https://docs.python.org/3/library/constants.htmlBuilt-in Constantstlibrary/contextlib(j&j&1https://docs.python.org/3/library/contextlib.html4contextlib — Utilities for with-statement contextstlibrary/contextvars(j&j&2https://docs.python.org/3/library/contextvars.html!contextvars — Context Variablest library/copy(j&j&+https://docs.python.org/3/library/copy.html)copy — Shallow and deep copy operationstlibrary/copyreg(j&j&.https://docs.python.org/3/library/copyreg.html-copyreg — Register pickle support functionst library/crypt(j&j&,https://docs.python.org/3/library/crypt.html*crypt — Function to check Unix passwordstlibrary/crypto(j&j&-https://docs.python.org/3/library/crypto.htmlCryptographic Servicest library/csv(j&j&*https://docs.python.org/3/library/csv.html$csv — CSV File Reading and Writingtlibrary/ctypes(j&j&-https://docs.python.org/3/library/ctypes.html0ctypes — A foreign function library for Pythontlibrary/curses(j&j&-https://docs.python.org/3/library/curses.html8curses — Terminal handling for character-cell displaystlibrary/curses.ascii(j&j&3https://docs.python.org/3/library/curses.ascii.html/curses.ascii — Utilities for ASCII characterstlibrary/curses.panel(j&j&3https://docs.python.org/3/library/curses.panel.html3curses.panel — A panel stack extension for cursestlibrary/custominterp(j&j&3https://docs.python.org/3/library/custominterp.htmlCustom Python Interpreterstlibrary/dataclasses(j&j&2https://docs.python.org/3/library/dataclasses.htmldataclasses — Data Classestlibrary/datatypes(j&j&0https://docs.python.org/3/library/datatypes.html Data Typestlibrary/datetime(j&j&/https://docs.python.org/3/library/datetime.html&datetime — Basic date and time typest library/dbm(j&j&*https://docs.python.org/3/library/dbm.html*dbm — Interfaces to Unix “databases”t library/debug(j&j&,https://docs.python.org/3/library/debug.htmlDebugging and Profilingtlibrary/decimal(j&j&.https://docs.python.org/3/library/decimal.html=decimal — Decimal fixed-point and floating-point arithmetictlibrary/development(j&j&2https://docs.python.org/3/library/development.htmlDevelopment Toolstlibrary/devmode(j&j&.https://docs.python.org/3/library/devmode.htmlPython Development Modetlibrary/dialog(j&j&-https://docs.python.org/3/library/dialog.htmlTkinter Dialogstlibrary/difflib(j&j&.https://docs.python.org/3/library/difflib.html(difflib — Helpers for computing deltast library/dis(j&j&*https://docs.python.org/3/library/dis.html(dis — Disassembler for Python bytecodetlibrary/distribution(j&j&3https://docs.python.org/3/library/distribution.html#Software Packaging and Distributiontlibrary/doctest(j&j&.https://docs.python.org/3/library/doctest.html,doctest — Test interactive Python examplest library/email(j&j&,https://docs.python.org/3/library/email.html,email — An email and MIME handling packagetlibrary/email.charset(j&j&4https://docs.python.org/3/library/email.charset.html*email.charset: Representing character setstlibrary/email.compat32-message(j&j&=https://docs.python.org/3/library/email.compat32-message.htmlKemail.message.Message: Representing an email message using the compat32 APItlibrary/email.contentmanager(j&j&;https://docs.python.org/3/library/email.contentmanager.html+email.contentmanager: Managing MIME Contenttlibrary/email.encoders(j&j&5https://docs.python.org/3/library/email.encoders.htmlemail.encoders: Encoderstlibrary/email.errors(j&j&3https://docs.python.org/3/library/email.errors.html*email.errors: Exception and Defect classestlibrary/email.examples(j&j&5https://docs.python.org/3/library/email.examples.htmlemail: Examplestlibrary/email.generator(j&j&6https://docs.python.org/3/library/email.generator.html*email.generator: Generating MIME documentstlibrary/email.header(j&j&3https://docs.python.org/3/library/email.header.html'email.header: Internationalized headerstlibrary/email.headerregistry(j&j&;https://docs.python.org/3/library/email.headerregistry.html+email.headerregistry: Custom Header Objectstlibrary/email.iterators(j&j&6https://docs.python.org/3/library/email.iterators.htmlemail.iterators: Iteratorstlibrary/email.message(j&j&4https://docs.python.org/3/library/email.message.html,email.message: Representing an email messagetlibrary/email.mime(j&j&1https://docs.python.org/3/library/email.mime.html8email.mime: Creating email and MIME objects from scratchtlibrary/email.parser(j&j&3https://docs.python.org/3/library/email.parser.html$email.parser: Parsing email messagestlibrary/email.policy(j&j&3https://docs.python.org/3/library/email.policy.htmlemail.policy: Policy Objectstlibrary/email.utils(j&j&2https://docs.python.org/3/library/email.utils.html$email.utils: Miscellaneous utilitiestlibrary/ensurepip(j&j&0https://docs.python.org/3/library/ensurepip.html-ensurepip — Bootstrapping the pip installert library/enum(j&j&+https://docs.python.org/3/library/enum.html!enum — Support for enumerationst library/errno(j&j&,https://docs.python.org/3/library/errno.html'errno — Standard errno system symbolstlibrary/exceptions(j&j&1https://docs.python.org/3/library/exceptions.htmlBuilt-in Exceptionstlibrary/faulthandler(j&j&3https://docs.python.org/3/library/faulthandler.html*faulthandler — Dump the Python tracebackt library/fcntl(j&j&,https://docs.python.org/3/library/fcntl.html*fcntl — The fcntl and ioctl system callstlibrary/filecmp(j&j&.https://docs.python.org/3/library/filecmp.html*filecmp — File and Directory Comparisonstlibrary/fileformats(j&j&2https://docs.python.org/3/library/fileformats.html File Formatstlibrary/fileinput(j&j&0https://docs.python.org/3/library/fileinput.htmlhttps://docs.python.org/3/library/importlib.resources.abc.html?importlib.resources.abc – Abstract base classes for resourcest library/index(j&j&,https://docs.python.org/3/library/index.htmlThe Python Standard Librarytlibrary/inspect(j&j&.https://docs.python.org/3/library/inspect.html inspect — Inspect live objectstlibrary/internet(j&j&/https://docs.python.org/3/library/internet.htmlInternet Protocols and Supportt library/intro(j&j&,https://docs.python.org/3/library/intro.html Introductiont library/io(j&j&)https://docs.python.org/3/library/io.html*io — Core tools for working with streamstlibrary/ipaddress(j&j&0https://docs.python.org/3/library/ipaddress.html,ipaddress — IPv4/IPv6 manipulation libraryt library/ipc(j&j&*https://docs.python.org/3/library/ipc.html)Networking and Interprocess Communicationtlibrary/itertools(j&j&0https://docs.python.org/3/library/itertools.html@itertools — Functions creating iterators for efficient loopingt library/json(j&j&+https://docs.python.org/3/library/json.html!json — JSON encoder and decodertlibrary/keyword(j&j&.https://docs.python.org/3/library/keyword.html'keyword — Testing for Python keywordstlibrary/language(j&j&/https://docs.python.org/3/library/language.htmlPython Language Servicestlibrary/linecache(j&j&0https://docs.python.org/3/library/linecache.html)linecache — Random access to text linestlibrary/locale(j&j&-https://docs.python.org/3/library/locale.html(locale — Internationalization servicestlibrary/logging(j&j&.https://docs.python.org/3/library/logging.html'logging — Logging facility for Pythontlibrary/logging.config(j&j&5https://docs.python.org/3/library/logging.config.html(logging.config — Logging configurationtlibrary/logging.handlers(j&j&7https://docs.python.org/3/library/logging.handlers.html%logging.handlers — Logging handlerst library/lzma(j&j&+https://docs.python.org/3/library/lzma.html-lzma — Compression using the LZMA algorithmtlibrary/mailbox(j&j&.https://docs.python.org/3/library/mailbox.html3mailbox — Manipulate mailboxes in various formatstlibrary/mailcap(j&j&.https://docs.python.org/3/library/mailcap.html!mailcap — Mailcap file handlingtlibrary/markup(j&j&-https://docs.python.org/3/library/markup.html"Structured Markup Processing Toolstlibrary/marshal(j&j&.https://docs.python.org/3/library/marshal.html0marshal — Internal Python object serializationt library/math(j&j&+https://docs.python.org/3/library/math.htmlmath — Mathematical functionstlibrary/mimetypes(j&j&0https://docs.python.org/3/library/mimetypes.html)mimetypes — Map filenames to MIME typest library/mm(j&j&)https://docs.python.org/3/library/mm.htmlMultimedia Servicest library/mmap(j&j&+https://docs.python.org/3/library/mmap.html#mmap — Memory-mapped file supporttlibrary/modulefinder(j&j&3https://docs.python.org/3/library/modulefinder.html.modulefinder — Find modules used by a scripttlibrary/modules(j&j&.https://docs.python.org/3/library/modules.htmlImporting Modulestlibrary/msilib(j&j&-https://docs.python.org/3/library/msilib.html3msilib — Read and write Microsoft Installer filestlibrary/msvcrt(j&j&-https://docs.python.org/3/library/msvcrt.html3msvcrt — Useful routines from the MS VC++ runtimetlibrary/multiprocessing(j&j&6https://docs.python.org/3/library/multiprocessing.html-multiprocessing — Process-based parallelismt%library/multiprocessing.shared_memory(j&j&Dhttps://docs.python.org/3/library/multiprocessing.shared_memory.htmlRmultiprocessing.shared_memory — Shared memory for direct access across processestlibrary/netdata(j&j&.https://docs.python.org/3/library/netdata.htmlInternet Data Handlingt library/netrc(j&j&,https://docs.python.org/3/library/netrc.htmlnetrc — netrc file processingt library/nis(j&j&*https://docs.python.org/3/library/nis.html/nis — Interface to Sun’s NIS (Yellow Pages)tlibrary/nntplib(j&j&.https://docs.python.org/3/library/nntplib.html nntplib — NNTP protocol clienttlibrary/numbers(j&j&.https://docs.python.org/3/library/numbers.html)numbers — Numeric abstract base classestlibrary/numeric(j&j&.https://docs.python.org/3/library/numeric.html Numeric and Mathematical Modulestlibrary/operator(j&j&/https://docs.python.org/3/library/operator.html,operator — Standard operators as functionstlibrary/optparse(j&j&/https://docs.python.org/3/library/optparse.html,optparse — Parser for command line optionst library/os(j&j&)https://docs.python.org/3/library/os.html0os — Miscellaneous operating system interfacestlibrary/os.path(j&j&.https://docs.python.org/3/library/os.path.html)os.path — Common pathname manipulationstlibrary/ossaudiodev(j&j&2https://docs.python.org/3/library/ossaudiodev.html6ossaudiodev — Access to OSS-compatible audio devicestlibrary/pathlib(j&j&.https://docs.python.org/3/library/pathlib.html,pathlib — Object-oriented filesystem pathst library/pdb(j&j&*https://docs.python.org/3/library/pdb.htmlpdb — The Python Debuggertlibrary/persistence(j&j&2https://docs.python.org/3/library/persistence.htmlData Persistencetlibrary/pickle(j&j&-https://docs.python.org/3/library/pickle.html&pickle — Python object serializationtlibrary/pickletools(j&j&2https://docs.python.org/3/library/pickletools.html+pickletools — Tools for pickle developerst library/pipes(j&j&,https://docs.python.org/3/library/pipes.html&pipes — Interface to shell pipelinestlibrary/pkgutil(j&j&.https://docs.python.org/3/library/pkgutil.html%pkgutil — Package extension utilitytlibrary/platform(j&j&/https://docs.python.org/3/library/platform.html@platform — Access to underlying platform’s identifying datatlibrary/plistlib(j&j&/https://docs.python.org/3/library/plistlib.html2plistlib — Generate and parse Apple .plist filestlibrary/poplib(j&j&-https://docs.python.org/3/library/poplib.htmlpoplib — POP3 protocol clientt library/posix(j&j&,https://docs.python.org/3/library/posix.html,posix — The most common POSIX system callstlibrary/pprint(j&j&-https://docs.python.org/3/library/pprint.htmlpprint — Data pretty printertlibrary/profile(j&j&.https://docs.python.org/3/library/profile.htmlThe Python Profilerst library/pty(j&j&*https://docs.python.org/3/library/pty.html!pty — Pseudo-terminal utilitiest library/pwd(j&j&*https://docs.python.org/3/library/pwd.htmlpwd — The password databasetlibrary/py_compile(j&j&1https://docs.python.org/3/library/py_compile.html*py_compile — Compile Python source filestlibrary/pyclbr(j&j&-https://docs.python.org/3/library/pyclbr.html(pyclbr — Python module browser supportt library/pydoc(j&j&,https://docs.python.org/3/library/pydoc.html8pydoc — Documentation generator and online help systemtlibrary/pyexpat(j&j&.https://docs.python.org/3/library/pyexpat.html2xml.parsers.expat — Fast XML parsing using Expattlibrary/python(j&j&-https://docs.python.org/3/library/python.htmlPython Runtime Servicest library/queue(j&j&,https://docs.python.org/3/library/queue.html$queue — A synchronized queue classtlibrary/quopri(j&j&-https://docs.python.org/3/library/quopri.html7quopri — Encode and decode MIME quoted-printable datatlibrary/random(j&j&-https://docs.python.org/3/library/random.html)random — Generate pseudo-random numberst library/re(j&j&)https://docs.python.org/3/library/re.html$re — Regular expression operationstlibrary/readline(j&j&/https://docs.python.org/3/library/readline.html#readline — GNU readline interfacetlibrary/reprlib(j&j&.https://docs.python.org/3/library/reprlib.html+reprlib — Alternate repr() implementationtlibrary/resource(j&j&/https://docs.python.org/3/library/resource.html'resource — Resource usage informationtlibrary/rlcompleter(j&j&2https://docs.python.org/3/library/rlcompleter.html4rlcompleter — Completion function for GNU readlinet library/runpy(j&j&,https://docs.python.org/3/library/runpy.html/runpy — Locating and executing Python modulest library/sched(j&j&,https://docs.python.org/3/library/sched.htmlsched — Event schedulertlibrary/secrets(j&j&.https://docs.python.org/3/library/secrets.html?secrets — Generate secure random numbers for managing secretstlibrary/security_warnings(j&j&8https://docs.python.org/3/library/security_warnings.htmlSecurity Considerationstlibrary/select(j&j&-https://docs.python.org/3/library/select.html%select — Waiting for I/O completiontlibrary/selectors(j&j&0https://docs.python.org/3/library/selectors.html)selectors — High-level I/O multiplexingtlibrary/shelve(j&j&-https://docs.python.org/3/library/shelve.html$shelve — Python object persistencet library/shlex(j&j&,https://docs.python.org/3/library/shlex.html!shlex — Simple lexical analysistlibrary/shutil(j&j&-https://docs.python.org/3/library/shutil.html%shutil — High-level file operationstlibrary/signal(j&j&-https://docs.python.org/3/library/signal.html/signal — Set handlers for asynchronous eventst library/site(j&j&+https://docs.python.org/3/library/site.html)site — Site-specific configuration hooktlibrary/smtplib(j&j&.https://docs.python.org/3/library/smtplib.html smtplib — SMTP protocol clienttlibrary/sndhdr(j&j&-https://docs.python.org/3/library/sndhdr.html'sndhdr — Determine type of sound filetlibrary/socket(j&j&-https://docs.python.org/3/library/socket.html)socket — Low-level networking interfacetlibrary/socketserver(j&j&3https://docs.python.org/3/library/socketserver.html0socketserver — A framework for network serverst library/spwd(j&j&+https://docs.python.org/3/library/spwd.html%spwd — The shadow password databasetlibrary/sqlite3(j&j&.https://docs.python.org/3/library/sqlite3.html5sqlite3 — DB-API 2.0 interface for SQLite databasest library/ssl(j&j&*https://docs.python.org/3/library/ssl.html*ssl — TLS/SSL wrapper for socket objectst library/stat(j&j&+https://docs.python.org/3/library/stat.html$stat — Interpreting stat() resultstlibrary/statistics(j&j&1https://docs.python.org/3/library/statistics.html0statistics — Mathematical statistics functionstlibrary/stdtypes(j&j&/https://docs.python.org/3/library/stdtypes.htmlBuilt-in Typestlibrary/string(j&j&-https://docs.python.org/3/library/string.html#string — Common string operationstlibrary/stringprep(j&j&1https://docs.python.org/3/library/stringprep.html*stringprep — Internet String Preparationtlibrary/struct(j&j&-https://docs.python.org/3/library/struct.html0struct — Interpret bytes as packed binary datatlibrary/subprocess(j&j&1https://docs.python.org/3/library/subprocess.html$subprocess — Subprocess managementt library/sunau(j&j&,https://docs.python.org/3/library/sunau.html%sunau — Read and write Sun AU filestlibrary/superseded(j&j&1https://docs.python.org/3/library/superseded.htmlSuperseded Modulestlibrary/symtable(j&j&/https://docs.python.org/3/library/symtable.html5symtable — Access to the compiler’s symbol tablest library/sys(j&j&*https://docs.python.org/3/library/sys.html0sys — System-specific parameters and functionstlibrary/sys.monitoring(j&j&5https://docs.python.org/3/library/sys.monitoring.html-sys.monitoring — Execution event monitoringtlibrary/sys_path_init(j&j&4https://docs.python.org/3/library/sys_path_init.html5The initialization of the sys.path module search pathtlibrary/sysconfig(j&j&0https://docs.python.org/3/library/sysconfig.htmlDsysconfig — Provide access to Python’s configuration informationtlibrary/syslog(j&j&-https://docs.python.org/3/library/syslog.html'syslog — Unix syslog library routinestlibrary/tabnanny(j&j&/https://docs.python.org/3/library/tabnanny.html/tabnanny — Detection of ambiguous indentationtlibrary/tarfile(j&j&.https://docs.python.org/3/library/tarfile.html,tarfile — Read and write tar archive filestlibrary/telnetlib(j&j&0https://docs.python.org/3/library/telnetlib.htmltelnetlib — Telnet clienttlibrary/tempfile(j&j&/https://docs.python.org/3/library/tempfile.html5tempfile — Generate temporary files and directoriestlibrary/termios(j&j&.https://docs.python.org/3/library/termios.html#termios — POSIX style tty controlt library/test(j&j&+https://docs.python.org/3/library/test.html,test — Regression tests package for Pythont library/text(j&j&+https://docs.python.org/3/library/text.htmlText Processing Servicestlibrary/textwrap(j&j&/https://docs.python.org/3/library/textwrap.html&textwrap — Text wrapping and fillingtlibrary/threading(j&j&0https://docs.python.org/3/library/threading.html&threading — Thread-based parallelismt library/time(j&j&+https://docs.python.org/3/library/time.html$time — Time access and conversionstlibrary/timeit(j&j&-https://docs.python.org/3/library/timeit.html8timeit — Measure execution time of small code snippetst library/tk(j&j&)https://docs.python.org/3/library/tk.html!Graphical User Interfaces with Tktlibrary/tkinter(j&j&.https://docs.python.org/3/library/tkinter.html&tkinter — Python interface to Tcl/Tktlibrary/tkinter.colorchooser(j&j&;https://docs.python.org/3/library/tkinter.colorchooser.html.tkinter.colorchooser — Color choosing dialogtlibrary/tkinter.dnd(j&j&2https://docs.python.org/3/library/tkinter.dnd.html%tkinter.dnd — Drag and drop supporttlibrary/tkinter.font(j&j&3https://docs.python.org/3/library/tkinter.font.html%tkinter.font — Tkinter font wrappertlibrary/tkinter.messagebox(j&j&9https://docs.python.org/3/library/tkinter.messagebox.html.tkinter.messagebox — Tkinter message promptstlibrary/tkinter.scrolledtext(j&j&;https://docs.python.org/3/library/tkinter.scrolledtext.html-tkinter.scrolledtext — Scrolled Text Widgettlibrary/tkinter.tix(j&j&2https://docs.python.org/3/library/tkinter.tix.html(tkinter.tix — Extension widgets for Tktlibrary/tkinter.ttk(j&j&2https://docs.python.org/3/library/tkinter.ttk.html!tkinter.ttk — Tk themed widgetst library/token(j&j&,https://docs.python.org/3/library/token.html0token — Constants used with Python parse treestlibrary/tokenize(j&j&/https://docs.python.org/3/library/tokenize.html(tokenize — Tokenizer for Python sourcetlibrary/tomllib(j&j&.https://docs.python.org/3/library/tomllib.htmltomllib — Parse TOML filest library/trace(j&j&,https://docs.python.org/3/library/trace.html3trace — Trace or track Python statement executiontlibrary/traceback(j&j&0https://docs.python.org/3/library/traceback.html1traceback — Print or retrieve a stack tracebacktlibrary/tracemalloc(j&j&2https://docs.python.org/3/library/tracemalloc.html(tracemalloc — Trace memory allocationst library/tty(j&j&*https://docs.python.org/3/library/tty.html"tty — Terminal control functionstlibrary/turtle(j&j&-https://docs.python.org/3/library/turtle.htmlturtle — Turtle graphicst library/types(j&j&,https://docs.python.org/3/library/types.htmlhttps://docs.python.org/3/library/2to3.html#to3fixer-funcattrsj tfuture(j&j&;https://docs.python.org/3/library/2to3.html#to3fixer-futurej tgetcwdu(j&j&https://docs.python.org/3/library/2to3.html#to3fixer-itertoolsj titertools_imports(j&j&Fhttps://docs.python.org/3/library/2to3.html#to3fixer-itertools_importsj tlong(j&j&9https://docs.python.org/3/library/2to3.html#to3fixer-longj tmap(j&j&8https://docs.python.org/3/library/2to3.html#to3fixer-mapj t metaclass(j&j&>https://docs.python.org/3/library/2to3.html#to3fixer-metaclassj t methodattrs(j&j&@https://docs.python.org/3/library/2to3.html#to3fixer-methodattrsj tne(j&j&7https://docs.python.org/3/library/2to3.html#to3fixer-nej tnext(j&j&9https://docs.python.org/3/library/2to3.html#to3fixer-nextj tnonzero(j&j&https://docs.python.org/3/library/2to3.html#to3fixer-raw_inputj treduce(j&j&;https://docs.python.org/3/library/2to3.html#to3fixer-reducej treload(j&j&;https://docs.python.org/3/library/2to3.html#to3fixer-reloadj trenames(j&j&(j?(jA(jB(jD(jE(jG(jH(jJ(jK(jM(jN(jP(jQ(jS(jT(jV(jW(jY(jZ(j\(j](j_(j`(jb(jc(je(jf(jh(ji(jk(jl(jn(jo(jq(jr(jt(ju(jw(jx(jz(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(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(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(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)j)j)j)j)j)j)j)j)j)j)j )j")j#)j%)j&)j()j))j+)j,)j.)j/)j1)j2)j4)j5)j7)j8)j:)j;)j=)j>)j@)jA)jC)jD)jF)jG)jI)jJ)jL)jM)jO)jP)jR)jS)jU)jV)jX)jY)j[)j\)j^)j_)ja)jb)jd)je)jg)jh)jj)jk)jm)jn)jp)jq)js)jt)jv)jw)jy)jz)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)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)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)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*j*j*j*j*j*j*j*j*j*j*j!*j"*j$*j%*j'*j(*j**j+*j-*j.*j0*j1*j3*j4*j6*j7*j9*j:*j<*j=*j?*j@*jB*jC*jE*jF*jH*jI*jK*jL*jN*jO*jQ*jR*jT*jU*jW*jX*jZ*j[*j]*j^*j`*ja*jc*jd*jf*jg*ji*jj*jl*jm*jo*jp*jr*js*ju*jv*jx*jy*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*j*j*j*j*j*j*j*j*uj*}(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*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*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+j+j +j"+j#+j%+j&+j(+j)+j++j,+j.+j/+j1+j2+j4+j5+j7+j8+j:+j;+j=+j>+j@+jA+jC+jD+jF+jG+jI+jJ+jL+jM+jO+jP+jR+jS+jU+jV+jX+jY+j[+j\+j^+j_+ja+jb+jd+je+jg+jh+jj+jk+jm+jn+jp+jq+js+jt+jv+jw+jy+jz+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+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+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+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,j,j,j,j,j,j,j,j,j,j,j!,j",j$,j%,j',j(,j*,j+,j-,j.,j0,j1,j3,j4,j6,j7,j9,j:,j<,j=,j?,j@,jB,jC,jE,jF,jH,jI,jK,jL,jN,jO,jQ,jR,jT,jU,jW,jX,jZ,j[,j],j^,j`,ja,jc,jd,jf,jg,ji,ujj,}(jl,jn,jo,jq,jr,jt,ju,jw,jx,jz,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,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,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,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-j-j-j-j-j-j-j-j-j-j-j -j"-j#-j%-j&-j(-j)-j+-j,-j.-j/-j1-j2-j4-j5-j7-j8-j:-j;-j=-j>-j@-jA-jC-jD-jF-jG-jI-jJ-jL-jM-jO-jP-jR-jS-jU-jV-jX-jY-j[-j\-j^-j_-ja-jb-jd-je-jg-jh-jj-jk-jm-jn-jp-jq-js-jt-jv-jw-jy-jz-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-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-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-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.j.j.j.j.j.j.j.j.j.j.j!.j".j$.j%.j'.j(.j*.j+.j-.j..j0.j1.j3.j4.j6.j7.j9.j:.j<.j=.j?.j@.jB.jC.jE.jF.jH.jI.jK.jL.jN.jO.jQ.jR.jT.jU.jW.jX.jZ.j[.j].j^.j`.ja.jc.jd.jf.jg.ji.jj.jl.jm.jo.jp.jr.js.ju.jv.jx.jy.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.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.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.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/j/j/j/j/j/j/j/j/j/j/j /j!/j#/j$/j&/j'/j)/j*/j,/j-/j//j0/j2/j3/j5/j6/j8/j9/j;/j/j?/jA/jB/jD/jE/jG/jH/jJ/jK/jM/jN/jP/jQ/jS/jT/jV/jW/jY/jZ/j\/j]/j_/j`/jb/jc/je/jf/jh/ji/jk/jl/jn/jo/jq/jr/jt/ju/jw/jx/jz/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/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/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/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j0j0j0j0j0j0j 0j 0j 0j0j0j0j0j0j0j0j0j0j0j0j0j 0j"0j#0j%0j&0j(0j)0j+0j,0j.0j/0j10j20j40j50j70j80j:0j;0j=0j>0j@0jA0jC0jD0jF0jG0jI0jJ0jL0jM0jO0jP0jR0jS0jU0jV0jX0jY0j[0j\0j^0j_0ja0jb0jd0je0jg0jh0jj0jk0jm0jn0jp0jq0js0jt0jv0jw0jy0jz0j|0j}0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j1j1j1j1j1j1j 1j 1j 1j 1j1j1j1j1j1j1j1j1j1j1j1j1j!1j"1j$1j%1j'1j(1j*1j+1j-1j.1j01j11j31j41j61j71j91j:1j<1j=1j?1j@1jB1jC1jE1jF1jH1jI1jK1jL1jN1jO1jQ1jR1jT1jU1jW1jX1jZ1j[1j]1j^1j`1ja1jc1jd1jf1jg1ji1jj1jl1jm1jo1jp1jr1js1ju1jv1jx1jy1j{1j|1j~1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j2j2j2j2j2j2j 2j 2j 2j2j2j2j2j2j2j2j2j2j2j2j2j 2j!2j#2j$2j&2j'2j)2j*2j,2j-2j/2j02j22j32j52j62j82j92j;2j<2j>2j?2jA2jB2jD2jE2jG2jH2jJ2jK2jM2jN2jP2jQ2jS2jT2jV2jW2jY2jZ2j\2j]2j_2j`2jb2jc2je2jf2jh2ji2jk2jl2jn2jo2jq2jr2jt2ju2jw2jx2jz2j{2j}2j~2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j3j3j3j3j3j3j 3j 3j 3j3j3j3j3j3j3j3j3j3j3j3j3j 3j"3j#3j%3j&3j(3j)3j+3j,3j.3j/3j13j23j43j53j73j83j:3j;3j=3j>3j@3jA3jC3jD3jF3jG3jI3jJ3jL3jM3jO3jP3jR3jS3jU3jV3jX3jY3j[3j\3j^3j_3ja3jb3jd3je3jg3jh3jj3jk3jm3jn3jp3jq3js3jt3jv3jw3jy3jz3j|3j}3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j4j4j4j4j4j4j 4j 4j 4j 4j4j4j4j4j4j4j4j4j4j4j4j4j!4j"4j$4j%4j'4j(4j*4j+4j-4j.4j04j14j34j44j64j74j94j:4j<4j=4j?4j@4jB4jC4jE4jF4jH4jI4jK4jL4jN4jO4jQ4jR4jT4jU4jW4jX4jZ4j[4j]4j^4j`4ja4jc4jd4jf4jg4ji4jj4jl4jm4jo4jp4jr4js4ju4jv4jx4jy4j{4j|4j~4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j5j5j5j5j5j5j 5j 5j 5j5j5j5j5j5j5j5j5j5j5j5j5j 5j!5j#5j$5j&5j'5j)5j*5j,5j-5j/5j05j25j35j55j65j85j95j;5j<5j>5j?5jA5jB5jD5jE5jG5jH5jJ5jK5jM5jN5jP5jQ5jS5jT5jV5jW5jY5jZ5j\5j]5j_5j`5jb5jc5je5jf5jh5ji5jk5jl5jn5jo5jq5jr5jt5ju5jw5jx5jz5j{5j}5j~5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j6j6j6j6j6j6j 6j 6j 6j6j6j6j6j6j6j6j6j6j6j6j6j 6j"6j#6j%6j&6j(6j)6j+6j,6j.6j/6j16j26j46j56j76j86j:6j;6j=6j>6j@6jA6jC6jD6jF6jG6jI6jJ6jL6jM6jO6jP6jR6jS6jU6jV6jX6jY6j[6j\6j^6j_6ja6jb6jd6je6jg6jh6jj6jk6jm6jn6jp6jq6js6jt6jv6jw6jy6jz6j|6j}6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j7j7j7j7j7j7j 7j 7j 7j 7j7j7j7j7j7j7j7j7j7j7j7j7j!7j"7j$7j%7j'7j(7j*7j+7j-7j.7j07j17j37j47j67j77j97j:7j<7j=7j?7j@7jB7jC7jE7jF7jH7jI7jK7jL7jN7jO7jQ7jR7jT7jU7jW7jX7jZ7j[7j]7j^7j`7ja7jc7jd7jf7jg7ji7jj7jl7jm7jo7jp7jr7js7ju7jv7jx7jy7j{7j|7j~7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j8j8j8j8j8j8j 8j 8j 8j8j8j8j8j8j8j8j8j8j8j8j8j 8j!8j#8u(j$8j&8j'8j)8j*8j,8j-8j/8j08j28j38j58j68j88j98j;8j<8j>8j?8jA8jB8jD8jE8jG8jH8jJ8jK8jM8jN8jP8jQ8jS8jT8jV8jW8jY8jZ8j\8j]8j_8j`8jb8jc8je8jf8jh8ji8jk8jl8jn8jo8jq8jr8jt8ju8jw8jx8jz8j{8j}8j~8j8j8j8j8j8j8j8j8j8j8j8j8j8uj8}(j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j9j9j9j9j9j9j 9j 9j 9j 9j9j9j9j9j9j9j9j9j9j9j9j9j!9j"9j$9j%9j'9j(9j*9j+9j-9j.9j09j19j39j49j69j79j99j:9j<9j=9j?9j@9jB9jC9jE9jF9jH9jI9jK9jL9jN9jO9jQ9jR9jT9jU9jW9jX9jZ9j[9j]9j^9j`9ja9jc9jd9jf9jg9ji9jj9jl9jm9jo9jp9jr9js9ju9jv9jx9jy9j{9j|9j~9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j: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&:j':j):j*:j,:j-:j/:j0:j2:j3:j5:j6:j8:j9:j;:j<:j>:j?:jA:jB:jD:jE:jG:jH:jJ:jK:jM:jN:jP:jQ:jS:jT:jV:jW:jY:jZ:j\:j]:j_:j`:jb:jc:je:jf:jh:ji:jk:jl:jn:jo:jq:jr:jt:ju:jw:jx:jz: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: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: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: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;j;j;j;j;j;j;j;j;j;j;j ;j";j#;j%;j&;j(;j);j+;j,;j.;j/;j1;j2;j4;j5;j7;j8;j:;j;;j=;j>;j@;jA;jC;jD;jF;jG;jI;jJ;jL;jM;jO;jP;jR;jS;jU;jV;jX;jY;j[;j\;j^;j_;ja;jb;jd;je;jg;jh;jj;jk;jm;jn;jp;jq;js;jt;jv;jw;jy;jz;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;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;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;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<j<j<j<j<j<j<j<j<j<j<j!<j"<j$<j%<j'<j(<j*<j+<j-<j.<j0<j1<j3<j4<j6<j7<j9<j:<j<<j=<j?<j@<jB<jC<jE<jF<jH<jI<jK<jL<jN<jO<jQ<jR<jT<jU<jW<jX<jZ<j[<j]<j^<j`<ja<jc<jd<jf<jg<ji<jj<jl<jm<jo<jp<jr<js<ju<jv<jx<jy<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<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<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<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=j=j=j=j=j=j=j=j=j=j=j =j!=j#=j$=j&=j'=j)=j*=j,=j-=j/=j0=j2=j3=j5=j6=j8=j9=j;=j<=j>=j?=jA=jB=jD=jE=jG=jH=jJ=jK=jM=jN=jP=jQ=jS=jT=jV=jW=jY=jZ=j\=j]=j_=j`=jb=jc=je=jf=jh=ji=jk=jl=jn=jo=jq=jr=jt=ju=jw=jx=jz=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=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=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=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>j>j>j>j>j>j>j>j>j>j>j >j">j#>j%>j&>j(>j)>j+>j,>j.>j/>j1>j2>j4>j5>j7>j8>j:>j;>j=>j>>j@>jA>jC>jD>jF>jG>jI>jJ>jL>jM>jO>jP>jR>jS>jU>jV>jX>jY>j[>j\>j^>j_>ja>jb>jd>je>jg>jh>jj>jk>jm>jn>jp>jq>js>jt>jv>jw>jy>jz>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>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>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>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?j?j?j?j?j?j?j?j?j?j?j!?j"?j$?j%?j'?j(?j*?j+?j-?j.?j0?j1?j3?j4?j6?j7?j9?j:?j@j?@jA@jB@jD@jE@jG@jH@jJ@jK@jM@jN@jP@jQ@jS@jT@jV@jW@jY@jZ@j\@j]@j_@j`@jb@jc@je@jf@jh@ji@jk@jl@jn@jo@jq@jr@jt@ju@jw@jx@jz@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@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@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@j@j@j@j@j@j@j@j@j@j@j@j@j@j@jAjAjAjAjAjAj Aj Aj AjAjAjAjAjAjAjAjAjAjAjAjAj Aj"Aj#Aj%Aj&Aj(Aj)Aj+Aj,Aj.Aj/Aj1Aj2Aj4Aj5Aj7Aj8Aj:Aj;Aj=Aj>Aj@AjAAjCAjDAjFAjGAjIAjJAjLAjMAjOAjPAjRAjSAjUAjVAjXAjYAj[Aj\Aj^Aj_AjaAjbAjdAjeAjgAjhAjjAjkAjmAjnAjpAjqAjsAjtAjvAjwAjyAjzAj|Aj}AjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjBjBjBjBjBjBj Bj Bj Bj BjBjBjBjBjBjBjBjBjBjBjBjBj!Bj"Bj$Bj%Bj'Bj(Bj*Bj+Bj-Bj.Bj0Bj1Bj3Bj4Bj6Bj7Bj9Bj:BjCj?CjACjBCjDCjECjGCjHCjJCjKCjMCjNCjPCjQCjSCjTCjVCjWCjYCjZCj\Cj]Cj_Cj`CjbCjcCjeCjfCjhCjiCjkCjlCjnCjoCjqCjrCjtCjuCjwCjxCjzCj{Cj}Cj~CjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjDjDjDjDjDjDj Dj Dj DjDjDjDjDjDjDjDjDjDjDjDjDj Dj"Dj#Dj%Dj&Dj(Dj)Dj+Dj,Dj.Dj/Dj1Dj2Dj4Dj5Dj7Dj8Dj:Dj;Dj=Dj>Dj@DjADjCDjDDjFDjGDjIDjJDjLDu(jMDjODjPDjRDjSDjUDjVDjXDjYDj[Dj\Dj^Dj_DjaDjbDjdDjeDjgDjhDjjDjkDjmDjnDjpDjqDjsDjtDjvDjwDjyDjzDj|Dj}DjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjEjEjEjEjEjEj Ej Ej Ej EjEjEjEjEjEjEjEjEjEjEjEjEj!Ej"Ej$Ej%Ej'Ej(Ej*Ej+Ej-Ej.Ej0Ej1Ej3Ej4Ej6Ej7Ej9Ej:EjFj?FjAFjBFjDFjEFjGFjHFjJFjKFjMFjNFjPFjQFjSFjTFjVFjWFjYFjZFj\Fj]Fj_Fj`FjbFjcFjeFjfFjhFjiFjkFjlFjnFjoFjqFjrFjtFjuFjwFjxFjzFj{Fj}Fj~FjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjGjGjGjGjGjGj Gj Gj GjGjGjGjGjGjGjGjGjGjGjGjGj Gj"Gj#Gj%Gj&Gj(Gj)Gj+Gj,Gj.Gj/Gj1Gj2Gj4Gj5Gj7Gj8Gj:Gj;Gj=Gj>Gj@GjAGjCGjDGjFGjGGjIGjJGjLGjMGjOGjPGjRGjSGjUGjVGjXGjYGj[Gj\Gj^Gj_GjaGjbGjdGjeGjgGjhGjjGjkGjmGjnGjpGjqGjsGjtGjvGjwGjyGjzGj|Gj}GjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjGjHjHjHjHjHjHj Hj Hj Hj HjHjHjHjHjHjHjHjHjHjHjHjHj!Hj"Hj$Hj%Hj'Hj(Hj*Hj+Hj-Hj.Hj0Hj1Hj3Hj4Hj6Hj7Hj9Hj:HjIj?IjAIjBIjDIjEIjGIjHIjJIjKIjMIjNIjPIjQIjSIjTIjVIjWIjYIjZIj\Ij]Ij_Ij`IjbIjcIjeIjfIjhIjiIjkIjlIjnIjoIjqIjrIjtIjuIjwIjxIjzIj{Ij}Ij~IjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjJjJjJjJjJjJj Jj Jj JjJjJjJjJjJjJjJjJjJjJjJjJj Jj"Jj#Jj%Jj&Jj(Jj)Jj+Jj,Jj.Jj/Jj1Jj2Jj4Jj5Jj7Jj8Jj:Jj;Jj=Jj>Jj@JjAJjCJjDJjFJjGJjIJjJJjLJjMJjOJjPJjRJjSJjUJjVJjXJjYJj[Jj\Jj^Jj_JjaJjbJjdJjeJjgJjhJjjJjkJjmJjnJjpJjqJjsJjtJjvJjwJjyJjzJj|Jj}JjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjKjKjKjKjKjKj Kj Kj Kj KjKjKjKjKjKjKjKjKjKjKjKjKj!Kj"Kj$Kj%Kj'Kj(Kj*Kj+Kj-Kj.Kj0Kj1Kj3Kj4Kj6Kj7Kj9Kj:KjLj?LjALjBLjDLjELjGLjHLjJLjKLjMLjNLjPLjQLjSLjTLjVLjWLjYLjZLj\Lj]Lj_Lj`LjbLjcLjeLjfLjhLjiLjkLjlLjnLjoLjqLjrLjtLjuLjwLjxLjzLj{Lj}Lj~LjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjMjMjMjMjMjMj Mj Mj MjMjMjMjMjMjMjMjMjMjMjMjMj Mj"Mj#Mj%Mj&Mj(Mj)Mj+Mj,Mj.Mj/Mj1Mj2Mj4Mj5Mj7Mj8Mj:Mj;Mj=Mj>Mj@MjAMjCMjDMjFMjGMjIMjJMjLMjMMjOMjPMjRMjSMjUMjVMjXMjYMj[Mj\Mj^Mj_MjaMjbMjdMjeMjgMjhMjjMjkMjmMujnM}(jpMjrMjsMjuMjvMjxMjyMj{Mj|Mj~MjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjNjNjNjNjNjNj Nj Nj NjNjNjNjNjNjNjNjNjNjNjNjNj Nj!Nj#Nj$Nj&Nj'Nj)Nj*Nj,Nj-Nj/Nj0Nj2Nj3Nj5Nj6Nj8Nj9Nj;NjNj?NjANjBNjDNjENjGNjHNjJNjKNjMNjNNjPNjQNjSNjTNjVNjWNjYNjZNj\Nj]Nj_Nj`NjbNjcNjeNjfNjhNjiNjkNjlNjnNjoNjqNjrNjtNjuNjwNjxNjzNj{Nj}Nj~NjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNujN}(jNjNjNjNjNjNjNjNujN}(jNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjNjOjOjOjOjOjOj Oj Oj OjOjOjOjOjOjOjOjOjOjOjOjOj Oj!Oj#Oj$Oj&Oj'Oj)Oj*Oj,Oj-Oj/Oj0Oj2Oj3Oj5Oj6Oj8Oj9Oj;OjOj?OjAOjBOjDOjEOjGOjHOjJOjKOjMOjNOjPOjQOjSOjTOjVOjWOjYOjZOj\Oj]Oj_Oj`OjbOjcOjeOjfOjhOjiOjkOjlOjnOjoOjqOjrOjtOjuOjwOjxOjzOj{Oj}Oj~OjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjPjPjPjPjPjPj Pj Pj PjPjPjPjPjPjPjPjPjPjPjPjPj Pj"Pj#Pj%Pj&Pj(Pj)Pj+Pj,Pj.Pj/Pj1Pj2Pj4Pj5Pj7Pj8Pj:Pj;Pj=Pj>Pj@PjAPjCPjDPjFPjGPjIPjJPjLPjMPjOPjPPjRPjSPjUPjVPjXPjYPj[Pj\Pj^Pj_PjaPjbPjdPjePjgPjhPjjPjkPjmPjnPjpPjqPjsPjtPjvPjwPjyPjzPj|Pj}PjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjQjQjQjQjQjQj Qj Qj Qj QjQjQjQjQjQjQjQjQjQjQjQjQj!Qj"Qj$Qj%Qj'Qj(Qj*Qj+Qj-Qj.Qj0Qj1Qj3Qj4Qj6Qj7Qj9Qj:QjRj?RjARjBRjDRjERjGRjf!jh!ji!jk!jl!jn!jo!jq!jr!jt!ju!jw!jx!jz!j{!j}!j~!j!j!j!j!j!ujHR}(jJRjLRjMRjORjPRjRRjSRjURjVRjXRjYRj[Rj\Rj^Rj_RjaRjbRjdRjeRjgRjhRjjRjkRjmRjnRjpRjqRjsRjtRjvRjwRjyRjzRj|Rj}RjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjSjSjSjSjSjSj Sj Sj Sj SjSjSjSjSjSjSjSjSjSjSjSjSj!Sj"Sj$Sj%Sj'Sj(Sj*Sj+Sj-Sj.Sj0Sj1Sj3Sj4Sj6Sj7Sj9Sj:SjTj?TjATjBTjDTjETjGTjHTjJTjKTjMTjNTjPTjQTjSTjTTjVTjWTjYTjZTj\Tj]Tj_Tj`TjbTjcTjeTjfTjhTjiTjkTjlTjnTjoTjqTjrTjtTjuTjwTjxTjzTj{Tj}Tj~TjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjUjUjUjUjUjUj Uj Uj UjUjUjUjUjUjUjUjUjUjUjUjUj Uj"Uj#Uj%Uj&Uj(Uj)Uj+Uj,Uj.Uj/Uj1Uj2Uj4Uj5Uj7Uj8Uj:Uj;Uj=Uj>Uj@UjAUjCUjDUjFUjGUjIUjJUjLUjMUjOUjPUjRUjSUjUUjVUjXUjYUj[Uj\Uj^Uj_UjaUjbUjdUjeUjgUjhUjjUjkUjmUjnUjpUjqUjsUjtUjvUjwUjyUjzUj|Uj}UjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjUjVjVjVjVjVjVj Vj Vj Vj VjVjVjVjVjVjVjVjVjVjVjVjVj!Vj"Vj$Vj%Vj'Vj(Vj*Vj+Vj-Vj.Vj0Vj1Vj3Vj4Vj6Vj7Vj9Vj:VjWj?WjAWjBWjDWjEWjGWjHWjJWjKWjMWjNWjPWjQWjSWjTWjVWjWWjYWjZWj\Wj]Wj_Wj`WjbWjcWjeWjfWjhWjiWjkWjlWjnWjoWjqWjrWjtWjuWjwWjxWjzWj{Wj}Wj~WjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjWjXjXjXjXjXjXj Xj Xj XjXjXjXjXjXjXjXjXjXjXjXjXj Xj"Xj#Xj%Xj&Xj(Xj)Xj+Xj,Xj.Xj/Xj1Xj2Xj4Xj5Xj7Xj8Xj:Xj;Xj=Xj>Xj@XjAXjCXjDXjFXjGXjIXjJXjLXjMXjOXjPXjRXjSXjUXjVXjXXjYXj[Xj\Xj^Xj_XjaXjbXjdXjeXjgXjhXjjXjkXjmXjnXjpXjqXjsXjtXjvXjwXjyXjzXj|Xj}XjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjYjYjYjYjYjYj Yj Yj Yj YjYjYjYjYjYjYjYjYjYjYjYjYj!Yj"Yj$Yj%Yj'Yj(Yj*Yj+Yj-Yj.Yj0Yj1Yj3Yj4Yj6Yj7Yj9Yj:YjZj?ZjAZjBZjDZjEZjGZjHZjJZjKZjMZjNZjPZjQZjSZjTZjVZjWZjYZjZZj\Zj]Zj_Zj`ZjbZjcZjeZjfZjhZjiZjkZjlZjnZjoZjqZjrZjtZjuZjwZjxZjzZj{Zj}Zj~ZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZjZj[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&[j([j)[j+[j,[j.[j/[j1[j2[j4[j5[j7[j8[j:[j;[j=[j>[j@[jA[jC[jD[jF[jG[jI[jJ[jL[jM[jO[jP[jR[jS[jU[jV[jX[jY[j[[j\[j^[j_[ja[jb[jd[je[jg[jh[jj[jk[jm[jn[jp[jq[js[jt[jv[jw[jy[jz[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[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[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[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\j\j\j\j\j\j\j\j\j\j\j!\j"\j$\j%\j'\j(\j*\j+\j-\j.\j0\j1\j3\j4\j6\j7\j9\j:\j<\j=\j?\j@\jB\jC\jE\jF\jH\jI\jK\jL\jN\jO\jQ\jR\jT\jU\jW\jX\jZ\j[\j]\j^\j`\ja\jc\jd\jf\jg\ji\jj\jl\jm\jo\jp\jr\js\ju\jv\jx\jy\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\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\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\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]j]j]j]j]j]j]j]j]j]j]j ]j!]j#]j$]j&]j']j)]j*]j,]j-]j/]j0]j2]j3]j5]j6]j8]j9]j;]j<]j>]j?]jA]jB]jD]jE]jG]jH]jJ]jK]jM]jN]jP]jQ]jS]jT]jV]jW]jY]jZ]j\]j]]j_]j`]jb]jc]je]jf]jh]ji]jk]jl]jn]jo]jq]jr]jt]ju]jw]jx]jz]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]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]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]j]j]j]j]j]j]j]j]j]j]j]j]j]j]j^u(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&^j(^j)^j+^j,^j.^j/^j1^j2^j4^j5^j7^j8^j:^j;^j=^j>^j@^jA^jC^jD^jF^jG^jI^jJ^jL^jM^jO^jP^jR^jS^jU^jV^jX^jY^j[^j\^j^^j_^ja^jb^jd^je^jg^jh^jj^jk^jm^jn^jp^jq^js^jt^jv^jw^jy^jz^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^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^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^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_j_j_j_j_j_j_j_j_j_j_j!_j"_j$_j%_j'_j(_j*_j+_j-_j._j0_j1_j3_j4_j6_j7_j9_j:_j<_j=_j?_j@_jB_jC_jE_jF_jH_jI_jK_jL_jN_jO_jQ_jR_jT_jU_jW_jX_jZ_j[_j]_j^_j`_ja_jc_jd_jf_jg_ji_jj_jl_jm_jo_jp_jr_js_ju_jv_jx_jy_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_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_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_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`j`j`j`j`j`j`j`j`j`j`j `j!`j#`j$`j&`j'`j)`j*`j,`j-`j/`j0`j2`j3`j5`j6`j8`j9`j;`j<`j>`j?`jA`jB`jD`jE`jG`jH`jJ`jK`jM`jN`jP`jQ`jS`jT`jV`jW`jY`jZ`j\`j]`j_`j``jb`jc`je`jf`jh`ji`jk`jl`jn`jo`jq`jr`jt`ju`jw`jx`jz`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`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`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`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 !j !j!j!j!j!j!j!j!j!j!j!j!j!j!!j"!j$!j%!j'!j(!j*!j+!j-!j.!j0!j1!j3!j4!j6!j7!j9!j:!jbj?bjAbjBbjDbjEbjGbjHbjJbjKbjMbjNbjPbjQbjSbjTbjVbjWbjYbjZbj\bj]bj_bj`bjbbjcbjebjfbjhbjibjkbjlbjnbjobjqbjrbjtbjubjwbjxbjzbj{bj}bj~bjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjcjcjcjcjcjcj cj cj cjcjcjcjcjcjcjcjcjcjcjcjcj cj"cj#cj%cj&cj(cj)cj+cj,cj.cj/cj1cj2cj4cj5cj7cj8cj:cj;cj=cj>cj@cjAcjCcjDcjFcjGcjIcjJcjLcjMcjOcjPcjRcjScjUcjVcjXcjYcj[cj\cj^cj_cjacjbcjdcjecjgcjhcjjcjkcjmcjncjpcjqcjscjtcjvcjwcjycjzcj|cj}cjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjdjdjdjdjdjdj dj dj dj djdjdjdjdjdjdjdjdjdjdjdjdj!dj"dj$dj%dj'dj(dj*dj+dj-dj.dj0dj1dj3dj4dj6dj7dj9dj:djej?ejAejBejDejEejGejHejJejKejMejNejPejQejSejTejVejWejYejZej\ej]ej_ej`ejbejcejeejfejhejiejkejlejnejoejqejrejtejuejwejxejzej{ej}ej~ejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejejfjfjfjfjfjfj fj fj fjfjfjfjfjfjfjfjfjfjfjfjfj fj"fj#fj%fj&fj(fj)fj+fj,fj.fj/fj1fj2fj4fj5fj7fj8fj:fj;fj=fj>fj@fjAfjCfjDfjFfjGfjIfjJfjLfjMfjOfjPfjRfjSfjUfjVfjXfjYfj[fj\fj^fj_fjafjbfjdfjefjgfjhfjjfjkfjmfjnfjpfjqfjsfjtfjvfjwfjyfjzfj|fj}fjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjgjgjgjgjgjgj gj gj gj gjgjgjgjgjgjgjgjgjgjgjgjgj!gj"gj$gj%gj'gj(gj*gj+gj-gj.gj0gj1gj3gj4gj6gj7gj9gj:gjhj?hjAhjBhjDhjEhjGhjHhjJhjKhjMhjNhjPhjQhjShjThjVhjWhjYhjZhj\hj]hj_hj`hjbhjchjehjfhjhhjihjkhjlhjnhjohjqhjrhjthjuhjwhjxhjzhj{hj}hj~hjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjijijijijijij ij ij ijijijijijijijijijijijijij ij"ij#ij%ij&ij(ij)ij+ij,ij.ij/ij1ij2ij4ij5ij7ij8ij:ij;ij=ij>ij@ijAijCijDijFijGijIijJijLijMijOijPijRijSijUijVijXijYij[ij\ij^ij_ijaijbijdijeijgijhijjijkijmijnijpijqijsijtijvijwijyijzij|ij}ijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijjjjjjjjjjjjj jj jj jj jjjjjjjjjjjjjjjjjjjjjjjjjj!jj"jj$jj%jj'jj(jj*jj+jj-jj.jj0jj1jj3jj4jj6jj7jj9jj:jjkj?kjAkjBkjDkjEkjGkjHkjJkjKkjMkjNkjPkjQkjSkjTkjVkjWkjYkjZkj\kj]kj_kj`kjbkjckjekjfkjhkjikjkkjlkjnkjokjqkjrkjtkjukjwkjxkjzkj{kj}kj~kjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjljljljljljlj lj lj ljljljljljljljljljljljljlj lj"lj#lj%lj&lj(lj)lj+lj,lj.lj/lj1lj2lj4lj5lj7lj8lj:lj;lj=lj>lj@ljAljCljDljFljGljIljJljLljMljOljPljRljSljUljVljXljYlj[lj\lj^lj_ljaljbljdljeljgljhljjljkljmljnljpljqljsljtljvljwljyljzlj|lj}ljljljljljljljljljljljljljljljljljljljljljljljljljljljljljlu(jljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljljmjmjmjmjmjmj mj mj mj mjmjmjmjmjmjmjmjmjmjmjmjmj!mj"mj$mj%mj'mj(mj*mj+mj-mj.mj0mj1mj3mj4mj6mj7mj9mj:mjnj?njAnjBnjDnjEnjGnjHnjJnjKnjMnjNnjPnjQnjSnjTnjVnjWnjYnjZnj\nj]nj_nj`njbnjcnjenjfnjhnjinjknjlnjnnjonjqnjrnjtnjunjwnjxnjznj{nj}nj~njnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjnjojojojojojoj oj oj ojojojojojojojojojojojojoj oj"oj#oj%oj&oj(oj)oj+oj,oj.oj/oj1oj2oj4oj5oj7oj8oj:oj;oj=oj>oj@ojAojCojDojFojGojIojJojLojMojOojPojRojSojUojVojXojYoj[oj\oj^oj_ojaojbojdojeojgojhojjojkojmojnojpojqojsojtojvojwojyojzoj|oj}ojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojojpjpjpjpjpjpj pj pj pj pjpjpjpjpjpjpjpjpjpjpjpjpj!pj"pj$pj%pj'pj(pj*pj+pj-pj.pj0pj1pj3pj4pj6pj7pj9pj:pjqj?qjAqjBqjDqjEqjGqjHqjJqjKqjMqjNqjPqjQqjSqjTqjVqjWqjYqjZqj\qj]qj_qj`qjbqjcqjeqjfqjhqjiqjkqjlqjnqjoqjqqjrqjtqjuqjwqjxqjzqj{qj}qj~qjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjqjrjrjrjrjrjrj rj rj rjrjrjrjrjrjrjrjrjrjrjrjrj rj"rj#rj%rj&rj(rj)rj+rj,rj.rj/rj1rj2rj4rj5rj7rj8rj:rj;rj=rj>rj@rjArjCrjDrjFrjGrjIrjJrjLrjMrjOrjPrjRrjSrjUrjVrjXrjYrj[rj\rj^rj_rjarjbrjdrjerjgrjhrjjrjkrjmrjnrjprjqrjsrjtrjvrjwrjyrjzrj|rj}rjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjsjsjsjsjsjsj sj sj sj sjsjsjsjsjsjsjsjsjsjsjsjsj!sj"sj$sj%sj'sj(sj*sj+sj-sj.sj0sj1sj3sj4sj6sj7sj9sj:sjtj?tjAtjBtjDtjEtjGtjHtjJtjKtjMtjNtjPtjQtjStjTtjVtjWtjYtjZtj\tj]tj_tj`tjbtjctjetjftjhtjitjktjltjntjotjqtjrtjttjutjwtjxtjztj{tj}tj~tjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjujujujujujuj uj uj ujujujujujujujujujujujujuj uj"uj#uj%uj&uj(uj)uj+uj,uj.uj/uj1uj2uj4uj5uj7uj8uj:uj;uj=uj>uj@ujAujCujDujFujGujIujJujLujMujOujPujRujSujUujVujXujYuj[uj\uj^uj_ujaujbujdujeujgujhujjujkujmujnujpujqujsujtujvujwujyujzuj|uj}ujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujujvjvjvjvjvjvj vj vj vj vjvjvjvjvjvjvjvjvjvjvjvjvj!vj"vj$vj%vj'vj(vj*vj+vj-vj.vj0vj1vj3vj4vj6vj7vj9vj:vjwj?wjAwjBwjDwjEwjGwjHwjJwjKwjMwjNwjPwjQwjSwjTwjVwjWwjYwjZwj\wj]wj_wj`wjbwjcwjewjfwjhwjiwjkwjlwjnwjowjqwjrwjtwjuwjwwjxwjzwj{wj}wj~wjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjxjxjxjxjxjxj xj xj xjxjxjxjxjxjxjxjxjxjxjxjxj xj"xj#xj%xj&xj(xj)xj+xj,xj.xj/xj1xj2xj4xj5xj7xj8xj:xj;xj=xj>xj@xjAxjCxjDxjFxjGxjIxjJxjLxjMxjOxjPxjRxjSxjUxjVxjXxjYxj[xj\xj^xj_xjaxu(jbxjdxjexjgxjhxjjxjkxjmxjnxjpxjqxjsxjtxjvxjwxjyxjzxj|xj}xjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjxjyjyjyjyjyjyj yj yj yj yjyjyjyjyjyjyjyjyjyjyjyjyj!yj"yj$yj%yj'yj(yj*yj+yj-yj.yj0yj1yj3yj4yj6yj7yj9yj:yjzj?zjAzjBzjDzjEzjGzjHzjJzjKzjMzjNzjPzjQzjSzjTzjVzjWzjYzjZzj\zj]zj_zj`zjbzjczjezjfzjhzjizjkzjlzjnzjozjqzjrzjtzjuzjwzjxzjzzj{zj}zj~zjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzj{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&{j({j){j+{j,{j.{j/{j1{j2{j4{j5{j7{j8{j:{j;{j={j>{j@{jA{jC{jD{jF{jG{jI{jJ{jL{jM{jO{jP{jR{jS{jU{jV{jX{jY{j[{j\{j^{j_{ja{jb{jd{je{jg{jh{jj{jk{jm{jn{jp{jq{js{jt{jv{jw{jy{jz{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{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{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{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|j|j|j|j|j|j|j|j|j|j|j!|j"|j$|j%|j'|j(|j*|j+|j-|j.|j0|j1|j3|j4|j6|j7|j9|j:|j<|j=|j?|j@|jB|jC|jE|jF|jH|jI|jK|jL|jN|jO|jQ|jR|jT|jU|jW|jX|jZ|j[|j]|j^|j`|ja|jc|jd|jf|jg|ji|jj|jl|jm|jo|jp|jr|js|ju|jv|jx|jy|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|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|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|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}j}j}j}j}j}j}j}j}j}j}j }j!}j#}j$}j&}j'}j)}j*}j,}j-}j/}j0}j2}j3}j5}j6}j8}j9}j;}j<}j>}j?}jA}jB}jD}jE}jG}jH}jJ}jK}jM}jN}jP}jQ}jS}jT}jV}jW}jY}jZ}j\}j]}j_}j`}jb}jc}je}jf}jh}ji}jk}jl}jn}jo}jq}jr}jt}ju}jw}jx}jz}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}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}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}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~j~j~j~j~j~j~j~j~j~j~j ~j"~j#~j%~j&~j(~j)~j+~j,~j.~j/~j1~j2~j4~j5~j7~j8~j:~j;~j=~j>~j@~jA~jC~jD~jF~jG~jI~jJ~jL~jM~jO~jP~jR~jS~jU~jV~jX~jY~j[~j\~j^~j_~ja~jb~jd~je~jg~jh~jj~jk~jm~jn~jp~jq~js~jt~jv~jw~jy~jz~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~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~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~j~j~j~j~j~j~j~j~j~j~j~j~j~jjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj€jÀjŀjƀjȀjɀjˀj̀j΀jπjрjҀjԀjՀj׀j؀jڀjۀj݀jހjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjājŁjǁjȁjʁjˁj́j΁jЁjсjӁjԁjցjׁjفjځj܁j݁j߁jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÂjĂjƂjǂjɂjʂĵj͂jςjЂj҂jӂjՂjւj؂jقjۂj܂jނj߂jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjƒjÃjŃjƃjȃjɃj˃j̃j΃jσjуj҃jԃjՃj׃j؃jڃjۃj݃jރjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjju(jjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj„jĄjńjDŽjȄjʄj˄j̈́j΄jЄjфjӄjԄjքjׄjلjڄj܄j݄j߄jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÅjąjƅjDžjɅjʅj̅jͅjυjЅj҅jӅjՅjօj؅jمjۅj܅jޅj߅jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtj6"j8"j9"j;"j<"j>"j?"jA"jB"jD"jE"jG"jH"jJ"jK"jM"jN"jP"jQ"jS"jT"jV"jW"jY"jZ"j\"j]"j_"j`"jb"jc"je"jf"jh"ji"jk"jl"jn"jo"jq"jr"jt"ju"jw"jx"jz"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"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"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"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#j#j#j#j#j#j#j#j#j#j#j #j"#j##j%#j&#j(#j)#j+#j,#j.#j/#j1#j2#j4#j5#j7#j8#j:#j;#j=#j>#j@#jA#jC#jD#jF#jG#jI#jJ#jL#jM#jO#jP#jR#jS#jU#jV#jX#jY#j[#j\#j^#j_#ja#jb#jd#je#jg#jh#jj#jk#jm#jn#jp#jq#js#jt#jv#jw#jy#jz#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#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#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#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$j$j$j$j$j$j$j$j$j$j$j!$j"$j$$j%$j'$j($j*$j+$j-$j.$j0$j1$j3$j4$j6$j7$j9$j:$j<$j=$j?$j@$jB$jC$jE$jF$jH$jI$jK$jL$jN$uju}(jwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj†jĆjņjdžjȆjʆjˆj͆jΆjІjцjӆjԆjֆj׆jنjچj܆j݆j߆jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÇjćjƇjLJjɇjʇj̇j͇jχjЇj҇jӇjՇjևj؇jهjۇj܇jއj߇jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjˆjÈjňjƈjȈjɈjˈj̈jΈjψjшj҈jԈjՈj׈j؈jڈjۈj݈jވjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj‰jĉjʼnjljjȉjʉjˉj͉jΉjЉjщjӉjԉj։j׉jىjډj܉j݉j߉jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÊjĊjƊjNJjɊjʊj̊j͊jϊjЊjҊjӊjՊj֊j؊jيjۊj܊jފjߊjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj‹jËjŋjƋjȋjɋjˋj̋j΋jϋjыjҋjԋjՋj׋j؋jڋjۋj݋jދjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjŒjČjŌjnjjȌjʌjˌj͌jΌjЌjьjӌjԌj֌j׌jٌjڌj܌j݌jߌjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÍjčjƍjǍjɍjʍj̍j͍jύjЍjҍjӍjՍj֍j؍jٍjۍj܍jލjߍjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjŽjÎjŎjƎjȎjɎjˎj̎jΎjώjюjҎjԎjՎj׎j؎jڎjێjݎjގjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjďjŏjǏjȏjʏjˏj͏jΏjЏjяjӏjԏj֏j׏jُjڏj܏jݏjߏjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÐjĐjƐjǐjɐjʐj̐j͐jϐjАjҐjӐjՐj֐jؐjِjېjܐjސjߐjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj‘jÑjőjƑjȑjɑjˑj̑jΑjϑjёjґjԑjՑjבjؑjڑjۑjݑjޑjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.u(j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj’jĒjŒjǒjȒjʒj˒j͒jΒjВjђjӒjԒj֒jגjْjڒjܒjݒjߒjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÓjējƓjǓjɓjʓj̓j͓jϓjГjғjӓjՓj֓jؓjٓjۓjܓjޓjߓjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj”jÔjŔjƔjȔjɔj˔j̔jΔjϔjєjҔjԔjՔjהjؔjڔj۔jݔjޔjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj•jĕjŕjǕjȕjʕj˕j͕jΕjЕjѕjӕjԕj֕jוjٕjڕjܕjݕjߕjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÖjĖjƖjǖjɖjʖj̖j͖jϖjЖjҖjӖjՖj֖jؖjٖjۖjܖjޖjߖjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj—j×jŗjƗjȗjɗj˗j̗jΗjϗjїjҗjԗj՗jחjؗjڗjۗjݗjޗjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj˜jĘjŘjǘjȘjʘj˘j͘jΘjИjјjӘjԘj֘jטj٘jژjܘjݘjߘjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTj%j%j%j%ujU}(jWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj™jÙjřjƙjșjəj˙j̙jΙjϙjљjҙjԙjՙjיjؙjڙjۙjݙjޙjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjšjĚjŚjǚjȚjʚj˚j͚jΚjКjњjӚjԚj֚jךjٚjښjܚjݚjߚjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÛjějƛjǛjɛjʛj̛j͛jϛjЛjқjӛj՛j֛j؛jٛjۛjܛjޛjߛjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjœjÜjŜjƜjȜjɜj˜j̜jΜjϜjќjҜjԜj՜jלj؜jڜjۜjݜjޜjjjj j j j j j j j j j j j uj}(jjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjÝjĝjƝjǝjɝjʝj̝j͝jϝjНjҝjӝj՝j֝j؝jٝj۝jܝjޝjߝjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjžjÞjŞjƞjȞjɞj˞j̞jΞjϞjўjҞjԞj՞jמj؞jڞj۞jݞjޞjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjŸjğjşjǟjȟjʟj˟j͟jΟjПjџjӟjԟj֟jןjٟjڟjܟjݟjߟjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjàjĠjƠjǠjɠjʠj̠j͠jϠjРjҠjӠjՠj֠jؠj٠j۠jܠjޠjߠjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¡jájšjơjȡjɡjˡj̡jΡjϡjѡjҡjԡjաjסjءjڡjۡjݡjޡjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¢jĢjŢjǢjȢjʢjˢj͢j΢jТjѢjӢjԢj֢jעj٢jڢjܢjݢjߢjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjãjģjƣjǣjɣjʣj̣jͣjϣjУjңjӣjգj֣jأj٣jۣjܣjޣjߣjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¤jäjŤjƤjȤjɤjˤj̤jΤjϤjѤjҤjԤjդjפjؤjڤjۤjݤjޤjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¥jĥjťjǥjȥjʥj˥jͥjΥjХjѥjӥjԥj֥jץj٥jڥjܥjݥjߥjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjæjĦjƦjǦjɦjʦj̦jͦjϦjЦjҦjӦjզj֦jئj٦jۦjܦjަjߦjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj§jçjŧjƧjȧjɧj˧j̧jΧjϧjѧjҧjԧjէjקjاjڧjۧjݧjާjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj 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!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!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!j!j!j!j!j!j!j!j!u(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"j!"j""j$"j%"j'"j("j*"j+"j-"j."j0"j1"j3"uj,}(j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjèjĨjƨjǨjɨjʨj̨jͨjϨjШjҨjӨjըj֨jبj٨jۨjܨjިjߨjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj©jéjũjƩjȩjɩj˩j̩jΩjϩjѩjҩjԩjթjשjةjکj۩jݩjީjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjªjĪjŪjǪjȪjʪj˪jͪjΪjЪjѪjӪjԪj֪jתj٪jڪjܪjݪjߪjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjëjījƫjǫjɫjʫj̫jͫjϫjЫjҫjӫjիj֫jثj٫j۫jܫjޫj߫jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¬jìjŬjƬjȬjɬjˬj̬jάjϬjѬjҬjԬjլj׬jجjڬj۬jݬjެjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj­jĭjŭjǭjȭjʭj˭jͭjέjЭjѭjӭjԭj֭j׭j٭jڭjܭjݭj߭jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjîjĮjƮjǮjɮjʮj̮jͮjϮjЮjҮjӮjծj֮jخjٮjۮjܮjޮj߮jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¯jïjůjƯjȯjɯj˯j̯jίjϯjѯjүjԯjկjׯjدjگjۯjݯjޯjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj°jİjŰjǰjȰjʰj˰jͰjΰjаjѰjӰj԰jְjװjٰjڰjܰjݰj߰jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjñjıjƱjDZjɱjʱj̱jͱjϱjбjұjӱjձjֱjرjٱj۱jܱjޱj߱jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj²jòjŲjƲjȲjɲj˲j̲jβjϲjѲjҲjԲjղjײjزjڲj۲jݲj޲jjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj³jijjųjdzjȳjʳj˳jͳjγjгjѳjӳjԳjֳj׳jٳjڳjܳjݳj߳jjjju(jjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjôjĴjƴjǴjɴjʴj̴jʹjϴjдjҴjӴjմjִjشjٴj۴jܴj޴jߴjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjµjõjŵjƵjȵjɵj˵j̵jεjϵjѵjҵjԵjյj׵jصjڵj۵jݵj޵jjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¶jĶjŶjǶjȶjʶj˶jͶjζjжjѶjӶjԶjֶj׶jٶjڶjܶjݶj߶jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj÷jķjƷjǷjɷjʷj̷jͷjϷjзjҷjӷjշjַjطjٷj۷jܷj޷j߷jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¸jøjŸjƸjȸjɸj˸j̸jθjϸjѸjҸjԸjոj׸jظjڸj۸jݸj޸jjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¹jĹjŹjǹjȹjʹj˹j͹jιjйjѹjӹjԹjֹj׹jٹjڹjܹjݹj߹jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjújĺjƺjǺjɺjʺj̺jͺjϺjкjҺjӺjպjֺjغjٺjۺjܺj޺jߺjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj»jûjŻjƻjȻjɻj˻j̻jλjϻjѻjһjԻjջj׻jػjڻjۻjݻj޻jjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¼jļjżjǼjȼjʼj˼jͼjμjмjѼjӼjԼjּj׼jټjڼjܼjݼj߼jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjýjĽjƽjǽjɽjʽj̽jͽjϽjнjҽjӽjսjֽjؽjٽj۽jܽj޽j߽jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj¾jþjžjƾjȾjɾj˾j̾jξjϾjѾjҾjԾjվj׾jؾjھj۾jݾj޾jjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjju(jjjjjjjjjjjjjjjjjjjjjjjjj¿jĿjſjǿjȿjʿj˿jͿjοjпjѿjӿjԿjֿj׿jٿjڿjܿjݿj߿jjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOj$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$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$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%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%%j'%j(%j*%j+%j-%j.%j0%j1%j3%j4%j6%j7%j9%j:%j<%j=%j?%j@%jB%jC%jE%jF%jH%jI%jK%jL%jN%jO%jQ%jR%jT%jU%jW%jX%jZ%j[%j]%j^%j`%ja%jc%jd%jf%jg%ji%jj%jl%jm%jo%jp%jr%js%ju%jv%jx%jy%j{%j|%j~%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%Oj%ujP}(jRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}(jjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhjijkjljnjojqjrjtjujwjxjzj{j}j&j&uj~}(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjj j!j$j%j(j)j,j-j0j1j4j5j8j9j<j=j@jAjDjEjHjIjKjLjOjPjSjTjWjXj[j\j_j`jcjdjgjhjkjljojpjsjtjwjxj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj!j"j%j&j(j)j,j-j0j1j4j5j7j8j:j;j=j>jAjBjDjEjGjHjJjKjNjOjQjRjTjUjWjXj[j\j_j`jcjdjfjgjjjkjnjojrjsjvjwjzj{j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj!j"j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^jajbjejfjijjjmjnjqjrjujvjyjzj}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjQjRjUjVjYjZj]j^jajbjejfjhjijljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj!j"j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^jajbjejfjijjjmjnjqjrjujvjyjzj}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjPjQjTjUjWjXj[j\j_j`jcjdjgjhjkjljojpjsjtjwjxj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjj j#j$j'j(j+j,j/j0j3j4j7j8j;j<j?j@jCjDjGjHjKjLjOjPjSjTjWjXj[j\j_j`jcjdjgjhjkjljojpjsjtjwjxj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjHjIjLjMjPjQjTjUjXjYj\j]j`jajdjejhjijljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^j`jajdjejhjijljmjpjqjsjtjwjxj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj&jjjjjjjj j jjjjj &jjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jAjBjDjEjHjIjKjLjOjPjSjTjWjXj[j\j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjj j!j$j%j(j)j,j-j0j1j4j5j8j9j<j=j@jAjDjEjHjIjLjMjPjQjTjUjXjYj\j]j`jajdjejhjijljmjpjqjtjujxjyj&j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj!j"j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^j`jajdjejhjijljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjj j#j$j'j(j+j,j/j0j3j4j7j8j:j;j=j>j@jAjDjEjHjIjKjLjNjOjQjRjUjVjYjZj]j^j`jajdjejhjijljmjpjqjtjujxjyj{j|jjjjj-&jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj j!j$j%j(j)j,j-j0j1j4j5j8j9j<j=j@jAjDjEjHjIjLjMjPjQjTjUjXjYj\j]j`jajdjejhjijkjljojpjsjtjwjxj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjju(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj j!j$j%j(j)j+j,j/j0j3j4j7j8j:j;j=j>j@jAjDjEjHjIjLjMjPjQjTjUjXjYjM&j]j_j`jcjdjgjhjkjljojpjsjtjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjj j!j$j%j(j)j+j,j/j0j3j4j7j8j;j<j?j@jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjU&jkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjEjFjIjJjMjNjQjRjUjVjYjZj\j]j`jajdjejhjijljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj!j"j%j&j)j*j-j.j1j2j5j6j9j:j&j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^jajbjejfjijjjljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjj j!j$j%j(j)j,j-j0j1j4j5j8j9j<j=j@jAjDjEjHjIjLjMjPjQjTjUjXjYj\j]j`jajdjejhjijljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjj j!j$j%j(j)j,j-j0j1j4j5j8j9j<j=j@jAjDjEjHjIjLjMjPjQjTjUjXjYj\j]j`jajdjejhjijljmjpjqjtjujxjyj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj j!j$j%j(j)j,j-j0j1j4j5j8j9j<j=j@jAjDjEjHjIjLjMjOjPjSjTjWjXj[j\j_j`jcjdjgjhjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjj j#j$j'j(j+j,j/j0j3j4j7j8j;j<j?j@jCjDjGjHjKjLjOjPjRjSjUjVjYjZj\j]j_j`jcjdjgjhjkjljojpjsjtjwjxj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj!j"j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^jajbjejfjijjjmjnjqjrjujvjyjzj}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjj!j"j%j&j)j*j-j.j1j2j5j6j9j:j=j>jAjBjEjFjIjJjMjNjQjRjUjVjYjZj]j^jajbjejfjhjijljmjpjqjtjujxjyj{j|jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjj j#j$j'j(j+j,j/j0j3j4j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj%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%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&j&j&j&j&j!&j"&j%&j&&j)&j.&j1&j2&j5&j6&j9&j:&j=&j>&jA&jB&jE&jF&jI&jN&jQ&jV&jY&jZ&j]&j^&ja&jb&je&jf&ji&jj&jm&jn&jq&jr&ju&jv&jy&jz&j}&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&uj}(jjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$uj%}(j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\uj]}(j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj&jjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj"j#j&j'j*j+j.j/j2j3j6j7j:j;j>j?jBjCjFjGjJjKjNjOjRjSjVjWjZj[j^j_jbjcjfjgjjjkjnjojrjsjvjwjzj{j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjj&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&uj}(jjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j"j#j%j&j(j)j+j,j.j/j1j2j4j5j7j8j:j;j=j>j@jAjCjDjFjGjIjJjLjMjOjPjRjSjUjVjXjYj[j\j^j_jajbjdjejgjhjjjkjmjnjpjqjsjtjvjwjyjzj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j jjjjjjjjjjjjj!j"j$j%j'j(j*j+j-j.j0j1j3j4j6j7j9j:j<j=j?j@jBjCjEjFjHjIjKjLjNjOjQjRjTjUjWjXjZj[j]j^j`jajcjdjfjgjijjjljmjojpjrjsjujvjxjyj{j|j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjj j!j#j$j&j'j)j*j,j-j/j0j2j3j5j6j8j9j;j<j>j?jAjBjDjEjGjHjJjKjMjNjPjQjSjTjVjWjYjZj\j]j_j`jbjcjejfjhuj }j j sjO$}(jQ$jS$jT$jV$jW$jY$jZ$j\$j]$j_$j`$jb$jc$je$jf$jh$ji$jk$jl$jn$jo$jq$jr$jt$ju$jw$jx$jz$j{$j}$j~$j$j$j$j$j$j$j$j$j$uj%}j%j%suintersphinx_named_inventory}(j&j&j j uub.pyfuse3-3.4.0/doc/html/.doctrees/example.doctree0000644000175000017500000024453314663707215021521 0ustar useruser00000000000000>sphinx.addnodesdocument)}( rawsourcechildren](docutils.nodestarget)}(h.. _example file system:h] attributes}(ids]classes]names]dupnames]backrefs]refidexample-file-systemutagnameh lineKparenth _documenthsource$/home/user/w/pyfuse3/rst/example.rstubh section)}(hhh](h title)}(hExample File Systemsh]h TextExample File Systems}(h h+h!hh"NhNubah}(h]h]h]h]h]uhh)h h&h!hh"h#hKubh paragraph)}(hpyfuse3 comes with several example file systems in the :file:`examples` directory of the release tarball. For completeness, these examples are also included here.h](h07pyfuse3 comes with several example file systems in the }(h h=h!hh"NhNubh literal)}(h:file:`examples`h]h0examples}(h hGh!hh"NhNubah}(h]h]fileah]h]h]rolefileuhhEh h=ubh0[ directory of the release tarball. For completeness, these examples are also included here.}(h h=h!hh"NhNubeh}(h]h]h]h]h]uhh;h"h#hKh h&h!hubh%)}(hhh](h*)}(h"Single-file, Read-only File Systemh]h0"Single-file, Read-only File System}(h heh!hh"NhNubah}(h]h]h]h]h]uhh)h hbh!hh"h#hK ubh<)}(h'(shipped as :file:`examples/lltest.py`)h](h0 (shipped as }(h hsh!hh"NhNubhF)}(h:file:`examples/lltest.py`h]h0examples/lltest.py}(h h{h!hh"NhNubah}(h]h]fileah]h]h]rolefileuhhEh hsubh0)}(h hsh!hh"NhNubeh}(h]h]h]h]h]uhh;h"h#hKh hbh!hubh literal_block)}(hXC#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' hello.py - Example file system for pyfuse3. This program presents a static file system containing a single file. Copyright © 2015 Nikolaus Rath Copyright © 2015 Gerion Entrup. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) from argparse import ArgumentParser import stat import logging import errno import pyfuse3 import trio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger(__name__) class TestFs(pyfuse3.Operations): def __init__(self): super(TestFs, self).__init__() self.hello_name = b"message" self.hello_inode = pyfuse3.ROOT_INODE+1 self.hello_data = b"hello world\n" async def getattr(self, inode, ctx=None): entry = pyfuse3.EntryAttributes() if inode == pyfuse3.ROOT_INODE: entry.st_mode = (stat.S_IFDIR | 0o755) entry.st_size = 0 elif inode == self.hello_inode: entry.st_mode = (stat.S_IFREG | 0o644) entry.st_size = len(self.hello_data) else: raise pyfuse3.FUSEError(errno.ENOENT) stamp = int(1438467123.985654 * 1e9) entry.st_atime_ns = stamp entry.st_ctime_ns = stamp entry.st_mtime_ns = stamp entry.st_gid = os.getgid() entry.st_uid = os.getuid() entry.st_ino = inode return entry async def lookup(self, parent_inode, name, ctx=None): if parent_inode != pyfuse3.ROOT_INODE or name != self.hello_name: raise pyfuse3.FUSEError(errno.ENOENT) return await self.getattr(self.hello_inode) async def opendir(self, inode, ctx): if inode != pyfuse3.ROOT_INODE: raise pyfuse3.FUSEError(errno.ENOENT) return inode async def readdir(self, fh, start_id, token): assert fh == pyfuse3.ROOT_INODE # only one entry if start_id == 0: pyfuse3.readdir_reply( token, self.hello_name, await self.getattr(self.hello_inode), 1) return async def open(self, inode, flags, ctx): if inode != self.hello_inode: raise pyfuse3.FUSEError(errno.ENOENT) if flags & os.O_RDWR or flags & os.O_WRONLY: raise pyfuse3.FUSEError(errno.EACCES) return pyfuse3.FileInfo(fh=inode) async def read(self, fh, off, size): assert fh == self.hello_inode return self.hello_data[off:off+size] def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() def main(): options = parse_args() init_logging(options.debug) testfs = TestFs() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=hello') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(testfs, options.mountpoint, fuse_options) try: trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise pyfuse3.close() if __name__ == '__main__': main() h]h0XC#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' hello.py - Example file system for pyfuse3. This program presents a static file system containing a single file. Copyright © 2015 Nikolaus Rath Copyright © 2015 Gerion Entrup. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) from argparse import ArgumentParser import stat import logging import errno import pyfuse3 import trio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger(__name__) class TestFs(pyfuse3.Operations): def __init__(self): super(TestFs, self).__init__() self.hello_name = b"message" self.hello_inode = pyfuse3.ROOT_INODE+1 self.hello_data = b"hello world\n" async def getattr(self, inode, ctx=None): entry = pyfuse3.EntryAttributes() if inode == pyfuse3.ROOT_INODE: entry.st_mode = (stat.S_IFDIR | 0o755) entry.st_size = 0 elif inode == self.hello_inode: entry.st_mode = (stat.S_IFREG | 0o644) entry.st_size = len(self.hello_data) else: raise pyfuse3.FUSEError(errno.ENOENT) stamp = int(1438467123.985654 * 1e9) entry.st_atime_ns = stamp entry.st_ctime_ns = stamp entry.st_mtime_ns = stamp entry.st_gid = os.getgid() entry.st_uid = os.getuid() entry.st_ino = inode return entry async def lookup(self, parent_inode, name, ctx=None): if parent_inode != pyfuse3.ROOT_INODE or name != self.hello_name: raise pyfuse3.FUSEError(errno.ENOENT) return await self.getattr(self.hello_inode) async def opendir(self, inode, ctx): if inode != pyfuse3.ROOT_INODE: raise pyfuse3.FUSEError(errno.ENOENT) return inode async def readdir(self, fh, start_id, token): assert fh == pyfuse3.ROOT_INODE # only one entry if start_id == 0: pyfuse3.readdir_reply( token, self.hello_name, await self.getattr(self.hello_inode), 1) return async def open(self, inode, flags, ctx): if inode != self.hello_inode: raise pyfuse3.FUSEError(errno.ENOENT) if flags & os.O_RDWR or flags & os.O_WRONLY: raise pyfuse3.FUSEError(errno.EACCES) return pyfuse3.FileInfo(fh=inode) async def read(self, fh, off, size): assert fh == self.hello_inode return self.hello_data[off:off+size] def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() def main(): options = parse_args() init_logging(options.debug) testfs = TestFs() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=hello') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(testfs, options.mountpoint, fuse_options) try: trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise pyfuse3.close() if __name__ == '__main__': main() }h hsbah}(h]h]h]h]h]source&/home/user/w/pyfuse3/examples/hello.py xml:spacepreserveforcelanguagepythonlinenoshighlight_args} linenostartKsuhhh"h#hKh hbh!hubeh}(h]!single-file-read-only-file-systemah]h]"single-file, read-only file systemah]h]uhh$h h&h!hh"h#hK ubh%)}(hhh](h*)}(hIn-memory File Systemh]h0In-memory File System}(h hh!hh"NhNubah}(h]h]h]h]h]uhh)h hh!hh"h#hKubh<)}(h&(shipped as :file:`examples/tmpfs.py`)h](h0 (shipped as }(h hh!hh"NhNubhF)}(h:file:`examples/tmpfs.py`h]h0examples/tmpfs.py}(h hh!hh"NhNubah}(h]h]fileah]h]h]rolefileuhhEh hubh0)}(h hh!hh"NhNubeh}(h]h]h]h]h]uhh;h"h#hKh hh!hubh)}(hXOA#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' tmpfs.py - Example file system for pyfuse3. This file system stores all data in memory. Copyright © 2013 Nikolaus Rath Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) import pyfuse3 import errno import stat from time import time import sqlite3 import logging from collections import defaultdict from pyfuse3 import FUSEError from argparse import ArgumentParser import trio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger() class Operations(pyfuse3.Operations): '''An example filesystem that stores all data in memory This is a very simple implementation with terrible performance. Don't try to store significant amounts of data. Also, there are some other flaws that have not been fixed to keep the code easier to understand: * atime, mtime and ctime are not updated * generation numbers are not supported * lookup counts are not maintained ''' enable_writeback_cache = True def __init__(self): super(Operations, self).__init__() self.db = sqlite3.connect(':memory:') self.db.text_factory = str self.db.row_factory = sqlite3.Row self.cursor = self.db.cursor() self.inode_open_count = defaultdict(int) self.init_tables() def init_tables(self): '''Initialize file system tables''' self.cursor.execute(""" CREATE TABLE inodes ( id INTEGER PRIMARY KEY, uid INT NOT NULL, gid INT NOT NULL, mode INT NOT NULL, mtime_ns INT NOT NULL, atime_ns INT NOT NULL, ctime_ns INT NOT NULL, target BLOB(256) , size INT NOT NULL DEFAULT 0, rdev INT NOT NULL DEFAULT 0, data BLOB ) """) self.cursor.execute(""" CREATE TABLE contents ( rowid INTEGER PRIMARY KEY AUTOINCREMENT, name BLOB(256) NOT NULL, inode INT NOT NULL REFERENCES inodes(id), parent_inode INT NOT NULL REFERENCES inodes(id), UNIQUE (name, parent_inode) )""") # Insert root directory now_ns = int(time() * 1e9) self.cursor.execute("INSERT INTO inodes (id,mode,uid,gid,mtime_ns,atime_ns,ctime_ns) " "VALUES (?,?,?,?,?,?,?)", (pyfuse3.ROOT_INODE, stat.S_IFDIR | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH, os.getuid(), os.getgid(), now_ns, now_ns, now_ns)) self.cursor.execute("INSERT INTO contents (name, parent_inode, inode) VALUES (?,?,?)", (b'..', pyfuse3.ROOT_INODE, pyfuse3.ROOT_INODE)) def get_row(self, *a, **kw): self.cursor.execute(*a, **kw) try: row = next(self.cursor) except StopIteration: raise NoSuchRowError() try: next(self.cursor) except StopIteration: pass else: raise NoUniqueValueError() return row async def lookup(self, inode_p, name, ctx=None): if name == '.': inode = inode_p elif name == '..': inode = self.get_row("SELECT * FROM contents WHERE inode=?", (inode_p,))['parent_inode'] else: try: inode = self.get_row("SELECT * FROM contents WHERE name=? AND parent_inode=?", (name, inode_p))['inode'] except NoSuchRowError: raise(pyfuse3.FUSEError(errno.ENOENT)) return await self.getattr(inode, ctx) async def getattr(self, inode, ctx=None): try: row = self.get_row("SELECT * FROM inodes WHERE id=?", (inode,)) except NoSuchRowError: raise(pyfuse3.FUSEError(errno.ENOENT)) entry = pyfuse3.EntryAttributes() entry.st_ino = inode entry.generation = 0 entry.entry_timeout = 300 entry.attr_timeout = 300 entry.st_mode = row['mode'] entry.st_nlink = self.get_row("SELECT COUNT(inode) FROM contents WHERE inode=?", (inode,))[0] entry.st_uid = row['uid'] entry.st_gid = row['gid'] entry.st_rdev = row['rdev'] entry.st_size = row['size'] entry.st_blksize = 512 entry.st_blocks = 1 entry.st_atime_ns = row['atime_ns'] entry.st_mtime_ns = row['mtime_ns'] entry.st_ctime_ns = row['ctime_ns'] return entry async def readlink(self, inode, ctx): return self.get_row('SELECT * FROM inodes WHERE id=?', (inode,))['target'] async def opendir(self, inode, ctx): return inode async def readdir(self, inode, off, token): if off == 0: off = -1 cursor2 = self.db.cursor() cursor2.execute("SELECT * FROM contents WHERE parent_inode=? " 'AND rowid > ? ORDER BY rowid', (inode, off)) for row in cursor2: pyfuse3.readdir_reply( token, row['name'], await self.getattr(row['inode']), row['rowid']) async def unlink(self, inode_p, name,ctx): entry = await self.lookup(inode_p, name) if stat.S_ISDIR(entry.st_mode): raise pyfuse3.FUSEError(errno.EISDIR) self._remove(inode_p, name, entry) async def rmdir(self, inode_p, name, ctx): entry = await self.lookup(inode_p, name) if not stat.S_ISDIR(entry.st_mode): raise pyfuse3.FUSEError(errno.ENOTDIR) self._remove(inode_p, name, entry) def _remove(self, inode_p, name, entry): if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?", (entry.st_ino,))[0] > 0: raise pyfuse3.FUSEError(errno.ENOTEMPTY) self.cursor.execute("DELETE FROM contents WHERE name=? AND parent_inode=?", (name, inode_p)) if entry.st_nlink == 1 and entry.st_ino not in self.inode_open_count: self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry.st_ino,)) async def symlink(self, inode_p, name, target, ctx): mode = (stat.S_IFLNK | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) return await self._create(inode_p, name, mode, ctx, target=target) async def rename(self, inode_p_old, name_old, inode_p_new, name_new, flags, ctx): if flags != 0: raise FUSEError(errno.EINVAL) entry_old = await self.lookup(inode_p_old, name_old) try: entry_new = await self.lookup(inode_p_new, name_new) except pyfuse3.FUSEError as exc: if exc.errno != errno.ENOENT: raise target_exists = False else: target_exists = True if target_exists: self._replace(inode_p_old, name_old, inode_p_new, name_new, entry_old, entry_new) else: self.cursor.execute("UPDATE contents SET name=?, parent_inode=? WHERE name=? " "AND parent_inode=?", (name_new, inode_p_new, name_old, inode_p_old)) def _replace(self, inode_p_old, name_old, inode_p_new, name_new, entry_old, entry_new): if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?", (entry_new.st_ino,))[0] > 0: raise pyfuse3.FUSEError(errno.ENOTEMPTY) self.cursor.execute("UPDATE contents SET inode=? WHERE name=? AND parent_inode=?", (entry_old.st_ino, name_new, inode_p_new)) self.db.execute('DELETE FROM contents WHERE name=? AND parent_inode=?', (name_old, inode_p_old)) if entry_new.st_nlink == 1 and entry_new.st_ino not in self.inode_open_count: self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry_new.st_ino,)) async def link(self, inode, new_inode_p, new_name, ctx): entry_p = await self.getattr(new_inode_p) if entry_p.st_nlink == 0: log.warning('Attempted to create entry %s with unlinked parent %d', new_name, new_inode_p) raise FUSEError(errno.EINVAL) self.cursor.execute("INSERT INTO contents (name, inode, parent_inode) VALUES(?,?,?)", (new_name, inode, new_inode_p)) return await self.getattr(inode) async def setattr(self, inode, attr, fields, fh, ctx): if fields.update_size: data = self.get_row('SELECT data FROM inodes WHERE id=?', (inode,))[0] if data is None: data = b'' if len(data) < attr.st_size: data = data + b'\0' * (attr.st_size - len(data)) else: data = data[:attr.st_size] self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?', (memoryview(data), attr.st_size, inode)) if fields.update_mode: self.cursor.execute('UPDATE inodes SET mode=? WHERE id=?', (attr.st_mode, inode)) if fields.update_uid: self.cursor.execute('UPDATE inodes SET uid=? WHERE id=?', (attr.st_uid, inode)) if fields.update_gid: self.cursor.execute('UPDATE inodes SET gid=? WHERE id=?', (attr.st_gid, inode)) if fields.update_atime: self.cursor.execute('UPDATE inodes SET atime_ns=? WHERE id=?', (attr.st_atime_ns, inode)) if fields.update_mtime: self.cursor.execute('UPDATE inodes SET mtime_ns=? WHERE id=?', (attr.st_mtime_ns, inode)) if fields.update_ctime: self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?', (attr.st_ctime_ns, inode)) else: self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?', (int(time()*1e9), inode)) return await self.getattr(inode) async def mknod(self, inode_p, name, mode, rdev, ctx): return await self._create(inode_p, name, mode, ctx, rdev=rdev) async def mkdir(self, inode_p, name, mode, ctx): return await self._create(inode_p, name, mode, ctx) async def statfs(self, ctx): stat_ = pyfuse3.StatvfsData() stat_.f_bsize = 512 stat_.f_frsize = 512 size = self.get_row('SELECT SUM(size) FROM inodes')[0] stat_.f_blocks = size // stat_.f_frsize stat_.f_bfree = max(size // stat_.f_frsize, 1024) stat_.f_bavail = stat_.f_bfree inodes = self.get_row('SELECT COUNT(id) FROM inodes')[0] stat_.f_files = inodes stat_.f_ffree = max(inodes , 100) stat_.f_favail = stat_.f_ffree return stat_ async def open(self, inode, flags, ctx): # Yeah, unused arguments #pylint: disable=W0613 self.inode_open_count[inode] += 1 # Use inodes as a file handles return pyfuse3.FileInfo(fh=inode) async def access(self, inode, mode, ctx): # Yeah, could be a function and has unused arguments #pylint: disable=R0201,W0613 return True async def create(self, inode_parent, name, mode, flags, ctx): #pylint: disable=W0612 entry = await self._create(inode_parent, name, mode, ctx) self.inode_open_count[entry.st_ino] += 1 return (pyfuse3.FileInfo(fh=entry.st_ino), entry) async def _create(self, inode_p, name, mode, ctx, rdev=0, target=None): if (await self.getattr(inode_p)).st_nlink == 0: log.warning('Attempted to create entry %s with unlinked parent %d', name, inode_p) raise FUSEError(errno.EINVAL) now_ns = int(time() * 1e9) self.cursor.execute('INSERT INTO inodes (uid, gid, mode, mtime_ns, atime_ns, ' 'ctime_ns, target, rdev) VALUES(?, ?, ?, ?, ?, ?, ?, ?)', (ctx.uid, ctx.gid, mode, now_ns, now_ns, now_ns, target, rdev)) inode = self.cursor.lastrowid self.db.execute("INSERT INTO contents(name, inode, parent_inode) VALUES(?,?,?)", (name, inode, inode_p)) return await self.getattr(inode) async def read(self, fh, offset, length): data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0] if data is None: data = b'' return data[offset:offset+length] async def write(self, fh, offset, buf): data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0] if data is None: data = b'' data = data[:offset] + buf + data[offset+len(buf):] self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?', (memoryview(data), len(data), fh)) return len(buf) async def release(self, fh): self.inode_open_count[fh] -= 1 if self.inode_open_count[fh] == 0: del self.inode_open_count[fh] if (await self.getattr(fh)).st_nlink == 0: self.cursor.execute("DELETE FROM inodes WHERE id=?", (fh,)) class NoUniqueValueError(Exception): def __str__(self): return 'Query generated more than 1 result row' class NoSuchRowError(Exception): def __str__(self): return 'Query produced 0 result rows' def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() if __name__ == '__main__': options = parse_args() init_logging(options.debug) operations = Operations() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=tmpfs') fuse_options.discard('default_permissions') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(operations, options.mountpoint, fuse_options) try: trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise pyfuse3.close() h]h0XOA#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' tmpfs.py - Example file system for pyfuse3. This file system stores all data in memory. Copyright © 2013 Nikolaus Rath Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) import pyfuse3 import errno import stat from time import time import sqlite3 import logging from collections import defaultdict from pyfuse3 import FUSEError from argparse import ArgumentParser import trio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger() class Operations(pyfuse3.Operations): '''An example filesystem that stores all data in memory This is a very simple implementation with terrible performance. Don't try to store significant amounts of data. Also, there are some other flaws that have not been fixed to keep the code easier to understand: * atime, mtime and ctime are not updated * generation numbers are not supported * lookup counts are not maintained ''' enable_writeback_cache = True def __init__(self): super(Operations, self).__init__() self.db = sqlite3.connect(':memory:') self.db.text_factory = str self.db.row_factory = sqlite3.Row self.cursor = self.db.cursor() self.inode_open_count = defaultdict(int) self.init_tables() def init_tables(self): '''Initialize file system tables''' self.cursor.execute(""" CREATE TABLE inodes ( id INTEGER PRIMARY KEY, uid INT NOT NULL, gid INT NOT NULL, mode INT NOT NULL, mtime_ns INT NOT NULL, atime_ns INT NOT NULL, ctime_ns INT NOT NULL, target BLOB(256) , size INT NOT NULL DEFAULT 0, rdev INT NOT NULL DEFAULT 0, data BLOB ) """) self.cursor.execute(""" CREATE TABLE contents ( rowid INTEGER PRIMARY KEY AUTOINCREMENT, name BLOB(256) NOT NULL, inode INT NOT NULL REFERENCES inodes(id), parent_inode INT NOT NULL REFERENCES inodes(id), UNIQUE (name, parent_inode) )""") # Insert root directory now_ns = int(time() * 1e9) self.cursor.execute("INSERT INTO inodes (id,mode,uid,gid,mtime_ns,atime_ns,ctime_ns) " "VALUES (?,?,?,?,?,?,?)", (pyfuse3.ROOT_INODE, stat.S_IFDIR | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH, os.getuid(), os.getgid(), now_ns, now_ns, now_ns)) self.cursor.execute("INSERT INTO contents (name, parent_inode, inode) VALUES (?,?,?)", (b'..', pyfuse3.ROOT_INODE, pyfuse3.ROOT_INODE)) def get_row(self, *a, **kw): self.cursor.execute(*a, **kw) try: row = next(self.cursor) except StopIteration: raise NoSuchRowError() try: next(self.cursor) except StopIteration: pass else: raise NoUniqueValueError() return row async def lookup(self, inode_p, name, ctx=None): if name == '.': inode = inode_p elif name == '..': inode = self.get_row("SELECT * FROM contents WHERE inode=?", (inode_p,))['parent_inode'] else: try: inode = self.get_row("SELECT * FROM contents WHERE name=? AND parent_inode=?", (name, inode_p))['inode'] except NoSuchRowError: raise(pyfuse3.FUSEError(errno.ENOENT)) return await self.getattr(inode, ctx) async def getattr(self, inode, ctx=None): try: row = self.get_row("SELECT * FROM inodes WHERE id=?", (inode,)) except NoSuchRowError: raise(pyfuse3.FUSEError(errno.ENOENT)) entry = pyfuse3.EntryAttributes() entry.st_ino = inode entry.generation = 0 entry.entry_timeout = 300 entry.attr_timeout = 300 entry.st_mode = row['mode'] entry.st_nlink = self.get_row("SELECT COUNT(inode) FROM contents WHERE inode=?", (inode,))[0] entry.st_uid = row['uid'] entry.st_gid = row['gid'] entry.st_rdev = row['rdev'] entry.st_size = row['size'] entry.st_blksize = 512 entry.st_blocks = 1 entry.st_atime_ns = row['atime_ns'] entry.st_mtime_ns = row['mtime_ns'] entry.st_ctime_ns = row['ctime_ns'] return entry async def readlink(self, inode, ctx): return self.get_row('SELECT * FROM inodes WHERE id=?', (inode,))['target'] async def opendir(self, inode, ctx): return inode async def readdir(self, inode, off, token): if off == 0: off = -1 cursor2 = self.db.cursor() cursor2.execute("SELECT * FROM contents WHERE parent_inode=? " 'AND rowid > ? ORDER BY rowid', (inode, off)) for row in cursor2: pyfuse3.readdir_reply( token, row['name'], await self.getattr(row['inode']), row['rowid']) async def unlink(self, inode_p, name,ctx): entry = await self.lookup(inode_p, name) if stat.S_ISDIR(entry.st_mode): raise pyfuse3.FUSEError(errno.EISDIR) self._remove(inode_p, name, entry) async def rmdir(self, inode_p, name, ctx): entry = await self.lookup(inode_p, name) if not stat.S_ISDIR(entry.st_mode): raise pyfuse3.FUSEError(errno.ENOTDIR) self._remove(inode_p, name, entry) def _remove(self, inode_p, name, entry): if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?", (entry.st_ino,))[0] > 0: raise pyfuse3.FUSEError(errno.ENOTEMPTY) self.cursor.execute("DELETE FROM contents WHERE name=? AND parent_inode=?", (name, inode_p)) if entry.st_nlink == 1 and entry.st_ino not in self.inode_open_count: self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry.st_ino,)) async def symlink(self, inode_p, name, target, ctx): mode = (stat.S_IFLNK | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) return await self._create(inode_p, name, mode, ctx, target=target) async def rename(self, inode_p_old, name_old, inode_p_new, name_new, flags, ctx): if flags != 0: raise FUSEError(errno.EINVAL) entry_old = await self.lookup(inode_p_old, name_old) try: entry_new = await self.lookup(inode_p_new, name_new) except pyfuse3.FUSEError as exc: if exc.errno != errno.ENOENT: raise target_exists = False else: target_exists = True if target_exists: self._replace(inode_p_old, name_old, inode_p_new, name_new, entry_old, entry_new) else: self.cursor.execute("UPDATE contents SET name=?, parent_inode=? WHERE name=? " "AND parent_inode=?", (name_new, inode_p_new, name_old, inode_p_old)) def _replace(self, inode_p_old, name_old, inode_p_new, name_new, entry_old, entry_new): if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?", (entry_new.st_ino,))[0] > 0: raise pyfuse3.FUSEError(errno.ENOTEMPTY) self.cursor.execute("UPDATE contents SET inode=? WHERE name=? AND parent_inode=?", (entry_old.st_ino, name_new, inode_p_new)) self.db.execute('DELETE FROM contents WHERE name=? AND parent_inode=?', (name_old, inode_p_old)) if entry_new.st_nlink == 1 and entry_new.st_ino not in self.inode_open_count: self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry_new.st_ino,)) async def link(self, inode, new_inode_p, new_name, ctx): entry_p = await self.getattr(new_inode_p) if entry_p.st_nlink == 0: log.warning('Attempted to create entry %s with unlinked parent %d', new_name, new_inode_p) raise FUSEError(errno.EINVAL) self.cursor.execute("INSERT INTO contents (name, inode, parent_inode) VALUES(?,?,?)", (new_name, inode, new_inode_p)) return await self.getattr(inode) async def setattr(self, inode, attr, fields, fh, ctx): if fields.update_size: data = self.get_row('SELECT data FROM inodes WHERE id=?', (inode,))[0] if data is None: data = b'' if len(data) < attr.st_size: data = data + b'\0' * (attr.st_size - len(data)) else: data = data[:attr.st_size] self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?', (memoryview(data), attr.st_size, inode)) if fields.update_mode: self.cursor.execute('UPDATE inodes SET mode=? WHERE id=?', (attr.st_mode, inode)) if fields.update_uid: self.cursor.execute('UPDATE inodes SET uid=? WHERE id=?', (attr.st_uid, inode)) if fields.update_gid: self.cursor.execute('UPDATE inodes SET gid=? WHERE id=?', (attr.st_gid, inode)) if fields.update_atime: self.cursor.execute('UPDATE inodes SET atime_ns=? WHERE id=?', (attr.st_atime_ns, inode)) if fields.update_mtime: self.cursor.execute('UPDATE inodes SET mtime_ns=? WHERE id=?', (attr.st_mtime_ns, inode)) if fields.update_ctime: self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?', (attr.st_ctime_ns, inode)) else: self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?', (int(time()*1e9), inode)) return await self.getattr(inode) async def mknod(self, inode_p, name, mode, rdev, ctx): return await self._create(inode_p, name, mode, ctx, rdev=rdev) async def mkdir(self, inode_p, name, mode, ctx): return await self._create(inode_p, name, mode, ctx) async def statfs(self, ctx): stat_ = pyfuse3.StatvfsData() stat_.f_bsize = 512 stat_.f_frsize = 512 size = self.get_row('SELECT SUM(size) FROM inodes')[0] stat_.f_blocks = size // stat_.f_frsize stat_.f_bfree = max(size // stat_.f_frsize, 1024) stat_.f_bavail = stat_.f_bfree inodes = self.get_row('SELECT COUNT(id) FROM inodes')[0] stat_.f_files = inodes stat_.f_ffree = max(inodes , 100) stat_.f_favail = stat_.f_ffree return stat_ async def open(self, inode, flags, ctx): # Yeah, unused arguments #pylint: disable=W0613 self.inode_open_count[inode] += 1 # Use inodes as a file handles return pyfuse3.FileInfo(fh=inode) async def access(self, inode, mode, ctx): # Yeah, could be a function and has unused arguments #pylint: disable=R0201,W0613 return True async def create(self, inode_parent, name, mode, flags, ctx): #pylint: disable=W0612 entry = await self._create(inode_parent, name, mode, ctx) self.inode_open_count[entry.st_ino] += 1 return (pyfuse3.FileInfo(fh=entry.st_ino), entry) async def _create(self, inode_p, name, mode, ctx, rdev=0, target=None): if (await self.getattr(inode_p)).st_nlink == 0: log.warning('Attempted to create entry %s with unlinked parent %d', name, inode_p) raise FUSEError(errno.EINVAL) now_ns = int(time() * 1e9) self.cursor.execute('INSERT INTO inodes (uid, gid, mode, mtime_ns, atime_ns, ' 'ctime_ns, target, rdev) VALUES(?, ?, ?, ?, ?, ?, ?, ?)', (ctx.uid, ctx.gid, mode, now_ns, now_ns, now_ns, target, rdev)) inode = self.cursor.lastrowid self.db.execute("INSERT INTO contents(name, inode, parent_inode) VALUES(?,?,?)", (name, inode, inode_p)) return await self.getattr(inode) async def read(self, fh, offset, length): data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0] if data is None: data = b'' return data[offset:offset+length] async def write(self, fh, offset, buf): data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0] if data is None: data = b'' data = data[:offset] + buf + data[offset+len(buf):] self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?', (memoryview(data), len(data), fh)) return len(buf) async def release(self, fh): self.inode_open_count[fh] -= 1 if self.inode_open_count[fh] == 0: del self.inode_open_count[fh] if (await self.getattr(fh)).st_nlink == 0: self.cursor.execute("DELETE FROM inodes WHERE id=?", (fh,)) class NoUniqueValueError(Exception): def __str__(self): return 'Query generated more than 1 result row' class NoSuchRowError(Exception): def __str__(self): return 'Query produced 0 result rows' def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() if __name__ == '__main__': options = parse_args() init_logging(options.debug) operations = Operations() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=tmpfs') fuse_options.discard('default_permissions') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(operations, options.mountpoint, fuse_options) try: trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise pyfuse3.close() }h hsbah}(h]h]h]h]h]source&/home/user/w/pyfuse3/examples/tmpfs.pyhhhhpythonhh}hKsuhhh"h#hKh hh!hubeh}(h]in-memory-file-systemah]h]in-memory file systemah]h]uhh$h h&h!hh"h#hKubh%)}(hhh](h*)}(h!Passthrough / Overlay File Systemh]h0!Passthrough / Overlay File System}(h j h!hh"NhNubah}(h]h]h]h]h]uhh)h jh!hh"h#hKubh<)}(h.(shipped as :file:`examples/passthroughfs.py`)h](h0 (shipped as }(h jh!hh"NhNubhF)}(h!:file:`examples/passthroughfs.py`h]h0examples/passthroughfs.py}(h j h!hh"NhNubah}(h]h]fileah]h]h]rolefileuhhEh jubh0)}(h jh!hh"NhNubeh}(h]h]h]h]h]uhh;h"h#hK!h jh!hubh)}(hXVC#!/usr/bin/env python3 ''' passthroughfs.py - Example file system for pyfuse3 This file system mirrors the contents of a specified directory tree. Caveats: * Inode generation numbers are not passed through but set to zero. * Block size (st_blksize) and number of allocated blocks (st_blocks) are not passed through. * Performance for large directories is not good, because the directory is always read completely. * There may be a way to break-out of the directory tree. * The readdir implementation is not fully POSIX compliant. If a directory contains hardlinks and is modified during a readdir call, readdir() may return some of the hardlinked files twice or omit them completely. * If you delete or rename files in the underlying file system, the passthrough file system will get confused. Copyright © Nikolaus Rath Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) import pyfuse3 from argparse import ArgumentParser import errno import logging import stat as stat_m from pyfuse3 import FUSEError from os import fsencode, fsdecode from collections import defaultdict import trio import faulthandler faulthandler.enable() log = logging.getLogger(__name__) class Operations(pyfuse3.Operations): enable_writeback_cache = True def __init__(self, source): super().__init__() self._inode_path_map = { pyfuse3.ROOT_INODE: source } self._lookup_cnt = defaultdict(lambda : 0) self._fd_inode_map = dict() self._inode_fd_map = dict() self._fd_open_count = dict() def _inode_to_path(self, inode): try: val = self._inode_path_map[inode] except KeyError: raise FUSEError(errno.ENOENT) if isinstance(val, set): # In case of hardlinks, pick any path val = next(iter(val)) return val def _add_path(self, inode, path): log.debug('_add_path for %d, %s', inode, path) self._lookup_cnt[inode] += 1 # With hardlinks, one inode may map to multiple paths. if inode not in self._inode_path_map: self._inode_path_map[inode] = path return val = self._inode_path_map[inode] if isinstance(val, set): val.add(path) elif val != path: self._inode_path_map[inode] = { path, val } async def forget(self, inode_list): for (inode, nlookup) in inode_list: if self._lookup_cnt[inode] > nlookup: self._lookup_cnt[inode] -= nlookup continue log.debug('forgetting about inode %d', inode) assert inode not in self._inode_fd_map del self._lookup_cnt[inode] try: del self._inode_path_map[inode] except KeyError: # may have been deleted pass async def lookup(self, inode_p, name, ctx=None): name = fsdecode(name) log.debug('lookup for %s in %d', name, inode_p) path = os.path.join(self._inode_to_path(inode_p), name) attr = self._getattr(path=path) if name != '.' and name != '..': self._add_path(attr.st_ino, path) return attr async def getattr(self, inode, ctx=None): if inode in self._inode_fd_map: return self._getattr(fd=self._inode_fd_map[inode]) else: return self._getattr(path=self._inode_to_path(inode)) def _getattr(self, path=None, fd=None): assert fd is None or path is None assert not(fd is None and path is None) try: if fd is None: stat = os.lstat(path) else: stat = os.fstat(fd) except OSError as exc: raise FUSEError(exc.errno) entry = pyfuse3.EntryAttributes() for attr in ('st_ino', 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', 'st_size', 'st_atime_ns', 'st_mtime_ns', 'st_ctime_ns'): setattr(entry, attr, getattr(stat, attr)) entry.generation = 0 entry.entry_timeout = 0 entry.attr_timeout = 0 entry.st_blksize = 512 entry.st_blocks = ((entry.st_size+entry.st_blksize-1) // entry.st_blksize) return entry async def readlink(self, inode, ctx): path = self._inode_to_path(inode) try: target = os.readlink(path) except OSError as exc: raise FUSEError(exc.errno) return fsencode(target) async def opendir(self, inode, ctx): return inode async def readdir(self, inode, off, token): path = self._inode_to_path(inode) log.debug('reading %s', path) entries = [] for name in os.listdir(path): if name == '.' or name == '..': continue attr = self._getattr(path=os.path.join(path, name)) entries.append((attr.st_ino, name, attr)) log.debug('read %d entries, starting at %d', len(entries), off) # This is not fully posix compatible. If there are hardlinks # (two names with the same inode), we don't have a unique # offset to start in between them. Note that we cannot simply # count entries, because then we would skip over entries # (or return them more than once) if the number of directory # entries changes between two calls to readdir(). for (ino, name, attr) in sorted(entries): if ino <= off: continue if not pyfuse3.readdir_reply( token, fsencode(name), attr, ino): break self._add_path(attr.st_ino, os.path.join(path, name)) async def unlink(self, inode_p, name, ctx): name = fsdecode(name) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: inode = os.lstat(path).st_ino os.unlink(path) except OSError as exc: raise FUSEError(exc.errno) if inode in self._lookup_cnt: self._forget_path(inode, path) async def rmdir(self, inode_p, name, ctx): name = fsdecode(name) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: inode = os.lstat(path).st_ino os.rmdir(path) except OSError as exc: raise FUSEError(exc.errno) if inode in self._lookup_cnt: self._forget_path(inode, path) def _forget_path(self, inode, path): log.debug('forget %s for %d', path, inode) val = self._inode_path_map[inode] if isinstance(val, set): val.remove(path) if len(val) == 1: self._inode_path_map[inode] = next(iter(val)) else: del self._inode_path_map[inode] async def symlink(self, inode_p, name, target, ctx): name = fsdecode(name) target = fsdecode(target) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: os.symlink(target, path) os.chown(path, ctx.uid, ctx.gid, follow_symlinks=False) except OSError as exc: raise FUSEError(exc.errno) stat = os.lstat(path) self._add_path(stat.st_ino, path) return await self.getattr(stat.st_ino) async def rename(self, inode_p_old, name_old, inode_p_new, name_new, flags, ctx): if flags != 0: raise FUSEError(errno.EINVAL) name_old = fsdecode(name_old) name_new = fsdecode(name_new) parent_old = self._inode_to_path(inode_p_old) parent_new = self._inode_to_path(inode_p_new) path_old = os.path.join(parent_old, name_old) path_new = os.path.join(parent_new, name_new) try: os.rename(path_old, path_new) inode = os.lstat(path_new).st_ino except OSError as exc: raise FUSEError(exc.errno) if inode not in self._lookup_cnt: return val = self._inode_path_map[inode] if isinstance(val, set): assert len(val) > 1 val.add(path_new) val.remove(path_old) else: assert val == path_old self._inode_path_map[inode] = path_new async def link(self, inode, new_inode_p, new_name, ctx): new_name = fsdecode(new_name) parent = self._inode_to_path(new_inode_p) path = os.path.join(parent, new_name) try: os.link(self._inode_to_path(inode), path, follow_symlinks=False) except OSError as exc: raise FUSEError(exc.errno) self._add_path(inode, path) return await self.getattr(inode) async def setattr(self, inode, attr, fields, fh, ctx): # We use the f* functions if possible so that we can handle # a setattr() call for an inode without associated directory # handle. if fh is None: path_or_fh = self._inode_to_path(inode) truncate = os.truncate chmod = os.chmod chown = os.chown stat = os.lstat else: path_or_fh = fh truncate = os.ftruncate chmod = os.fchmod chown = os.fchown stat = os.fstat try: if fields.update_size: truncate(path_or_fh, attr.st_size) if fields.update_mode: # Under Linux, chmod always resolves symlinks so we should # actually never get a setattr() request for a symbolic # link. assert not stat_m.S_ISLNK(attr.st_mode) chmod(path_or_fh, stat_m.S_IMODE(attr.st_mode)) if fields.update_uid: chown(path_or_fh, attr.st_uid, -1, follow_symlinks=False) if fields.update_gid: chown(path_or_fh, -1, attr.st_gid, follow_symlinks=False) if fields.update_atime and fields.update_mtime: if fh is None: os.utime(path_or_fh, None, follow_symlinks=False, ns=(attr.st_atime_ns, attr.st_mtime_ns)) else: os.utime(path_or_fh, None, ns=(attr.st_atime_ns, attr.st_mtime_ns)) elif fields.update_atime or fields.update_mtime: # We can only set both values, so we first need to retrieve the # one that we shouldn't be changing. oldstat = stat(path_or_fh) if not fields.update_atime: attr.st_atime_ns = oldstat.st_atime_ns else: attr.st_mtime_ns = oldstat.st_mtime_ns if fh is None: os.utime(path_or_fh, None, follow_symlinks=False, ns=(attr.st_atime_ns, attr.st_mtime_ns)) else: os.utime(path_or_fh, None, ns=(attr.st_atime_ns, attr.st_mtime_ns)) except OSError as exc: raise FUSEError(exc.errno) return await self.getattr(inode) async def mknod(self, inode_p, name, mode, rdev, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: os.mknod(path, mode=(mode & ~ctx.umask), device=rdev) os.chown(path, ctx.uid, ctx.gid) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(path=path) self._add_path(attr.st_ino, path) return attr async def mkdir(self, inode_p, name, mode, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: os.mkdir(path, mode=(mode & ~ctx.umask)) os.chown(path, ctx.uid, ctx.gid) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(path=path) self._add_path(attr.st_ino, path) return attr async def statfs(self, ctx): root = self._inode_path_map[pyfuse3.ROOT_INODE] stat_ = pyfuse3.StatvfsData() try: statfs = os.statvfs(root) except OSError as exc: raise FUSEError(exc.errno) for attr in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', 'f_bavail', 'f_files', 'f_ffree', 'f_favail'): setattr(stat_, attr, getattr(statfs, attr)) stat_.f_namemax = statfs.f_namemax - (len(root)+1) return stat_ async def open(self, inode, flags, ctx): if inode in self._inode_fd_map: fd = self._inode_fd_map[inode] self._fd_open_count[fd] += 1 return pyfuse3.FileInfo(fh=fd) assert flags & os.O_CREAT == 0 try: fd = os.open(self._inode_to_path(inode), flags) except OSError as exc: raise FUSEError(exc.errno) self._inode_fd_map[inode] = fd self._fd_inode_map[fd] = inode self._fd_open_count[fd] = 1 return pyfuse3.FileInfo(fh=fd) async def create(self, inode_p, name, mode, flags, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: fd = os.open(path, flags | os.O_CREAT | os.O_TRUNC) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(fd=fd) self._add_path(attr.st_ino, path) self._inode_fd_map[attr.st_ino] = fd self._fd_inode_map[fd] = attr.st_ino self._fd_open_count[fd] = 1 return (pyfuse3.FileInfo(fh=fd), attr) async def read(self, fd, offset, length): os.lseek(fd, offset, os.SEEK_SET) return os.read(fd, length) async def write(self, fd, offset, buf): os.lseek(fd, offset, os.SEEK_SET) return os.write(fd, buf) async def release(self, fd): if self._fd_open_count[fd] > 1: self._fd_open_count[fd] -= 1 return del self._fd_open_count[fd] inode = self._fd_inode_map[fd] del self._inode_fd_map[inode] del self._fd_inode_map[fd] try: os.close(fd) except OSError as exc: raise FUSEError(exc.errno) def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(args): '''Parse command line''' parser = ArgumentParser() parser.add_argument('source', type=str, help='Directory tree to mirror') parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args(args) def main(): options = parse_args(sys.argv[1:]) init_logging(options.debug) operations = Operations(options.source) log.debug('Mounting...') fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=passthroughfs') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(operations, options.mountpoint, fuse_options) try: log.debug('Entering main loop..') trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise log.debug('Unmounting..') pyfuse3.close() if __name__ == '__main__': main() h]h0XVC#!/usr/bin/env python3 ''' passthroughfs.py - Example file system for pyfuse3 This file system mirrors the contents of a specified directory tree. Caveats: * Inode generation numbers are not passed through but set to zero. * Block size (st_blksize) and number of allocated blocks (st_blocks) are not passed through. * Performance for large directories is not good, because the directory is always read completely. * There may be a way to break-out of the directory tree. * The readdir implementation is not fully POSIX compliant. If a directory contains hardlinks and is modified during a readdir call, readdir() may return some of the hardlinked files twice or omit them completely. * If you delete or rename files in the underlying file system, the passthrough file system will get confused. Copyright © Nikolaus Rath Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) import pyfuse3 from argparse import ArgumentParser import errno import logging import stat as stat_m from pyfuse3 import FUSEError from os import fsencode, fsdecode from collections import defaultdict import trio import faulthandler faulthandler.enable() log = logging.getLogger(__name__) class Operations(pyfuse3.Operations): enable_writeback_cache = True def __init__(self, source): super().__init__() self._inode_path_map = { pyfuse3.ROOT_INODE: source } self._lookup_cnt = defaultdict(lambda : 0) self._fd_inode_map = dict() self._inode_fd_map = dict() self._fd_open_count = dict() def _inode_to_path(self, inode): try: val = self._inode_path_map[inode] except KeyError: raise FUSEError(errno.ENOENT) if isinstance(val, set): # In case of hardlinks, pick any path val = next(iter(val)) return val def _add_path(self, inode, path): log.debug('_add_path for %d, %s', inode, path) self._lookup_cnt[inode] += 1 # With hardlinks, one inode may map to multiple paths. if inode not in self._inode_path_map: self._inode_path_map[inode] = path return val = self._inode_path_map[inode] if isinstance(val, set): val.add(path) elif val != path: self._inode_path_map[inode] = { path, val } async def forget(self, inode_list): for (inode, nlookup) in inode_list: if self._lookup_cnt[inode] > nlookup: self._lookup_cnt[inode] -= nlookup continue log.debug('forgetting about inode %d', inode) assert inode not in self._inode_fd_map del self._lookup_cnt[inode] try: del self._inode_path_map[inode] except KeyError: # may have been deleted pass async def lookup(self, inode_p, name, ctx=None): name = fsdecode(name) log.debug('lookup for %s in %d', name, inode_p) path = os.path.join(self._inode_to_path(inode_p), name) attr = self._getattr(path=path) if name != '.' and name != '..': self._add_path(attr.st_ino, path) return attr async def getattr(self, inode, ctx=None): if inode in self._inode_fd_map: return self._getattr(fd=self._inode_fd_map[inode]) else: return self._getattr(path=self._inode_to_path(inode)) def _getattr(self, path=None, fd=None): assert fd is None or path is None assert not(fd is None and path is None) try: if fd is None: stat = os.lstat(path) else: stat = os.fstat(fd) except OSError as exc: raise FUSEError(exc.errno) entry = pyfuse3.EntryAttributes() for attr in ('st_ino', 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', 'st_size', 'st_atime_ns', 'st_mtime_ns', 'st_ctime_ns'): setattr(entry, attr, getattr(stat, attr)) entry.generation = 0 entry.entry_timeout = 0 entry.attr_timeout = 0 entry.st_blksize = 512 entry.st_blocks = ((entry.st_size+entry.st_blksize-1) // entry.st_blksize) return entry async def readlink(self, inode, ctx): path = self._inode_to_path(inode) try: target = os.readlink(path) except OSError as exc: raise FUSEError(exc.errno) return fsencode(target) async def opendir(self, inode, ctx): return inode async def readdir(self, inode, off, token): path = self._inode_to_path(inode) log.debug('reading %s', path) entries = [] for name in os.listdir(path): if name == '.' or name == '..': continue attr = self._getattr(path=os.path.join(path, name)) entries.append((attr.st_ino, name, attr)) log.debug('read %d entries, starting at %d', len(entries), off) # This is not fully posix compatible. If there are hardlinks # (two names with the same inode), we don't have a unique # offset to start in between them. Note that we cannot simply # count entries, because then we would skip over entries # (or return them more than once) if the number of directory # entries changes between two calls to readdir(). for (ino, name, attr) in sorted(entries): if ino <= off: continue if not pyfuse3.readdir_reply( token, fsencode(name), attr, ino): break self._add_path(attr.st_ino, os.path.join(path, name)) async def unlink(self, inode_p, name, ctx): name = fsdecode(name) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: inode = os.lstat(path).st_ino os.unlink(path) except OSError as exc: raise FUSEError(exc.errno) if inode in self._lookup_cnt: self._forget_path(inode, path) async def rmdir(self, inode_p, name, ctx): name = fsdecode(name) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: inode = os.lstat(path).st_ino os.rmdir(path) except OSError as exc: raise FUSEError(exc.errno) if inode in self._lookup_cnt: self._forget_path(inode, path) def _forget_path(self, inode, path): log.debug('forget %s for %d', path, inode) val = self._inode_path_map[inode] if isinstance(val, set): val.remove(path) if len(val) == 1: self._inode_path_map[inode] = next(iter(val)) else: del self._inode_path_map[inode] async def symlink(self, inode_p, name, target, ctx): name = fsdecode(name) target = fsdecode(target) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: os.symlink(target, path) os.chown(path, ctx.uid, ctx.gid, follow_symlinks=False) except OSError as exc: raise FUSEError(exc.errno) stat = os.lstat(path) self._add_path(stat.st_ino, path) return await self.getattr(stat.st_ino) async def rename(self, inode_p_old, name_old, inode_p_new, name_new, flags, ctx): if flags != 0: raise FUSEError(errno.EINVAL) name_old = fsdecode(name_old) name_new = fsdecode(name_new) parent_old = self._inode_to_path(inode_p_old) parent_new = self._inode_to_path(inode_p_new) path_old = os.path.join(parent_old, name_old) path_new = os.path.join(parent_new, name_new) try: os.rename(path_old, path_new) inode = os.lstat(path_new).st_ino except OSError as exc: raise FUSEError(exc.errno) if inode not in self._lookup_cnt: return val = self._inode_path_map[inode] if isinstance(val, set): assert len(val) > 1 val.add(path_new) val.remove(path_old) else: assert val == path_old self._inode_path_map[inode] = path_new async def link(self, inode, new_inode_p, new_name, ctx): new_name = fsdecode(new_name) parent = self._inode_to_path(new_inode_p) path = os.path.join(parent, new_name) try: os.link(self._inode_to_path(inode), path, follow_symlinks=False) except OSError as exc: raise FUSEError(exc.errno) self._add_path(inode, path) return await self.getattr(inode) async def setattr(self, inode, attr, fields, fh, ctx): # We use the f* functions if possible so that we can handle # a setattr() call for an inode without associated directory # handle. if fh is None: path_or_fh = self._inode_to_path(inode) truncate = os.truncate chmod = os.chmod chown = os.chown stat = os.lstat else: path_or_fh = fh truncate = os.ftruncate chmod = os.fchmod chown = os.fchown stat = os.fstat try: if fields.update_size: truncate(path_or_fh, attr.st_size) if fields.update_mode: # Under Linux, chmod always resolves symlinks so we should # actually never get a setattr() request for a symbolic # link. assert not stat_m.S_ISLNK(attr.st_mode) chmod(path_or_fh, stat_m.S_IMODE(attr.st_mode)) if fields.update_uid: chown(path_or_fh, attr.st_uid, -1, follow_symlinks=False) if fields.update_gid: chown(path_or_fh, -1, attr.st_gid, follow_symlinks=False) if fields.update_atime and fields.update_mtime: if fh is None: os.utime(path_or_fh, None, follow_symlinks=False, ns=(attr.st_atime_ns, attr.st_mtime_ns)) else: os.utime(path_or_fh, None, ns=(attr.st_atime_ns, attr.st_mtime_ns)) elif fields.update_atime or fields.update_mtime: # We can only set both values, so we first need to retrieve the # one that we shouldn't be changing. oldstat = stat(path_or_fh) if not fields.update_atime: attr.st_atime_ns = oldstat.st_atime_ns else: attr.st_mtime_ns = oldstat.st_mtime_ns if fh is None: os.utime(path_or_fh, None, follow_symlinks=False, ns=(attr.st_atime_ns, attr.st_mtime_ns)) else: os.utime(path_or_fh, None, ns=(attr.st_atime_ns, attr.st_mtime_ns)) except OSError as exc: raise FUSEError(exc.errno) return await self.getattr(inode) async def mknod(self, inode_p, name, mode, rdev, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: os.mknod(path, mode=(mode & ~ctx.umask), device=rdev) os.chown(path, ctx.uid, ctx.gid) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(path=path) self._add_path(attr.st_ino, path) return attr async def mkdir(self, inode_p, name, mode, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: os.mkdir(path, mode=(mode & ~ctx.umask)) os.chown(path, ctx.uid, ctx.gid) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(path=path) self._add_path(attr.st_ino, path) return attr async def statfs(self, ctx): root = self._inode_path_map[pyfuse3.ROOT_INODE] stat_ = pyfuse3.StatvfsData() try: statfs = os.statvfs(root) except OSError as exc: raise FUSEError(exc.errno) for attr in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', 'f_bavail', 'f_files', 'f_ffree', 'f_favail'): setattr(stat_, attr, getattr(statfs, attr)) stat_.f_namemax = statfs.f_namemax - (len(root)+1) return stat_ async def open(self, inode, flags, ctx): if inode in self._inode_fd_map: fd = self._inode_fd_map[inode] self._fd_open_count[fd] += 1 return pyfuse3.FileInfo(fh=fd) assert flags & os.O_CREAT == 0 try: fd = os.open(self._inode_to_path(inode), flags) except OSError as exc: raise FUSEError(exc.errno) self._inode_fd_map[inode] = fd self._fd_inode_map[fd] = inode self._fd_open_count[fd] = 1 return pyfuse3.FileInfo(fh=fd) async def create(self, inode_p, name, mode, flags, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: fd = os.open(path, flags | os.O_CREAT | os.O_TRUNC) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(fd=fd) self._add_path(attr.st_ino, path) self._inode_fd_map[attr.st_ino] = fd self._fd_inode_map[fd] = attr.st_ino self._fd_open_count[fd] = 1 return (pyfuse3.FileInfo(fh=fd), attr) async def read(self, fd, offset, length): os.lseek(fd, offset, os.SEEK_SET) return os.read(fd, length) async def write(self, fd, offset, buf): os.lseek(fd, offset, os.SEEK_SET) return os.write(fd, buf) async def release(self, fd): if self._fd_open_count[fd] > 1: self._fd_open_count[fd] -= 1 return del self._fd_open_count[fd] inode = self._fd_inode_map[fd] del self._inode_fd_map[inode] del self._fd_inode_map[fd] try: os.close(fd) except OSError as exc: raise FUSEError(exc.errno) def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(args): '''Parse command line''' parser = ArgumentParser() parser.add_argument('source', type=str, help='Directory tree to mirror') parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args(args) def main(): options = parse_args(sys.argv[1:]) init_logging(options.debug) operations = Operations(options.source) log.debug('Mounting...') fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=passthroughfs') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(operations, options.mountpoint, fuse_options) try: log.debug('Entering main loop..') trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise log.debug('Unmounting..') pyfuse3.close() if __name__ == '__main__': main() }h j;sbah}(h]h]h]h]h]source./home/user/w/pyfuse3/examples/passthroughfs.pyhhhhpythonhh}hKsuhhh"h#hK#h jh!hubeh}(h]passthrough-overlay-file-systemah]h]!passthrough / overlay file systemah]h]uhh$h h&h!hh"h#hKubeh}(h](example-file-systemsheh]h](example file systemsexample file systemeh]h]uhh$h hh!hh"h#hKexpect_referenced_by_name}j[h sexpect_referenced_by_id}hh subeh}(h]h]h]h]h]sourceh#uhhcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(h)N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh# _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}h]h asnameids}(j[hjZjWhhjjjRjOu nametypes}(j[jZhjjRuh}(hh&jWh&hhbjhjOju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages]h system_message)}(hhh]h<)}(hhh]h09Hyperlink target "example-file-system" is not referenced.}h jsbah}(h]h]h]h]h]uhh;h jubah}(h]h]h]h]h]levelKtypeINFOsourceh#lineKuhjuba transformerN include_log] decorationNh!hub.pyfuse3-3.4.0/doc/html/.doctrees/fuse_api.doctree0000644000175000017500000014764614663711064021665 0ustar useruser00000000000000sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(hFUSE API Functionsh]h TextFUSE API Functions}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh%/home/user/w/pyfuse3/rst/fuse_api.rsthKubhindex)}(hhh]h}(h!]h#]h%]h']h)]entries](singleinit() (in module pyfuse3) pyfuse3.inithNtauh+h-hh hhhdocstring of pyfuse3.inithNubhdesc)}(hhh](hdesc_signature)}(h.init(ops, mountpoint, options=default_options)h](h desc_addname)}(hpyfuse3.h]hpyfuse3.}(hhLhhhNhNubah}(h!]h#]( sig-prename descclassnameeh%]h']h)] xml:spacepreserveuh+hJhhFhhhdocstring of pyfuse3.inithKubh desc_name)}(hinith]hinit}(hhahhhNhNubah}(h!]h#](sig-namedescnameeh%]h']h)]h\h]uh+h_hhFhhhh^hKubhdesc_parameterlist)}(h(ops, mountpoint, options=default_optionsh](hdesc_parameter)}(hopsh]h desc_sig_name)}(hopsh]hops}(hhhhhNhNubah}(h!]h#]nah%]h']h)]uh+h}hhyubah}(h!]h#]h%]h']h)]h\h]uh+hwhhsubhx)}(h mountpointh]h~)}(h mountpointh]h mountpoint}(hhhhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hhubah}(h!]h#]h%]h']h)]h\h]uh+hwhhsubhx)}(hoptions=default_optionsh](h~)}(hoptionsh]hoptions}(hhhhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hhubhdesc_sig_operator)}(h=h]h=}(hhhhhNhNubah}(h!]h#]oah%]h']h)]uh+hhhubh inline)}(hdefault_optionsh]hdefault_options}(hhhhhNhNubah}(h!]h#] default_valueah%]h']h)]support_smartquotesuh+hhhubeh}(h!]h#]h%]h']h)]h\h]uh+hwhhsubeh}(h!]h#]h%]h']h)]h\h]uh+hqhhFhhhh^hKubeh}(h!]hhKhhhhubj)}(hc*ops* has to be an instance of the `Operations` class (or another class defining the same methods).h](h emphasis)}(h*ops*h]hops}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh has to be an instance of the }(hjhhhNhNubh pending_xref)}(h `Operations`h]h literal)}(hj.h]h Operations}(hj2hhhNhNubah}(h!]h#](xrefpypy-objeh%]h']h)]uh+j0hj,ubah}(h!]h#]h%]h']h)]refdocfuse_api refdomainj=reftypeobj refexplicitrefwarn py:modulehpy:classN reftarget Operationsuh+j*hh^hKhjubh4 class (or another class defining the same methods).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhh>hKhhhhubj)}(h*args* has to be a set of strings. `default_options` provides some reasonable defaults. It is recommended to use these options as a basis and add or remove options as necessary. For example::h](j)}(h*args*h]hargs}(hjahhhNhNubah}(h!]h#]h%]h']h)]uh+jhj]ubh has to be a set of strings. }(hj]hhhNhNubj+)}(h`default_options`h]j1)}(hjuh]hdefault_options}(hjwhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjsubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOhjPNjQdefault_optionsuh+j*hh>hKhj]ubh provides some reasonable defaults. It is recommended to use these options as a basis and add or remove options as necessary. For example:}(hj]hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhh>hKhhhhubh literal_block)}(hmy_opts = set(pyfuse3.default_options) my_opts.add('allow_other') my_opts.discard('default_permissions') pyfuse3.init(ops, mountpoint, my_opts)h]hmy_opts = set(pyfuse3.default_options) my_opts.add('allow_other') my_opts.discard('default_permissions') pyfuse3.init(ops, mountpoint, my_opts)}hjsbah}(h!]h#]h%]h']h)]h\h]uh+jhh>hK hhhhubj)}(hX(Valid options are listed under ``struct fuse_opt fuse_mount_opts[]`` (in `mount.c `_) and ``struct fuse_opt fuse_ll_opts[]`` (in `fuse_lowlevel_c `_).h](hValid options are listed under }(hjhhhNhNubj1)}(h%``struct fuse_opt fuse_mount_opts[]``h]h!struct fuse_opt fuse_mount_opts[]}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j0hjubh (in }(hjhhhNhNubh reference)}(hO`mount.c `_h]hmount.c}(hjhhhNhNubah}(h!]h#]h%]h']h)]namemount.crefuriBhttps://github.com/libfuse/libfuse/blob/fuse-3.2.6/lib/mount.c#L80uh+jhjubh target)}(hE h]h}(h!]mount-cah#]h%]mount.cah']h)]refurijuh+j referencedKhjubh) and }(hjhhhNhNubj1)}(h"``struct fuse_opt fuse_ll_opts[]``h]hstruct fuse_opt fuse_ll_opts[]}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j0hjubh (in }hjsbj)}(ha`fuse_lowlevel_c `_h]hfuse_lowlevel_c}(hjhhhNhNubah}(h!]h#]h%]h']h)]namefuse_lowlevel_cjLhttps://github.com/libfuse/libfuse/blob/fuse-3.2.6/lib/fuse_lowlevel.c#L2572uh+jhjubj)}(hO h]h}(h!]fuse-lowlevel-cah#]h%]fuse_lowlevel_cah']h)]refurijuh+jjKhjubh).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhh>hKhhhhubeh}(h!]h#]h%]h']h)]uh+hhhAhhhh^hKubeh}(h!]h#](pyfunctioneh%]h']h)]domainj2objtypej3desctypej3noindex noindexentrynocontentsentryuh+h?hhhh hh>hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:main() (in module pyfuse3) pyfuse3.mainhNtauh+h-hh hhhdocstring of pyfuse3.mainhNubh@)}(hhh](hE)}(hmain(min_tasks=1, max_tasks=99)h](hdesc_annotation)}(hF[>, >]h](hdesc_sig_keyword)}(hasynch]hasync}(hj[hhhNhNubah}(h!]h#]kah%]h']h)]uh+jYhjUubhdesc_sig_space)}(h h]h }(hjlhhhNhNubah}(h!]h#]wah%]h']h)]uh+jjhjUubeh}(h!]h#]h%]h']h)]h\h]uh+jShjOhhhdocstring of pyfuse3.mainhKubhK)}(hpyfuse3.h]hpyfuse3.}(hjhhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhjOhhhjhKubh`)}(hmainh]hmain}(hjhhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hjOhhhjhKubhr)}(hmin_tasks=1, max_tasks=99h](hx)}(h min_tasks=1h](h~)}(h min_tasksh]h min_tasks}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hjubh)}(h=h]h=}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubh)}(h1h]h1}(hjhhhNhNubah}(h!]h#]hah%]h']h)]support_smartquotesuh+hhjubeh}(h!]h#]h%]h']h)]h\h]uh+hwhjubhx)}(h max_tasks=99h](h~)}(h max_tasksh]h max_tasks}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hjubh)}(h=h]h=}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubh)}(h99h]h99}(hjhhhNhNubah}(h!]h#]hah%]h']h)]support_smartquotesuh+hhjubeh}(h!]h#]h%]h']h)]h\h]uh+hwhjubeh}(h!]h#]h%]h']h)]h\h]uh+hqhjOhhhjhKubeh}(h!]jIah#](hheh%]h']h)]hpyfuse3hhhjhjjhmain()uh+hDhjhKhjLhhubh)}(hhh]j)}(hRun FUSE main looph]hRun FUSE main loop}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjKhKhjhhubah}(h!]h#]h%]h']h)]uh+hhjLhhhjhKubeh}(h!]h#](pyfunctioneh%]h']h)]j7j5j8j6j9j6j:j;j<uh+h?hhhh hjKhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:terminate() (in module pyfuse3)pyfuse3.terminatehNtauh+h-hh hhhdocstring of pyfuse3.terminatehNubh@)}(hhh](hE)}(h terminate()h](hK)}(hpyfuse3.h]hpyfuse3.}(hjPhhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhjLhhhdocstring of pyfuse3.terminatehKubh`)}(h terminateh]h terminate}(hj_hhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hjLhhhj^hKubhr)}(h()h]h}(h!]h#]h%]h']h)]h\h]uh+hqhjLhhhj^hKubeh}(h!]jFah#](hheh%]h']h)]hpyfuse3hhhjahj}jah terminate()uh+hDhj^hKhjIhhubh)}(hhh](j)}(hTerminate FUSE main loop.h]hTerminate FUSE main loop.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjHhKhjhhubj)}(hcThis function gracefully terminates the FUSE main loop (resulting in the call to main() to return).h]hcThis function gracefully terminates the FUSE main loop (resulting in the call to main() to return).}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjHhKhjhhubj)}(hWhen called by a thread different from the one that runs the main loop, the call must be wrapped with `trio.from_thread.run_sync`. The necessary *trio_token* argument can (for convience) be retrieved from the `trio_token` module attribute.h](hfWhen called by a thread different from the one that runs the main loop, the call must be wrapped with }(hjhhhNhNubj+)}(h`trio.from_thread.run_sync`h]j1)}(hjh]htrio.from_thread.run_sync}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOj}jPNjQtrio.from_thread.run_syncuh+j*hjHhKhjubh. The necessary }(hjhhhNhNubj)}(h *trio_token*h]h trio_token}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh4 argument can (for convience) be retrieved from the }(hjhhhNhNubj+)}(h `trio_token`h]j1)}(hjh]h trio_token}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOj}jPNjQ trio_tokenuh+j*hjHhKhjubh module attribute.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhjHhKhjhhubeh}(h!]h#]h%]h']h)]uh+hhjIhhhj^hKubeh}(h!]h#](pyfunctioneh%]h']h)]j7jj8jj9jj:j;j<uh+h?hhhh hjHhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:close() (in module pyfuse3) pyfuse3.closehNtauh+h-hh hhhdocstring of pyfuse3.closehNubh@)}(hhh](hE)}(hclose(unmount=True)h](hK)}(hpyfuse3.h]hpyfuse3.}(hj+hhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhj'hhhdocstring of pyfuse3.closehKubh`)}(hcloseh]hclose}(hj:hhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hj'hhhj9hKubhr)}(h unmount=Trueh]hx)}(h unmount=Trueh](h~)}(hunmounth]hunmount}(hjPhhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hjLubh)}(h=h]h=}(hj^hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjLubh)}(hTrueh]hTrue}(hjlhhhNhNubah}(h!]h#]hah%]h']h)]support_smartquotesuh+hhjLubeh}(h!]h#]h%]h']h)]h\h]uh+hwhjHubah}(h!]h#]h%]h']h)]h\h]uh+hqhj'hhhj9hKubeh}(h!]j!ah#](hheh%]h']h)]hpyfuse3hhhj<hjj<hclose()uh+hDhj9hKhj$hhubh)}(hhh](j)}(h+Clean up and ensure filesystem is unmountedh]h+Clean up and ensure filesystem is unmounted}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj#hKhjhhubj)}(hnIf *unmount* is False, only clean up operations are peformed, but the file system is not explicitly unmounted.h](hIf }(hjhhhNhNubj)}(h *unmount*h]hunmount}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubhb is False, only clean up operations are peformed, but the file system is not explicitly unmounted.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj#hKhjhhubj)}(hXNormally, the filesystem is unmounted by the user calling umount(8) or fusermount(1), which then terminates the FUSE main loop. However, the loop may also terminate as a result of an exception or a signal. In this case the filesystem remains mounted, but any attempt to access it will block (while the filesystem process is still running) or (after the filesystem process has terminated) return an error. If *unmount* is True, this function will ensure that the filesystem is properly unmounted.h](hXNormally, the filesystem is unmounted by the user calling umount(8) or fusermount(1), which then terminates the FUSE main loop. However, the loop may also terminate as a result of an exception or a signal. In this case the filesystem remains mounted, but any attempt to access it will block (while the filesystem process is still running) or (after the filesystem process has terminated) return an error. If }(hjhhhNhNubj)}(h *unmount*h]hunmount}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubhN is True, this function will ensure that the filesystem is properly unmounted.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj#hKhjhhubj)}(hNote: if the connection to the kernel is terminated via the ``/sys/fs/fuse/connections/`` interface, this function will *not* unmount the filesystem even if *unmount* is True.h](h`_. A less complicated alternative is to use the `invalidate_entry_async` function instead.h](hFor technical reasons, this function can also not return control to the main event loop but will actually block. To return control to the event loop while this function is running, call it in a separate thread using }(hj hhhNhNubj)}(h|`trio.run_sync_in_worker_thread `_h]htrio.run_sync_in_worker_thread}(hj hhhNhNubah}(h!]h#]h%]h']h)]nametrio.run_sync_in_worker_threadjXhttps://trio.readthedocs.io/en/latest/reference-core.html#trio.run_sync_in_worker_threaduh+jhj ubj)}(h[ h]h}(h!]trio-run-sync-in-worker-threadah#]h%]trio.run_sync_in_worker_threadah']h)]refurij uh+jjKhj ubh/. A less complicated alternative is to use the }(hj hhhNhNubj+)}(h`invalidate_entry_async`h]j1)}(hj h]hinvalidate_entry_async}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOjjPNjQinvalidate_entry_asyncuh+j*hjfhKhj ubh function instead.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhjfhKhjhhubeh}(h!]h#]h%]h']h)]uh+hhjghhhj|hKubeh}(h!]h#](pyfunctioneh%]h']h)]j7j j8j j9j j:j;j<uh+h?hhhh hjfhNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:,invalidate_entry_async() (in module pyfuse3)pyfuse3.invalidate_entry_asynchNtauh+h-hh hhh+docstring of pyfuse3.invalidate_entry_asynchNubh@)}(hhh](hE)}(hEinvalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False)h](hK)}(hpyfuse3.h]hpyfuse3.}(hj hhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhj hhh+docstring of pyfuse3.invalidate_entry_asynchKubh`)}(hinvalidate_entry_asynch]hinvalidate_entry_async}(hj hhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hj hhhj hKubhr)}(h-inode_p, name, deleted=0, ignore_enoent=Falseh](hx)}(hinode_ph]h~)}(hinode_ph]hinode_p}(hj0 hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj, ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj( ubhx)}(hnameh]h~)}(hnameh]hname}(hjH hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hjD ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj( ubhx)}(h deleted=0h](h~)}(hdeletedh]hdeleted}(hj` hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj\ ubh)}(h=h]h=}(hjn hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj\ ubh)}(h0h]h0}(hj| hhhNhNubah}(h!]h#]hah%]h']h)]support_smartquotesuh+hhj\ ubeh}(h!]h#]h%]h']h)]h\h]uh+hwhj( ubhx)}(hignore_enoent=Falseh](h~)}(h ignore_enoenth]h ignore_enoent}(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj ubh)}(h=h]h=}(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj ubh)}(hFalseh]hFalse}(hj hhhNhNubah}(h!]h#]hah%]h']h)]support_smartquotesuh+hhj ubeh}(h!]h#]h%]h']h)]h\h]uh+hwhj( ubeh}(h!]h#]h%]h']h)]h\h]uh+hqhj hhhj hKubeh}(h!]j ah#](hheh%]h']h)]hpyfuse3hhhj hj j hinvalidate_entry_async()uh+hDhj hKhj hhubh)}(hhh](j)}(h)Asynchronously invalidate directory entryh]h)Asynchronously invalidate directory entry}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj hKhj hhubj)}(hX|This function performs the same operation as `invalidate_entry`, but does so asynchronously in a separate thread. This avoids the deadlocks that may occur when using `invalidate_entry` from within a request handler, but means that the function generally returns before the kernel has actually invalidated the entry, and that no errors can be reported (they will be logged though).h](h-This function performs the same operation as }(hj hhhNhNubj+)}(h`invalidate_entry`h]j1)}(hj h]hinvalidate_entry}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOj jPNjQinvalidate_entryuh+j*hj hKhj ubhg, but does so asynchronously in a separate thread. This avoids the deadlocks that may occur when using }(hj hhhNhNubj+)}(h`invalidate_entry`h]j1)}(hj h]hinvalidate_entry}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOj jPNjQinvalidate_entryuh+j*hj hKhj ubh from within a request handler, but means that the function generally returns before the kernel has actually invalidated the entry, and that no errors can be reported (they will be logged though).}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj hhubj)}(hXThe directory entries that are to be invalidated are put in an unbounded queue which is processed by a single thread. This means that if the entry at the beginning of the queue cannot be invalidated yet because a related file system operation is still in progress, none of the other entries will be processed and repeated calls to this function will result in continued growth of the queue.h]hXThe directory entries that are to be invalidated are put in an unbounded queue which is processed by a single thread. This means that if the entry at the beginning of the queue cannot be invalidated yet because a related file system operation is still in progress, none of the other entries will be processed and repeated calls to this function will result in continued growth of the queue.}(hj< hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj hK hj hhubj)}(hGIf there are errors, an exception is logged using the `logging` module.h](h6If there are errors, an exception is logged using the }(hjJ hhhNhNubj+)}(h `logging`h]j1)}(hjT h]hlogging}(hjV hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjR ubah}(h!]h#]h%]h']h)]refdocjI refdomainj` reftypeobj refexplicitrefwarnjOj jPNjQlogginguh+j*hj hK hjJ ubh module.}(hjJ hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj hhubj)}(hIf *ignore_enoent* is True, ignore ENOENT errors (which occur if the kernel doesn't actually have knowledge of the entry that is to be removed).h](hIf }(hj| hhhNhNubj)}(h*ignore_enoent*h]h ignore_enoent}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj| ubh is True, ignore ENOENT errors (which occur if the kernel doesn’t actually have knowledge of the entry that is to be removed).}(hj| hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj hKubeh}(h!]h#](pyfunctioneh%]h']h)]j7j j8j j9j j:j;j<uh+h?hhhh hj hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:"notify_store() (in module pyfuse3)pyfuse3.notify_storehNtauh+h-hh hhh!docstring of pyfuse3.notify_storehNubh@)}(hhh](hE)}(h!notify_store(inode, offset, data)h](hK)}(hpyfuse3.h]hpyfuse3.}(hj hhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhj hhh!docstring of pyfuse3.notify_storehKubh`)}(h notify_storeh]h notify_store}(hj hhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hj hhhj hKubhr)}(hinode, offset, datah](hx)}(hinodeh]h~)}(hinodeh]hinode}(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubhx)}(hoffseth]h~)}(hoffseth]hoffset}(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubhx)}(hdatah]h~)}(hdatah]hdata}(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubeh}(h!]h#]h%]h']h)]h\h]uh+hqhj hhhj hKubeh}(h!]j ah#](hheh%]h']h)]hpyfuse3hhhj hj5 j hnotify_store()uh+hDhj hKhj hhubh)}(hhh](j)}(hStore data in kernel page cacheh]hStore data in kernel page cache}(hj; hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj hKhj8 hhubj)}(hSends *data* for the kernel to store it in the page cache for *inode* at *offset*. If this provides data beyond the current file size, the file is automatically extended.h](hSends }(hjI hhhNhNubj)}(h*data*h]hdata}(hjQ hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjI ubh2 for the kernel to store it in the page cache for }(hjI hhhNhNubj)}(h*inode*h]hinode}(hjc hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjI ubh at }(hjI hhhNhNubj)}(h*offset*h]hoffset}(hju hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjI ubhY. If this provides data beyond the current file size, the file is automatically extended.}(hjI hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj8 hhubj)}(hSIf this function raises an exception, the store may still have completed partially.h]hSIf this function raises an exception, the store may still have completed partially.}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj hKhj8 hhubj)}(hTIf the operation is not supported by the kernel, raises `OSError` with errno ENOSYS.h](h8If the operation is not supported by the kernel, raises }(hj hhhNhNubj+)}(h `OSError`h]j1)}(hj h]hOSError}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOj5 jPNjQOSErroruh+j*hj hKhj ubh with errno ENOSYS.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hK hj8 hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj hKubeh}(h!]h#](pyfunctioneh%]h']h)]j7j j8j j9j j:j;j<uh+h?hhhh hj hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:#readdir_reply() (in module pyfuse3)pyfuse3.readdir_replyhNtauh+h-hh hhh"docstring of pyfuse3.readdir_replyhNubh@)}(hhh](hE)}(hLreaddir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id)h](hK)}(hpyfuse3.h]hpyfuse3.}(hj hhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhj hhh"docstring of pyfuse3.readdir_replyhKubh`)}(h readdir_replyh]h readdir_reply}(hj hhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hj hhhj hKubhr)}(h?(ReaddirToken token, name, EntryAttributes attr, off_t next_id)h](hx)}(hReaddirToken tokenh]h~)}(hReaddirToken tokenh]hReaddirToken token}(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubhx)}(hnameh]h~)}(hnameh]hname}(hj. hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hj* ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubhx)}(hEntryAttributes attrh]h~)}(hEntryAttributes attrh]hEntryAttributes attr}(hjF hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hjB ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubhx)}(h off_t next_idh]h~)}(h off_t next_idh]h off_t next_id}(hj^ hhhNhNubah}(h!]h#]hah%]h']h)]uh+h}hjZ ubah}(h!]h#]h%]h']h)]h\h]uh+hwhj ubeh}(h!]h#]h%]h']h)]h\h]uh+hqhj hhhj hKubeh}(h!]j ah#](hheh%]h']h)]hpyfuse3hhhj hj~ j hreaddir_reply()uh+hDhj hKhj hhubh)}(hhh](j)}(hHReport a directory entry in response to a `~Operations.readdir` request.h](h*Report a directory entry in response to a }(hj hhhNhNubj+)}(h`~Operations.readdir`h]j1)}(hj h]hreaddir}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOj~ jPNjQOperations.readdiruh+j*h"docstring of pyfuse3.readdir_replyhKhj ubh request.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj hhubj)}(hThis function should be called by the `~Operations.readdir` handler to provide the list of directory entries. The function should be called once for each directory entry, until it returns False.h](h&This function should be called by the }(hj hhhNhNubj+)}(h`~Operations.readdir`h]j1)}(hj h]hreaddir}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOj~ jPNjQOperations.readdiruh+j*hj hKhj ubh handler to provide the list of directory entries. The function should be called once for each directory entry, until it returns False.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj hhubj)}(hH*token* must be the token received by the `~Operations.readdir` handler.h](j)}(h*token*h]htoken}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh# must be the token received by the }(hj hhhNhNubj+)}(h`~Operations.readdir`h]j1)}(hjh]hreaddir}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hj ubah}(h!]h#]h%]h']h)]refdocjI refdomainj reftypeobj refexplicitrefwarnjOj~ jPNjQOperations.readdiruh+j*hj hKhj ubh handler.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hKhj hhubh definition_list)}(hhh]h definition_list_item)}(ht*name* and must be the name of the directory entry and *attr* an `EntryAttributes` instance holding its attributes. h](h term)}(h@*name* and must be the name of the directory entry and *attr* anh](j)}(h*name*h]hname}(hj:hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj6ubh1 and must be the name of the directory entry and }(hj6hhhNhNubj)}(h*attr*h]hattr}(hjLhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj6ubh an}(hj6hhhNhNubeh}(h!]h#]h%]h']h)]uh+j4hj hK hj0ubh definition)}(hhh]j)}(h2`EntryAttributes` instance holding its attributes.h](j+)}(h`EntryAttributes`h]j1)}(hjoh]hEntryAttributes}(hjqhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjmubah}(h!]h#]h%]h']h)]refdocjI refdomainj{reftypeobj refexplicitrefwarnjOj~ jPNjQEntryAttributesuh+j*hj hKhjiubh! instance holding its attributes.}(hjihhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hK hjfubah}(h!]h#]h%]h']h)]uh+jdhj0ubeh}(h!]h#]h%]h']h)]uh+j.hj hK hj+ubah}(h!]h#]h%]h']h)]uh+j)hj hhhj hNubj)}(hX.*next_id* must be a 64-bit integer value that uniquely identifies the current position in the list of directory entries. It may be passed back to a later `~Operations.readdir` call to start another listing at the right position. This value should be robust in the presence of file removals and creations, i.e. if files are created or removed after a call to `~Operations.readdir` and `~Operations.readdir` is called again with *start_id* set to any previously supplied *next_id* values, under no circumstances must any file be reported twice or skipped over.h](j)}(h *next_id*h]hnext_id}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh must be a 64-bit integer value that uniquely identifies the current position in the list of directory entries. It may be passed back to a later }(hjhhhNhNubj+)}(h`~Operations.readdir`h]j1)}(hjh]hreaddir}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOj~ jPNjQOperations.readdiruh+j*hj hKhjubh call to start another listing at the right position. This value should be robust in the presence of file removals and creations, i.e. if files are created or removed after a call to }(hjhhhNhNubj+)}(h`~Operations.readdir`h]j1)}(hjh]hreaddir}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOj~ jPNjQOperations.readdiruh+j*hj hKhjubh and }(hjhhhNhNubj+)}(h`~Operations.readdir`h]j1)}(hj h]hreaddir}(hj hhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOj~ jPNjQOperations.readdiruh+j*hj hKhjubh is called again with }(hjhhhNhNubj)}(h *start_id*h]hstart_id}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh set to any previously supplied }(hjhhhNhNubj)}(h *next_id*h]hnext_id}(hj=hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubhP values, under no circumstances must any file be reported twice or skipped over.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhj hK hj hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj hKubeh}(h!]h#](pyfunctioneh%]h']h)]j7j^j8j_j9j_j:j;j<uh+h?hhhh hj hNubh.)}(hhh]h}(h!]h#]h%]h']h)]entries](h:trio_token (in module pyfuse3)pyfuse3.trio_tokenhNtauh+h-hh hhhh,hNubh@)}(hhh](hE)}(h trio_tokenh](hK)}(hpyfuse3.h]hpyfuse3.}(hjxhhhNhNubah}(h!]h#](hWhXeh%]h']h)]h\h]uh+hJhjthhhh,hKubh`)}(hjvh]h trio_token}(hjhhhNhNubah}(h!]h#](hlhmeh%]h']h)]h\h]uh+h_hjthhhh,hKubeh}(h!]joah#](hheh%]h']h)]hpyfuse3hhhjvhjjvhjvuh+hDhh,hKhjqhhubh)}(hhh]j)}(hSet to the value returned by `trio.lowlevel.current_trio_token` while `main` is running. Can be used by other threads to run code in the main loop through `trio.from_thread.run`.h](hSet to the value returned by }(hjhhhNhNubj+)}(h"`trio.lowlevel.current_trio_token`h]j1)}(hjh]h trio.lowlevel.current_trio_token}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOjjPNjQ trio.lowlevel.current_trio_tokenuh+j*hh,hKhjubh while }(hjhhhNhNubj+)}(h`main`h]j1)}(hjh]hmain}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOjjPNjQmainuh+j*hh,hKhjubhO is running. Can be used by other threads to run code in the main loop through }(hjhhhNhNubj+)}(h`trio.from_thread.run`h]j1)}(hjh]htrio.from_thread.run}(hjhhhNhNubah}(h!]h#](j<pypy-objeh%]h']h)]uh+j0hjubah}(h!]h#]h%]h']h)]refdocjI refdomainjreftypeobj refexplicitrefwarnjOjjPNjQtrio.from_thread.runuh+j*hh,hKhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+jhh,hKhjhhubah}(h!]h#]h%]h']h)]uh+hhjqhhhh,hKubeh}(h!]h#](pydataeh%]h']h)]j7j!j8j"j9j"j:j;j<uh+h?hhhh hh,hNubeh}(h!]fuse-api-functionsah#]h%]fuse api functionsah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjQerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j+j(jjjjj j u nametypes}(j+jjj uh!}(j(h hhhhNhNubah}(h!]h#]h%]h']h)]uh+hhh;hhhh,hK ubh paragraph)}(hXA file system is implemented by subclassing the `pyfuse3.Operations` class and implementing the various request handlers. The handlers respond to requests received from the FUSE kernel module and perform functions like looking up the inode given a file name, looking up attributes of an inode, opening a (file) inode for reading or writing or listing the contents of a (directory) inode.h](h0A file system is implemented by subclassing the }(hhNhhhNhNubh pending_xref)}(h`pyfuse3.Operations`h]h literal)}(hhZh]hpyfuse3.Operations}(hh^hhhNhNubah}(h!]h#](xrefpypy-objeh%]h']h)]uh+h\hhXubah}(h!]h#]h%]h']h)]refdocgeneral refdomainhireftypeobj refexplicitrefwarn py:modulepyfuse3py:classN reftargetpyfuse3.Operationsuh+hVhh,hK hhNubhX? class and implementing the various request handlers. The handlers respond to requests received from the FUSE kernel module and perform functions like looking up the inode given a file name, looking up attributes of an inode, opening a (file) inode for reading or writing or listing the contents of a (directory) inode.}(hhNhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hK hh;hhubhM)}(hXGBy default, pyfuse3 uses asynchronous I/O using Trio_, and most of the documentation assumes that you are using Trio. If you'd rather use asyncio, take a look at :ref:`asyncio Support `. If you would like to use Trio (which is recommended) but you have not yet used Trio before, please read the `Trio tutorial`_ first.h](h0By default, pyfuse3 uses asynchronous I/O using }(hhhhhNhNubh reference)}(hTrio_h]hTrio}(hhhhhNhNubah}(h!]h#]h%]h']h)]nameTriorefuri#https://github.com/python-trio/triouh+hhhresolvedKubho, and most of the documentation assumes that you are using Trio. If you’d rather use asyncio, take a look at }(hhhhhNhNubhW)}(h :ref:`asyncio Support `h]h inline)}(hhh]hasyncio Support}(hhhhhNhNubah}(h!]h#](hhstdstd-refeh%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]refdochu refdomainhreftyperef refexplicitrefwarnh~asynciouh+hVhh,hKhhubhn. If you would like to use Trio (which is recommended) but you have not yet used Trio before, please read the }(hhhhhNhNubh)}(h`Trio tutorial`_h]h Trio tutorial}(hhhhhNhNubah}(h!]h#]h%]h']h)]name Trio tutorialh3https://trio.readthedocs.io/en/latest/tutorial.htmluh+hhhhKubh first.}(hhhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hKhh;hhubhM)}(hXAn instance of the operations class is passed to `pyfuse3.init` to mount the file system. To enter the request handling loop, run `pyfuse3.main` in a trio event loop. This function will return when the file system should be unmounted again, which is done by calling `pyfuse3.close`.h](h1An instance of the operations class is passed to }(hhhhhNhNubhW)}(h`pyfuse3.init`h]h])}(hhh]h pyfuse3.init}(hhhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hhubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~ pyfuse3.inituh+hVhh,hKhhubhC to mount the file system. To enter the request handling loop, run }(hhhhhNhNubhW)}(h`pyfuse3.main`h]h])}(hjh]h pyfuse3.main}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainj&reftypeobj refexplicitrefwarnh{h|h}Nh~ pyfuse3.mainuh+hVhh,hKhhubhz in a trio event loop. This function will return when the file system should be unmounted again, which is done by calling }(hhhhhNhNubhW)}(h`pyfuse3.close`h]h])}(hj>h]h pyfuse3.close}(hj@hhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hj<ubah}(h!]h#]h%]h']h)]refdochu refdomainjJreftypeobj refexplicitrefwarnh{h|h}Nh~ pyfuse3.closeuh+hVhh,hKhhubh.}(hhhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hKhh;hhubhM)}(hAll character data (directory entry names, extended attribute names and values, symbolic link targets etc) are passed as `bytes` and must be returned as `bytes`.h](hyAll character data (directory entry names, extended attribute names and values, symbolic link targets etc) are passed as }(hjfhhhNhNubhW)}(h`bytes`h]h])}(hjph]hbytes}(hjrhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjnubah}(h!]h#]h%]h']h)]refdochu refdomainj|reftypeobj refexplicitrefwarnh{h|h}Nh~bytesuh+hVhh,hKhjfubh and must be returned as }(hjfhhhNhNubhW)}(h`bytes`h]h])}(hjh]hbytes}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~bytesuh+hVhh,hKhjfubh.}(hjfhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hKhh;hhubhM)}(h{For easier debugging, it is strongly recommended that applications using pyfuse3 also make use of the faulthandler_ module.h](hfFor easier debugging, it is strongly recommended that applications using pyfuse3 also make use of the }(hjhhhNhNubh)}(h faulthandler_h]h faulthandler}(hjhhhNhNubah}(h!]h#]h%]h']h)]name faulthandlerh2http://docs.python.org/3/library/faulthandler.htmluh+hhjhKubh module.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hK#hh;hhubh.)}(hD.. _faulthandler: http://docs.python.org/3/library/faulthandler.htmlh]h}(h!] faulthandlerah#]h%] faulthandlerah']h)]hjuh+h-hK&hh;hhhh, referencedKubh.)}(hF.. _Trio tutorial: https://trio.readthedocs.io/en/latest/tutorial.htmlh]h}(h!] trio-tutorialah#]h%] trio tutorialah']h)]hhuh+h-hK'hh;hhhh,jKubh.)}(h-.. _Trio: https://github.com/python-trio/trioh]h}(h!]trioah#]h%]trioah']h)]hhuh+h-hK(hh;hhhh,jKubeh}(h!](h:id1eh#]h%](getting startedgetting_startedeh']h)]uh+h hh hhhh,hK expect_referenced_by_name}j h/sexpect_referenced_by_id}h:h/subh )}(hhh](h)}(h Lookup Countsh]h Lookup Counts}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hK+ubhM)}(hXlMost file systems need to keep track which inodes are currently known to the kernel. This is, for example, necessary to correctly implement the *unlink* system call: when unlinking a directory entry whose associated inode is currently opened, the file system must defer removal of the inode (and thus the file contents) until it is no longer in use by any process.h](hMost file systems need to keep track which inodes are currently known to the kernel. This is, for example, necessary to correctly implement the }(hj"hhhNhNubh emphasis)}(h*unlink*h]hunlink}(hj,hhhNhNubah}(h!]h#]h%]h']h)]uh+j*hj"ubh system call: when unlinking a directory entry whose associated inode is currently opened, the file system must defer removal of the inode (and thus the file contents) until it is no longer in use by any process.}(hj"hhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hK-hjhhubhM)}(hXFUSE file systems achieve this by using "lookup counts". A lookup count is a number that's associated with an inode. An inode with a lookup count of zero is currently not known to the kernel. This means that if there are no directory entries referring to such an inode it can be safely removed, or (if a file system implements dynamic inode numbers), the inode number can be safely recycled.h]hXFUSE file systems achieve this by using “lookup counts”. A lookup count is a number that’s associated with an inode. An inode with a lookup count of zero is currently not known to the kernel. This means that if there are no directory entries referring to such an inode it can be safely removed, or (if a file system implements dynamic inode numbers), the inode number can be safely recycled.}(hjDhhhNhNubah}(h!]h#]h%]h']h)]uh+hLhh,hK4hjhhubhM)}(hXThe lookup count of an inode is increased by every operation that could make the inode "known" to the kernel. This includes e.g. `~Operations.lookup`, `~Operations.create` and `~Operations.readdir` (to determine if a given request handler affects the lookup count, please refer to its description in the `Operations` class). The lookup count is decreased by calls to the `~Operations.forget` handler.h](hThe lookup count of an inode is increased by every operation that could make the inode “known” to the kernel. This includes e.g. }(hjRhhhNhNubhW)}(h`~Operations.lookup`h]h])}(hj\h]hlookup}(hj^hhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjZubah}(h!]h#]h%]h']h)]refdochu refdomainjhreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.lookupuh+hVhh,hK;hjRubh, }(hjRhhhNhNubhW)}(h`~Operations.create`h]h])}(hjh]hcreate}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hj~ubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.createuh+hVhh,hK;hjRubh and }(hjRhhhNhNubhW)}(h`~Operations.readdir`h]h])}(hjh]hreaddir}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.readdiruh+hVhh,hK;hjRubhk (to determine if a given request handler affects the lookup count, please refer to its description in the }(hjRhhhNhNubhW)}(h `Operations`h]h])}(hjh]h Operations}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~ Operationsuh+hVhh,hK;hjRubh8 class). The lookup count is decreased by calls to the }(hjRhhhNhNubhW)}(h`~Operations.forget`h]h])}(hjh]hforget}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.forgetuh+hVhh,hK;hjRubh handler.}(hjRhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hK;hjhhubeh}(h!] lookup-countsah#]h%] lookup countsah']h)]uh+h hh hhhh,hK+ubh )}(hhh](h)}(hFUSE and VFS Lockingh]hFUSE and VFS Locking}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKEubhM)}(hFUSE and the kernel's VFS layer provide some basic locking that FUSE file systems automatically take advantage of. Specifically:h]hFUSE and the kernel’s VFS layer provide some basic locking that FUSE file systems automatically take advantage of. Specifically:}(hj-hhhNhNubah}(h!]h#]h%]h']h)]uh+hLhh,hKGhjhhubh bullet_list)}(hhh](h list_item)}(hXCalls to `~Operations.rename`, `~Operations.create`, `~Operations.symlink`, `~Operations.mknod`, `~Operations.link` and `~Operations.mkdir` acquire a write-lock on the inode of the directory in which the respective operation takes place (two in case of rename). h]hM)}(hXCalls to `~Operations.rename`, `~Operations.create`, `~Operations.symlink`, `~Operations.mknod`, `~Operations.link` and `~Operations.mkdir` acquire a write-lock on the inode of the directory in which the respective operation takes place (two in case of rename).h](h Calls to }(hjFhhhNhNubhW)}(h`~Operations.rename`h]h])}(hjPh]hrename}(hjRhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjNubah}(h!]h#]h%]h']h)]refdochu refdomainj\reftypeobj refexplicitrefwarnh{h|h}Nh~Operations.renameuh+hVhh,hKJhjFubh, }(hjFhhhNhNubhW)}(h`~Operations.create`h]h])}(hjth]hcreate}(hjvhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjrubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.createuh+hVhh,hKJhjFubh, }(hjFhhhNhNubhW)}(h`~Operations.symlink`h]h])}(hjh]hsymlink}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.symlinkuh+hVhh,hKJhjFubh, }hjFsbhW)}(h`~Operations.mknod`h]h])}(hjh]hmknod}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.mknoduh+hVhh,hKJhjFubh, }hjFsbhW)}(h`~Operations.link`h]h])}(hjh]hlink}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.linkuh+hVhh,hKJhjFubh and }(hjFhhhNhNubhW)}(h`~Operations.mkdir`h]h])}(hjh]hmkdir}(hjhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.mkdiruh+hVhh,hKJhjFubhz acquire a write-lock on the inode of the directory in which the respective operation takes place (two in case of rename).}(hjFhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hKJhjBubah}(h!]h#]h%]h']h)]uh+j@hj=hhhh,hNubjA)}(hCalls to `~Operations.lookup` acquire a read-lock on the inode of the parent directory (meaning that lookups in the same directory may run concurrently, but never at the same time as e.g. a rename or mkdir operation). h]hM)}(hCalls to `~Operations.lookup` acquire a read-lock on the inode of the parent directory (meaning that lookups in the same directory may run concurrently, but never at the same time as e.g. a rename or mkdir operation).h](h Calls to }(hj6hhhNhNubhW)}(h`~Operations.lookup`h]h])}(hj@h]hlookup}(hjBhhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hj>ubah}(h!]h#]h%]h']h)]refdochu refdomainjLreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.lookupuh+hVhh,hKPhj6ubh acquire a read-lock on the inode of the parent directory (meaning that lookups in the same directory may run concurrently, but never at the same time as e.g. a rename or mkdir operation).}(hj6hhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hKPhj2ubah}(h!]h#]h%]h']h)]uh+j@hj=hhhh,hNubjA)}(hUnless writeback caching is enabled, calls to `~Operations.write` for the same inode are automatically serialized (i.e., there are never concurrent calls for the same inode even when multithreading is enabled).h]hM)}(hUnless writeback caching is enabled, calls to `~Operations.write` for the same inode are automatically serialized (i.e., there are never concurrent calls for the same inode even when multithreading is enabled).h](h.Unless writeback caching is enabled, calls to }(hjrhhhNhNubhW)}(h`~Operations.write`h]h])}(hj|h]hwrite}(hj~hhhNhNubah}(h!]h#](hhpypy-objeh%]h']h)]uh+h\hjzubah}(h!]h#]h%]h']h)]refdochu refdomainjreftypeobj refexplicitrefwarnh{h|h}Nh~Operations.writeuh+hVhh,hKUhjrubh for the same inode are automatically serialized (i.e., there are never concurrent calls for the same inode even when multithreading is enabled).}(hjrhhhNhNubeh}(h!]h#]h%]h']h)]uh+hLhh,hKUhjnubah}(h!]h#]h%]h']h)]uh+j@hj=hhhh,hNubeh}(h!]h#]h%]h']h)]bullet*uh+j;hh,hKJhjhhubeh}(h!]fuse-and-vfs-lockingah#]h%]fuse and vfs lockingah']h)]uh+h hh hhhh,hKEubeh}(h!]general-informationah#]h%]general informationah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}(trio]ha trio tutorial]ha faulthandler]jaurefids}h:]h/asnameids}(jjj h:j jjjjjjjjjjju nametypes}(jj j jjjjjuh!}(jh h:h;jh;jjjjjjjjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages]h system_message)}(hhh]hM)}(hhh]h5Hyperlink target "getting-started" is not referenced.}hjTsbah}(h!]h#]h%]h']h)]uh+hLhjQubah}(h!]h#]h%]h']h)]levelKtypeINFOsourceh,lineKuh+jOuba transformerN include_log] decorationNhhub.pyfuse3-3.4.0/doc/html/.doctrees/gotchas.doctree0000644000175000017500000001225014663707215021503 0ustar useruser00000000000000sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(hCommon Gotchash]h TextCommon Gotchas}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh$/home/user/w/pyfuse3/rst/gotchas.rsthKubh paragraph)}(h>This chapter lists some common gotchas that should be avoided.h]h>This chapter lists some common gotchas that should be avoided.}(hh/hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hh,hKhh hhubh )}(hhh](h)}(h!Removing inodes in unlink handlerh]h!Removing inodes in unlink handler}(hh@hhhNhNubah}(h!]h#]h%]h']h)]uh+hhh=hhhh,hK ubh.)}(hbIf your file system is mounted at :file:`mnt`, the following code should complete without errors::h](h"If your file system is mounted at }(hhNhhhNhNubh literal)}(h :file:`mnt`h]hmnt}(hhXhhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hVhhNubh4, the following code should complete without errors:}(hhNhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hh,hK hh=hhubh literal_block)}(hX:with open('mnt/file_one', 'w+') as fh1: fh1.write('foo') fh1.flush() with open('mnt/file_one', 'a') as fh2: os.unlink('mnt/file_one') assert 'file_one' not in os.listdir('mnt') fh2.write('bar') os.close(os.dup(fh1.fileno())) fh1.seek(0) assert fh1.read() == 'foobar'h]hX:with open('mnt/file_one', 'w+') as fh1: fh1.write('foo') fh1.flush() with open('mnt/file_one', 'a') as fh2: os.unlink('mnt/file_one') assert 'file_one' not in os.listdir('mnt') fh2.write('bar') os.close(os.dup(fh1.fileno())) fh1.seek(0) assert fh1.read() == 'foobar'}hhusbah}(h!]h#]h%]h']h)] xml:spacepreserveuh+hshh,hKhh=hhubh.)}(hIf you're getting an error, then you probably did a mistake when implementing the `~Operations.unlink` handler and are removing the file contents when you should be deferring removal to the `~Operations.forget` handler.h](hTIf you’re getting an error, then you probably did a mistake when implementing the }(hhhhhNhNubh pending_xref)}(h`~Operations.unlink`h]hW)}(hhh]hunlink}(hhhhhNhNubah}(h!]h#](xrefpypy-objeh%]h']h)]uh+hVhhubah}(h!]h#]h%]h']h)]refdocgotchas refdomainhreftypeobj refexplicitrefwarn py:modulepyfuse3py:classN reftargetOperations.unlinkuh+hhh,hKhhubhX handler and are removing the file contents when you should be deferring removal to the }(hhhhhNhNubh)}(h`~Operations.forget`h]hW)}(hhh]hforget}(hhhhhNhNubah}(h!]h#](hpypy-objeh%]h']h)]uh+hVhhubah}(h!]h#]h%]h']h)]refdoch refdomainhnjreftypeobj refexplicitrefwarnhhhNhOperations.forgetuh+hhh,hKhhubh handler.}(hhhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hh,hKhh=hhubeh}(h!]!removing-inodes-in-unlink-handlerah#]h%]!removing inodes in unlink handlerah']h)]uh+h hh hhhh,hK ubeh}(h!]common-gotchasah#]h%]common gotchasah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(hhhhu nametypes}(hhuh!}(hh hh=u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.pyfuse3-3.4.0/doc/html/.doctrees/index.doctree0000644000175000017500000001071514663707215021166 0ustar useruser00000000000000sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(hpyfuse3 Documentationh]h Textpyfuse3 Documentation}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh"/home/user/w/pyfuse3/rst/index.rsthKubh )}(hhh](h)}(hTable of Contentsh]hTable of Contents}(hh0hhhNhNubah}(h!]h#]h%]h']h)]uh+hhh-hhhh,hKubhindex)}(hhh]h}(h!]h#]h%]h']h)]entries](pairmodule; pyfuse3module-pyfuse3hNtauh+h>hh-hhhNhNubh compound)}(hhh]htoctree)}(hhh]h}(h!]h#]h%]h']h)]hindexentries](NaboutNinstallNgeneralNasyncioNfuse_apiNdataN operationsNutilNgotchasNexampleNchangese includefiles](hbhdhfhhhjhlhnhphrhthvemaxdepthKcaptionNglobhidden includehiddennumberedK titlesonly rawentries]uh+hThh,hK hhQubah}(h!]h#]toctree-wrapperah%]h']h)]uh+hOhh-hhhh,hNubeh}(h!](hMtable-of-contentseh#]h%]table of contentsah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hIndices and tablesh]hIndices and tables}(hhhhhNhNubah}(h!]h#]h%]h']h)]uh+hhhhhhh,hKubh bullet_list)}(hhh](h list_item)}(h:ref:`genindex`h]h paragraph)}(hhh]h pending_xref)}(hhh]h inline)}(hhh]hgenindex}(hhhhhNhNubah}(h!]h#](xrefstdstd-refeh%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]refdoch_ refdomainhŌreftyperef refexplicitrefwarn reftargetgenindexuh+hhh,hKhhubah}(h!]h#]h%]h']h)]uh+hhh,hKhhubah}(h!]h#]h%]h']h)]uh+hhhhhhh,hNubh)}(h :ref:`search`h]h)}(hhh]h)}(hhh]h)}(hhh]hsearch}(hhhhhNhNubah}(h!]h#](hČstdstd-refeh%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]refdoch_ refdomainhreftyperef refexplicitrefwarnh֌searchuh+hhh,hKhhubah}(h!]h#]h%]h']h)]uh+hhh,hKhhubah}(h!]h#]h%]h']h)]uh+hhhhhhh,hNubeh}(h!]h#]h%]h']h)]bullet*uh+hhh,hKhhhhubeh}(h!]indices-and-tablesah#]h%]indices and tablesah']h)]uh+h hh hhhh,hKubeh}(h!]pyfuse3-documentationah#]h%]pyfuse3 documentationah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjQerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j+j(hhj#j u nametypes}(j+hj#uh!}(j(h hh-hMh target)}(hhh]h}(h!]hMah#]h%]h']h)]ismoduh+jhh,hKhh-hhubj hu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.pyfuse3-3.4.0/doc/html/.doctrees/install.doctree0000644000175000017500000003565414663707215021536 0ustar useruser00000000000000;sphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(h Installationh]h Text Installation}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh$/home/user/w/pyfuse3/rst/install.rsthKubh highlightlang)}(hhh]h}(h!]h#]h%]h']h)]langshforcelinenothresholduh+h-hh hhhh,hKubh )}(hhh](h)}(h Dependenciesh]h Dependencies}(hh?hhhNhNubah}(h!]h#]h%]h']h)]uh+hhhhhhNhNubh)}(h%https://pypi.python.org/pypi/pyfuse3/h]h%https://pypi.python.org/pypi/pyfuse3/}(hjEhhhNhNubah}(h!]h#]h%]h']h)]refurijGuh+hhj>ubeh}(h!]h#]h%]h']h)]uh+hMhh,hK"hj:ubah}(h!]h#]h%]h']h)]uh+hbhj7hhhh,hNubhc)}(hERun ``python3 setup.py build_ext --inplace`` to build the C extensionh]hN)}(hjbh](hRun }(hjdhhhNhNubh literal)}(h(``python3 setup.py build_ext --inplace``h]h$python3 setup.py build_ext --inplace}(hjmhhhNhNubah}(h!]h#]h%]h']h)]uh+jkhjdubh to build the C extension}(hjdhhhNhNubeh}(h!]h#]h%]h']h)]uh+hMhh,hK#hj`ubah}(h!]h#]h%]h']h)]uh+hbhj7hhhh,hNubhc)}(hRun ``python3 -m pytest test/`` to run a self-test. If this fails, ask for help on the `FUSE mailing list`_ or report a bug in the `issue tracker `_.h]hN)}(hRun ``python3 -m pytest test/`` to run a self-test. If this fails, ask for help on the `FUSE mailing list`_ or report a bug in the `issue tracker `_.h](hRun }(hjhhhNhNubjl)}(h``python3 -m pytest test/``h]hpython3 -m pytest test/}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jkhjubh8 to run a self-test. If this fails, ask for help on the }(hjhhhNhNubh)}(h`FUSE mailing list`_h]hFUSE mailing list}(hjhhhNhNubah}(h!]h#]h%]h']h)]nameFUSE mailing listh7https://lists.sourceforge.net/lists/listinfo/fuse-develuh+hhjhKubh or report a bug in the }(hjhhhNhNubh)}(hG`issue tracker `_h]h issue tracker}(hjhhhNhNubah}(h!]h#]h%]h']h)]name issue trackerh4https://bitbucket.org/nikratio/python-pyfuse3/issuesuh+hhjubh target)}(h7 h]h}(h!] issue-trackerah#]h%] issue trackerah']h)]refurijuh+j referencedKhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hMhh,hK$hjubah}(h!]h#]h%]h']h)]uh+hbhj7hhhh,hNubhc)}(hTo install system-wide for all users, run ``sudo python setup.py install``. To install into :file:`~/.local`, run ``python3 setup.py install --user``. h]hN)}(hTo install system-wide for all users, run ``sudo python setup.py install``. To install into :file:`~/.local`, run ``python3 setup.py install --user``.h](h*To install system-wide for all users, run }(hjhhhNhNubjl)}(h ``sudo python setup.py install``h]hsudo python setup.py install}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jkhjubh. To install into }(hjhhhNhNubjl)}(h:file:`~/.local`h]h~/.local}(hj hhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+jkhjubh, run }(hjhhhNhNubjl)}(h#``python3 setup.py install --user``h]hpython3 setup.py install --user}(hj"hhhNhNubah}(h!]h#]h%]h']h)]uh+jkhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+hMhh,hK'hjubah}(h!]h#]h%]h']h)]uh+hbhj7hhhh,hNubeh}(h!]h#]h%]h']h)]enumtypearabicprefixhsuffix.uh+j5hjhhhh,hK"ubeh}(h!]stable-releasesah#]h%]stable releasesah']h)]uh+h hh hhhh,hKubh )}(hhh](h)}(hDevelopment Versionh]hDevelopment Version}(hjVhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjShhhh,hK-ubhN)}(hIf you have checked out the unstable development version, a bit more effort is required. You need to also have Cython_ (0.29 or newer) and Sphinx_ installed, and the necessary commands are::h](hoIf you have checked out the unstable development version, a bit more effort is required. You need to also have }(hjdhhhNhNubh)}(hCython_h]hCython}(hjlhhhNhNubah}(h!]h#]h%]h']h)]nameCythonhhttp://www.cython.org/uh+hhjdhKubh (0.29 or newer) and }(hjdhhhNhNubh)}(hSphinx_h]hSphinx}(hjhhhNhNubah}(h!]h#]h%]h']h)]nameSphinxhhttp://sphinx.pocoo.org/uh+hhjdhKubh+ installed, and the necessary commands are:}(hjdhhhNhNubeh}(h!]h#]h%]h']h)]uh+hMhh,hK/hjShhubh literal_block)}(hpython3 setup.py build_cython python3 setup.py build_ext --inplace python3 -m pytest test/ sphinx-build -b html rst doc/html python3 setup.py installh]hpython3 setup.py build_cython python3 setup.py build_ext --inplace python3 -m pytest test/ sphinx-build -b html rst doc/html python3 setup.py install}hjsbah}(h!]h#]h%]h']h)] xml:spacepreserveuh+jhh,hK3hjShhubj)}(h".. _Cython: http://www.cython.org/h]h}(h!]cythonah#]h%]cythonah']h)]hj|uh+jhK:hjShhhh,jKubj)}(h$.. _Sphinx: http://sphinx.pocoo.org/h]h}(h!]sphinxah#]h%]sphinxah']h)]hjuh+jhK;hjShhhh,jKubj)}(h".. _Python: http://www.python.org/h]h}(h!]pythonah#]h%]pythonah']h)]hhuh+jhKhjShhhh,jKubj)}(h3.. _`py.test`: https://pypi.python.org/pypi/pytest/h]h}(h!]py-testah#]h%]py.testah']h)]hjuh+jhK?hjShhhh,jKubj)}(h... _libfuse: http://github.com/libfuse/libfuseh]h}(h!]libfuseah#]h%]libfuseah']h)]hhuh+jhK@hjShhhh,jKubj)}(h3.. _attr: http://savannah.nongnu.org/projects/attr/h]h}(h!]attrah#]h%]attrah']h)]hjuh+jhKAhjShhhh,jKubj)}(hE.. _`pkg-config`: http://www.freedesktop.org/wiki/Software/pkg-configh]h}(h!] pkg-configah#]h%] pkg-configah']h)]hjmuh+jhKBhjShhhh,jKubj)}(h7.. _setuptools: https://pypi.python.org/pypi/setuptoolsh]h}(h!] setuptoolsah#]h%] setuptoolsah']h)]hjAuh+jhKChjShhhh,jKubeh}(h!]development-versionah#]h%]development versionah']h)]uh+h hh hhhh,hK-ubeh}(h!] installationah#]h%] installationah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjYerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}(libfuse]hapython]hatrio]ja setuptools]j1a pkg-config]j]aattr]japy.test]jafuse mailing list]jacython]jlasphinx]jaurefids}nameids}(j3j0jjjPjMjjj+j(jjjjjjjjjjjjjjj jjjj#j u nametypes}(j3jjPjj+jjjjjjjj jj#uh!}(j0h jh, >]h](hclass}(hhhhhNhNubhdesc_sig_space)}(h h]h }(hhhhhNhNubah}(h!]h#]wah%]h']h)]uh+hhhubeh}(h!]h#]h%]h']h)] xml:spacepreserveuh+hhhhhhU/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.OperationshKubh desc_addname)}(hpyfuse3.h]hpyfuse3.}(hhhhhNhNubah}(h!]h#]( sig-prename descclassnameeh%]h']h)]hhuh+hhhhhhhhKubh desc_name)}(h Operationsh]h Operations}(hhhhhNhNubah}(h!]h#](sig-namedescnameeh%]h']h)]hhuh+hhhhhhhhKubeh}(h!]hwah#](sig sig-objecteh%]h']h)]modulepyfuse3classhfullnameh _toc_partshh _toc_namehuh+h~hhhKhh{hhubh desc_content)}(hhh](h.)}(hXKThis class defines the request handler methods that an pyfuse3 file system may implement. If a particular request handler has not been implemented, it must raise `FUSEError` with an errorcode of `errno.ENOSYS`. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again.h](hThis class defines the request handler methods that an pyfuse3 file system may implement. If a particular request handler has not been implemented, it must raise }(hhhhhNhNubh8)}(h `FUSEError`h]h literal)}(hhh]h FUSEError}(hhhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]refdochV refdomainhreftypeobj refexplicitrefwarn py:modulehՌpy:classhh\ FUSEErroruh+h7hU/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.OperationshKhhubh with an errorcode of }(hhhhhNhNubh8)}(h`errno.ENOSYS`h]h)}(hjh]h errno.ENOSYS}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj hj hh\ errno.ENOSYSuh+h7hj hKhhubhz. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again.}(hhhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hU/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.OperationshKhhhhubh.)}(hThe only exception that request handlers are allowed to raise is `FUSEError`. This will cause the specified errno to be returned by the syscall that is being handled.h](hAThe only exception that request handlers are allowed to raise is }(hj<hhhNhNubh8)}(h `FUSEError`h]h)}(hjFh]h FUSEError}(hjHhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjDubah}(h!]h#]h%]h']h)]refdochV refdomainjRreftypeobj refexplicitrefwarnj hj hh\ FUSEErroruh+h7hj;hKhj<ubhZ. This will cause the specified errno to be returned by the syscall that is being handled.}(hj<hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj;hKhhhhubh.)}(hIt is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise ``FUSEError(ENOSYS)`` or do nothing).h](hIt is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise }(hjnhhhNhNubh)}(h``FUSEError(ENOSYS)``h]hFUSEError(ENOSYS)}(hjvhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjnubh or do nothing).}(hjnhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj;hK hhhhubhi)}(hhh]h}(h!]h#]h%]h']h)]entries]uh+hhhhhhhh,hNubhz)}(hhh](h)}(hsupports_dot_lookup = Trueh]h)}(hjh]hsupports_dot_lookup = True}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhh,hK ubah}(h!]h#](hheh%]h']h)]h)hhuh+h~hh,hK hjhhubh)}(hhh]h.)}(hIf set, indicates that the filesystem supports lookup of the ``.`` and ``..`` entries. This is required if the file system will be shared over NFS.h](h=If set, indicates that the filesystem supports lookup of the }(hjhhhNhNubh)}(h``.``h]h.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh and }(hjhhhNhNubh)}(h``..``h]h..}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubhF entries. This is required if the file system will be shared over NFS.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hh,hKhjhhubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hK ubeh}(h!]h#](py attributeeh%]h']h)]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh+hyhhhhhh,hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries]uh+hhhhhhhh,hNubhz)}(hhh](h)}(henable_writeback_cache = Trueh]h)}(hj h]henable_writeback_cache = True}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj hhhh,hKubah}(h!]h#](hheh%]h']h)]h)hhuh+h~hh,hKhjhhubh)}(hhh]h.)}(hEnables write-caching in the kernel if available. This means that individual write request may be buffered and merged in the kernel before they are send to the filesystem.h]hEnables write-caching in the kernel if available. This means that individual write request may be buffered and merged in the kernel before they are send to the filesystem.}(hj$hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hh,hKhj!hhubah}(h!]h#]h%]h']h)]uh+hhjhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]jj;jj<jj<jjjuh+hyhhhhhh,hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries]uh+hhhhhhhh,hNubhz)}(hhh](h)}(henable_acl = Falseh]h)}(hjPh]henable_acl = False}(hjRhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjNhhhh,hKubah}(h!]h#](hheh%]h']h)]h)hhuh+h~hh,hKhjKhhubh)}(hhh](h.)}(hXEnable ACL support. When enabled, the kernel will cache and have responsibility for enforcing ACLs. ACL will be stored as xattrs and passed to userspace, which is responsible for updating the ACLs in the filesystem, keeping the file mode in sync with the ACL, and ensuring inheritance of default ACLs when new filesystem nodes are created. Note that this requires that the file system is able to parse and interpret the xattr representation of ACLs.h]hXEnable ACL support. When enabled, the kernel will cache and have responsibility for enforcing ACLs. ACL will be stored as xattrs and passed to userspace, which is responsible for updating the ACLs in the filesystem, keeping the file mode in sync with the ACL, and ensuring inheritance of default ACLs when new filesystem nodes are created. Note that this requires that the file system is able to parse and interpret the xattr representation of ACLs.}(hjhhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hh,hKhjehhubh block_quote)}(hMEnabling this feature implicitly turns on the ``default_permissions`` option.h]h.)}(hMEnabling this feature implicitly turns on the ``default_permissions`` option.h](h.Enabling this feature implicitly turns on the }(hj|hhhNhNubh)}(h``default_permissions``h]hdefault_permissions}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj|ubh option.}(hj|hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hh,hK"hjxubah}(h!]h#]h%]h']h)]uh+jvhh,hK"hjehhubeh}(h!]h#]h%]h']h)]uh+hhjKhhhh,hKubeh}(h!]h#](py attributeeh%]h']h)]jjjjjjjjjuh+hyhhhhhh,hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$access() (pyfuse3.Operations method)pyfuse3.Operations.accesshNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.accesshNubhz)}(hhh](h)}(hOperations.access(inode: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> boolh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.accesshKubh)}(haccessh]haccess}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhjhKubhdesc_parameterlist)}(hj(inode: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](hdesc_parameter)}(h)inode: ~pyfuse3.NewType..new_typeh]h desc_sig_name)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]nah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h(mode: ~pyfuse3.NewType..new_typeh]j)}(h(mode: ~pyfuse3.NewType..new_typeh]h(mode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj0hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj,ubah}(h!]h#]h%]h']h)]hhuh+jhjubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhjhKubh desc_returns)}(hboolh]h8)}(hhh]hbool}(hjPhhhNhNubah}(h!]h#]h%]h']h)] refdomainpyreftypeh֌ reftargetbool refspecific py:modulehՌpy:classhuh+h7hjLubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhjhKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.accesshjq OperationsaccesshڌOperations.access()uh+h~hjhKhjhhubh)}(hhh](h.)}(h9Check if requesting process has *mode* rights on *inode*.h](h Check if requesting process has }(hjzhhhNhNubh emphasis)}(h*mode*h]hmode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjzubh rights on }(hjzhhhNhNubj)}(h*inode*h]hinode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjzubh.}(hjzhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjwhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be a }(hjhhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jqj hh\RequestContextuh+h7hhhKhjubh instance.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjwhhubh.)}(h'The method must return a boolean value.h]h'The method must return a boolean value.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjwhhubh.)}(hPIf the ``default_permissions`` mount option is given, this method is not called.h](hIf the }(hjhhhNhNubh)}(h``default_permissions``h]hdefault_permissions}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh2 mount option is given, this method is not called.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjwhhubh.)}(hKWhen implementing this method, the `get_sup_groups` function may be useful.h](h#When implementing this method, the }(hjhhhNhNubh8)}(h`get_sup_groups`h]h)}(hj&h]hget_sup_groups}(hj(hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj$ubah}(h!]h#]h%]h']h)]refdochV refdomainj2reftypeobj refexplicitrefwarnj jqj hh\get_sup_groupsuh+h7hj;hKhjubh function may be useful.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhK hjwhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jjWjjXjjXjjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$create() (pyfuse3.Operations method)pyfuse3.Operations.createhNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.createhNubhz)}(hhh](h)}(hXOperations.create(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, flags: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> ~typing.Tuple[FileInfo, EntryAttributes]h](h)}(h2[<#text: 'async'>, >]h](hasync}(hjrhhhNhNubh)}(h h]h }(hjzhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjrubeh}(h!]h#]h%]h']h)]hhuh+hhjnhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.createhKubh)}(hcreateh]hcreate}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjnhhhjhKubj)}(h(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, flags: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h(mode: ~pyfuse3.NewType..new_typeh]j)}(h(mode: ~pyfuse3.NewType..new_typeh]h(mode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h)flags: ~pyfuse3.NewType..new_typeh]j)}(h)flags: ~pyfuse3.NewType..new_typeh]h)flags: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubeh}(h!]h#]h%]h']h)]hhuh+jhjnhhhjhKubjK)}(h(~typing.Tuple[FileInfo, EntryAttributes]h](h8)}(hhh]hTuple}(hj#hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeobj reftarget typing.Tuple refspecific py:modulehՌpy:classhuh+h7hjubhdesc_sig_punctuation)}(h[h]h[}(hj:hhhNhNubah}(h!]h#]pah%]h']h)]uh+j8hjubh8)}(hhh]hFileInfo}(hjIhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetFileInfo refspecific py:modulehՌpy:classhuh+h7hjubj9)}(h,h]h,}(hj]hhhNhNubah}(h!]h#]jEah%]h']h)]uh+j8hjubh)}(h h]h }(hjkhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubh8)}(hhh]hEntryAttributes}(hjyhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hjubj9)}(h]h]h]}(hjhhhNhNubah}(h!]h#]jEah%]h']h)]uh+j8hjubeh}(h!]h#]h%]h']h)]hhuh+jJhjnhhhjhKubeh}(h!]jhah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.createhj OperationscreatehڌOperations.create()uh+h~hjhKhjkhhubh)}(hhh](h.)}(h?Create a file with permissions *mode* and open it with *flags*.h](hCreate a file with permissions }(hjhhhNhNubj)}(h*mode*h]hmode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh and open it with }(hjhhhNhNubj)}(h*flags*h]hflags}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjjhKhjhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be a }(hjhhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\RequestContextuh+h7hhhKhjubh instance.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjjhKhjhhubh.)}(hThe method must return a tuple of the form *(fi, attr)*, where *fi* is a FileInfo instance handle like the one returned by `open` and *attr* is an `EntryAttributes` instance with the attributes of the newly created directory entry.h](h+The method must return a tuple of the form }(hj"hhhNhNubj)}(h *(fi, attr)*h]h (fi, attr)}(hj*hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj"ubh, where }(hj"hhhNhNubj)}(h*fi*h]hfi}(hj<hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj"ubh8 is a FileInfo instance handle like the one returned by }(hj"hhhNhNubh8)}(h`open`h]h)}(hjPh]hopen}(hjRhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjNubah}(h!]h#]h%]h']h)]refdochV refdomainj\reftypeobj refexplicitrefwarnj jj hh\openuh+h7hj hKhj"ubh and }(hj"hhhNhNubj)}(h*attr*h]hattr}(hjrhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj"ubh is an }(hj"hhhNhNubh8)}(h`EntryAttributes`h]h)}(hjh]hEntryAttributes}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\EntryAttributesuh+h7hj hKhj"ubhC instance with the attributes of the newly created directory entry.}(hj"hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjjhKhjhhubh.)}(h`(Successful) execution of this handler increases the lookup count for the returned inode by one.h]h`(Successful) execution of this handler increases the lookup count for the returned inode by one.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjjhK hjhhubeh}(h!]h#]h%]h']h)]uh+hhjkhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhjjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu#flush() (pyfuse3.Operations method)pyfuse3.Operations.flushhNtauh+hhhhhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.flushhNubhz)}(hhh](h)}(h@Operations.flush(fh: ~pyfuse3.NewType..new_type) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.flushhKubh)}(hflushh]hflush}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhjhKubj)}(h((fh: ~pyfuse3.NewType..new_type)h]j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhjhhhjhKubjK)}(hNoneh]h8)}(hhh]hNone}(hj1hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj-ubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhjhKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.flushhjQ OperationsflushhڌOperations.flush()uh+h~hjhKhjhhubh)}(hhh](h.)}(hHandle close() syscall.h]hHandle close() syscall.}(hjZhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjWhhubh.)}(hO*fh* will be an integer filehandle returned by a prior `open` or `create` call.h](j)}(h*fh*h]hfh}(hjlhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjhubh3 will be an integer filehandle returned by a prior }(hjhhhhNhNubh8)}(h`open`h]h)}(hjh]hopen}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj~ubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jQj hh\openuh+h7hhhKhjhubh or }(hjhhhhNhNubh8)}(h`create`h]h)}(hjh]hcreate}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jQj hh\createuh+h7hhhKhjhubh call.}(hjhhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjWhhubh.)}(hThis method is called whenever a file descriptor is closed. It may be called multiple times for the same open file (e.g. if the file handle has been duplicated).h]hThis method is called whenever a file descriptor is closed. It may be called multiple times for the same open file (e.g. if the file handle has been duplicated).}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjWhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$forget() (pyfuse3.Operations method)pyfuse3.Operations.forgethNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.forgethNubhz)}(hhh](h)}(hoOperations.forget(inode_list: ~typing.Sequence[~typing.Tuple[~pyfuse3.NewType..new_type, int]]) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.forgethKubh)}(hforgeth]hforget}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhjhKubj)}(hV(inode_list: ~typing.Sequence[~typing.Tuple[~pyfuse3.NewType..new_type, int]])h]j)}(hTinode_list: ~typing.Sequence[~typing.Tuple[~pyfuse3.NewType..new_type, int]]h]hTinode_list: ~typing.Sequence[~typing.Tuple[~pyfuse3.NewType..new_type, int]]}(hj-hhhNhNubah}(h!]h#]h%]h']h)]hhuh+jhj)ubah}(h!]h#]h%]h']h)]hhuh+jhjhhhjhKubjK)}(hNoneh]h8)}(hhh]hNone}(hjEhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hjAubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhjhKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.forgethje OperationsforgethڌOperations.forget()uh+h~hjhKhjhhubh)}(hhh](h.)}(h2Decrease lookup counts for inodes in *inode_list*.h](h%Decrease lookup counts for inodes in }(hjnhhhNhNubj)}(h *inode_list*h]h inode_list}(hjvhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjnubh.}(hjnhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjkhhubh.)}(h*inode_list* is a list of ``(inode, nlookup)`` tuples. This method should reduce the lookup count for each *inode* by *nlookup*.h](j)}(h *inode_list*h]h inode_list}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh is a list of }(hjhhhNhNubh)}(h``(inode, nlookup)``h]h(inode, nlookup)}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh= tuples. This method should reduce the lookup count for each }(hjhhhNhNubj)}(h*inode*h]hinode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh by }(hjhhhNhNubj)}(h *nlookup*h]hnlookup}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjkhhubh.)}(hIf the lookup count reaches zero, the inode is currently not known to the kernel. In this case, the file system will typically check if there are still directory entries referring to this inode and, if not, remove the inode.h]hIf the lookup count reaches zero, the inode is currently not known to the kernel. In this case, the file system will typically check if there are still directory entries referring to this inode and, if not, remove the inode.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjkhhubh.)}(hXIIf the file system is unmounted, it may not have received `forget` calls to bring all lookup counts to zero. The filesystem needs to take care to clean up inodes that at that point still have non-zero lookup count (e.g. by explicitly calling `forget` with the current lookup count for every such inode after `main` has returned).h](h:If the file system is unmounted, it may not have received }(hjhhhNhNubh8)}(h`forget`h]h)}(hjh]hforget}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj jej hh\forgetuh+h7hj;hKhjubh calls to bring all lookup counts to zero. The filesystem needs to take care to clean up inodes that at that point still have non-zero lookup count (e.g. by explicitly calling }(hjhhhNhNubh8)}(h`forget`h]h)}(hj h]hforget}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj( reftypeobj refexplicitrefwarnj jej hh\forgetuh+h7hj;hKhjubh: with the current lookup count for every such inode after }(hjhhhNhNubh8)}(h`main`h]h)}(hj@ h]hmain}(hjB hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj> ubah}(h!]h#]h%]h']h)]refdochV refdomainjL reftypeobj refexplicitrefwarnj jej hh\mainuh+h7hj;hKhjubh has returned).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhK hjkhhubh.)}(hwThis method must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request.h](h4This method must not raise any exceptions (not even }(hjh hhhNhNubh8)}(h `FUSEError`h]h)}(hjr h]h FUSEError}(hjt hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjp ubah}(h!]h#]h%]h']h)]refdochV refdomainj~ reftypeobj refexplicitrefwarnj jej hh\ FUSEErroruh+h7hj;hK hjh ubh8), since it is not handling a particular client request.}(hjh hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjkhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jj jj jj jjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu#fsync() (pyfuse3.Operations method)pyfuse3.Operations.fsynchNtauh+hhhhhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.fsynchNubhz)}(hhh](h)}(hPOperations.fsync(fh: ~pyfuse3.NewType..new_type, datasync: bool) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj hhhNhNubh)}(h h]h }(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj ubeh}(h!]h#]h%]h']h)]hhuh+hhj hhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.fsynchKubh)}(hfsynch]hfsync}(hj hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj hhhj hKubj)}(h8(fh: ~pyfuse3.NewType..new_type, datasync: bool)h](j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhj ubj)}(hdatasync: boolh]j)}(hdatasync: boolh]hdatasync: bool}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhj ubeh}(h!]h#]h%]h']h)]hhuh+jhj hhhj hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj' hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj# ubah}(h!]h#]h%]h']h)]hhuh+jJhj hhhj hKubeh}(h!]j ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.fsynchjG OperationsfsynchڌOperations.fsync()uh+h~hj hKhj hhubh)}(hhh](h.)}(h!Flush buffers for open file *fh*.h](hFlush buffers for open file }(hjP hhhNhNubj)}(h*fh*h]hfh}(hjX hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjP ubh.}(hjP hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhjM hhubh.)}(hmIf *datasync* is true, only the file contents should be flushed (in contrast to the metadata about the file).h](hIf }(hjp hhhNhNubj)}(h *datasync*h]hdatasync}(hjx hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjp ubh` is true, only the file contents should be flushed (in contrast to the metadata about the file).}(hjp hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhjM hhubh.)}(hO*fh* will be an integer filehandle returned by a prior `open` or `create` call.h](j)}(h*fh*h]hfh}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh3 will be an integer filehandle returned by a prior }(hj hhhNhNubh8)}(h`open`h]h)}(hj h]hopen}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj jG j hh\openuh+h7hj;hKhj ubh or }(hj hhhNhNubh8)}(h`create`h]h)}(hj h]hcreate}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj jG j hh\createuh+h7hj;hKhj ubh call.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhjM hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj hKubeh}(h!]h#](pymethodeh%]h']h)]jj jj jj jjjuh+hyhhhhhj hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu&fsyncdir() (pyfuse3.Operations method)pyfuse3.Operations.fsyncdirhNtauh+hhhhhhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.fsyncdirhNubhz)}(hhh](h)}(hSOperations.fsyncdir(fh: ~pyfuse3.NewType..new_type, datasync: bool) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj hhhNhNubh)}(h h]h }(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj ubeh}(h!]h#]h%]h']h)]hhuh+hhj hhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.fsyncdirhKubh)}(hfsyncdirh]hfsyncdir}(hj5 hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj hhhj4 hKubj)}(h8(fh: ~pyfuse3.NewType..new_type, datasync: bool)h](j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hjK hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjG ubah}(h!]h#]h%]h']h)]hhuh+jhjC ubj)}(hdatasync: boolh]j)}(hdatasync: boolh]hdatasync: bool}(hjc hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj_ ubah}(h!]h#]h%]h']h)]hhuh+jhjC ubeh}(h!]h#]h%]h']h)]hhuh+jhj hhhj4 hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj} ubah}(h!]h#]h%]h']h)]hhuh+jJhj hhhj4 hKubeh}(h!]j ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.fsyncdirhj OperationsfsyncdirhڌOperations.fsyncdir()uh+h~hj4 hKhj hhubh)}(hhh](h.)}(h&Flush buffers for open directory *fh*.h](h!Flush buffers for open directory }(hj hhhNhNubj)}(h*fh*h]hfh}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj hhubh.)}(hzIf *datasync* is true, only the directory contents should be flushed (in contrast to metadata about the directory itself).h](hIf }(hj hhhNhNubj)}(h *datasync*h]hdatasync}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubhm is true, only the directory contents should be flushed (in contrast to metadata about the directory itself).}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj4 hKubeh}(h!]h#](pymethodeh%]h']h)]jj jj jj jjjuh+hyhhhhhj hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu%getattr() (pyfuse3.Operations method)pyfuse3.Operations.getattrhNtauh+hhhhhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.getattrhNubhz)}(hhh](h)}(heOperations.getattr(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj hhhNhNubh)}(h h]h }(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj ubeh}(h!]h#]h%]h']h)]hhuh+hhj hhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.getattrhKubh)}(hgetattrh]hgetattr}(hj+ hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj hhhj* hKubj)}(h@(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hjA hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj= ubah}(h!]h#]h%]h']h)]hhuh+jhj9 ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hjY hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjU ubah}(h!]h#]h%]h']h)]hhuh+jhj9 ubeh}(h!]h#]h%]h']h)]hhuh+jhj hhhj* hKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hjw hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hjs ubah}(h!]h#]h%]h']h)]hhuh+jJhj hhhj* hKubeh}(h!]j ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.getattrhj OperationsgetattrhڌOperations.getattr()uh+h~hj* hKhj hhubh)}(hhh](h.)}(hGet attributes for *inode*.h](hGet attributes for }(hj hhhNhNubj)}(h*inode*h]hinode}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh will be a }(hj hhhNhNubh8)}(h`RequestContext`h]h)}(hj h]hRequestContext}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj j j hh\RequestContextuh+h7hhhKhj ubh instance.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj hhubh.)}(hThis method should return an `EntryAttributes` instance with the attributes of *inode*. The `~EntryAttributes.entry_timeout` attribute is ignored in this context.h](hThis method should return an }(hj hhhNhNubh8)}(h`EntryAttributes`h]h)}(hj h]hEntryAttributes}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj j j hh\EntryAttributesuh+h7hj hKhj ubh! instance with the attributes of }(hj hhhNhNubj)}(h*inode*h]hinode}(hj, hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh. The }(hj hhhNhNubh8)}(h `~EntryAttributes.entry_timeout`h]h)}(hj@ h]h entry_timeout}(hjB hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj> ubah}(h!]h#]h%]h']h)]refdochV refdomainjL reftypeobj refexplicitrefwarnj j j hh\EntryAttributes.entry_timeoutuh+h7hj hKhj ubh& attribute is ignored in this context.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj* hKubeh}(h!]h#](pymethodeh%]h']h)]jjq jjr jjr jjjuh+hyhhhhhj hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu&getxattr() (pyfuse3.Operations method)pyfuse3.Operations.getxattrhNtauh+hhhhhhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.getxattrhNubhz)}(hhh](h)}(hOperations.getxattr(inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> bytesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj hhhNhNubh)}(h h]h }(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj ubeh}(h!]h#]h%]h']h)]hhuh+hhj hhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.getxattrhKubh)}(hgetxattrh]hgetxattr}(hj hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj hhhj hKubj)}(hj(inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhj ubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhj ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhj ubeh}(h!]h#]h%]h']h)]hhuh+jhj hhhj hKubjK)}(hbytesh]h8)}(hhh]hbytes}(hj hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetbytes refspecific py:modulehՌpy:classhuh+h7hj ubah}(h!]h#]h%]h']h)]hhuh+jJhj hhhj hKubeh}(h!]j ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.getxattrhj- OperationsgetxattrhڌOperations.getxattr()uh+h~hj hKhj hhubh)}(hhh](h.)}(h,Return extended attribute *name* of *inode*.h](hReturn extended attribute }(hj6hhhNhNubj)}(h*name*h]hname}(hj>hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj6ubh of }(hj6hhhNhNubj)}(h*inode*h]hinode}(hjPhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj6ubh.}(hj6hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj3hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjlhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjhubh will be a }(hjhhhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj~ubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj j-j hh\RequestContextuh+h7hhhKhjhubh instance.}(hjhhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj3hhubh.)}(hIf the attribute does not exist, the method must raise `FUSEError` with an error code of `ENOATTR`. *name* will be of type `bytes`, but is guaranteed not to contain zero-bytes (``\0``).h](h7If the attribute does not exist, the method must raise }(hjhhhNhNubh8)}(h `FUSEError`h]h)}(hjh]h FUSEError}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj j-j hh\ FUSEErroruh+h7hj hKhjubh with an error code of }(hjhhhNhNubh8)}(h `ENOATTR`h]h)}(hjh]hENOATTR}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj j-j hh\ENOATTRuh+h7hj hKhjubh. }(hjhhhNhNubj)}(h*name*h]hname}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be of type }(hjhhhNhNubh8)}(h`bytes`h]h)}(hj h]hbytes}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj j-j hh\bytesuh+h7hj hKhjubh/, but is guaranteed not to contain zero-bytes (}(hjhhhNhNubh)}(h``\0``h]h\0}(hj.hhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhj3hhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj hKubeh}(h!]h#](pymethodeh%]h']h)]jjOjjPjjPjjjuh+hyhhhhhj hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu"init() (pyfuse3.Operations method)pyfuse3.Operations.inithNtauh+hhhhhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.inithNubhz)}(hhh](h)}(hOperations.init() -> Noneh](h)}(hinith]hinit}(hjjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjfhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.inithKubj)}(h()h]h}(h!]h#]h%]h']h)]hhuh+jhjfhhhjxhKubjK)}(hNoneh]h8)}(hhh]hNone}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhjfhhhjxhKubeh}(h!]j`ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.inithj OperationsinithڌOperations.init()uh+h~hjxhKhjchhubh)}(hhh](h.)}(hInitialize operations.h]hInitialize operations.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjbhKhjhhubh.)}(hThis method will be called just before the file system starts handling requests. It must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request.h](h|This method will be called just before the file system starts handling requests. It must not raise any exceptions (not even }(hjhhhNhNubh8)}(h `FUSEError`h]h)}(hjh]h FUSEError}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\ FUSEErroruh+h7hhhKhjubh8), since it is not handling a particular client request.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjbhKhjhhubeh}(h!]h#]h%]h']h)]uh+hhjchhhjxhKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhjbhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu"link() (pyfuse3.Operations method)pyfuse3.Operations.linkhNtauh+hhhhhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.linkhNubhz)}(hhh](h)}(hOperations.link(inode: ~pyfuse3.NewType..new_type, new_parent_inode: ~pyfuse3.NewType..new_type, new_name: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.linkhKubh)}(hlinkh]hlink}(hj1hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhj0hKubj)}(h(inode: ~pyfuse3.NewType..new_type, new_parent_inode: ~pyfuse3.NewType..new_type, new_name: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hjGhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjCubah}(h!]h#]h%]h']h)]hhuh+jhj?ubj)}(h4new_parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h4new_parent_inode: ~pyfuse3.NewType..new_typeh]h4new_parent_inode: ~pyfuse3.NewType..new_type}(hj_hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj[ubah}(h!]h#]h%]h']h)]hhuh+jhj?ubj)}(h,new_name: ~pyfuse3.NewType..new_typeh]j)}(h,new_name: ~pyfuse3.NewType..new_typeh]h,new_name: ~pyfuse3.NewType..new_type}(hjwhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjsubah}(h!]h#]h%]h']h)]hhuh+jhj?ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhj?ubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhj0hKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhj0hKubeh}(h!]j ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.linkhj OperationslinkhڌOperations.link()uh+h~hj0hKhj hhubh)}(hhh](h.)}(hDCreate directory entry *name* in *parent_inode* refering to *inode*.h](hCreate directory entry }(hjhhhNhNubj)}(h*name*h]hname}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh in }(hjhhhNhNubj)}(h*parent_inode*h]h parent_inode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh refering to }(hjhhhNhNubj)}(h*inode*h]hinode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhjhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be a }(hjhhhNhNubh8)}(h`RequestContext`h]h)}(hj2h]hRequestContext}(hj4hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj0ubah}(h!]h#]h%]h']h)]refdochV refdomainj>reftypeobj refexplicitrefwarnj jj hh\RequestContextuh+h7hhhKhjubh instance.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhjhhubh.)}(hnThe method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.h](hThe method must return an }(hjZhhhNhNubh8)}(h`EntryAttributes`h]h)}(hjdh]hEntryAttributes}(hjfhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjbubah}(h!]h#]h%]h']h)]refdochV refdomainjpreftypeobj refexplicitrefwarnj jj hh\EntryAttributesuh+h7hj hKhjZubhC instance with the attributes of the newly created directory entry.}(hjZhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj hKhjhhubh.)}(h`(Successful) execution of this handler increases the lookup count for the returned inode by one.h]h`(Successful) execution of this handler increases the lookup count for the returned inode by one.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj hKhjhhubeh}(h!]h#]h%]h']h)]uh+hhj hhhj0hKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhj hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu'listxattr() (pyfuse3.Operations method)pyfuse3.Operations.listxattrhNtauh+hhhhhhh_/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.listxattrhNubhz)}(hhh](h)}(hOperations.listxattr(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> ~typing.Sequence[~pyfuse3.NewType..new_type]h](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhh_/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.listxattrhKubh)}(h listxattrh]h listxattr}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhjhKubj)}(h@(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhjhKubjK)}(h4~typing.Sequence[~pyfuse3.NewType..new_type]h]h8)}(hhh]h new_type]}(hj'hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftarget3typing.Sequence[~pyfuse3.NewType..new_type] refspecific py:modulehՌpy:classhuh+h7hj#ubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhjhKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.listxattrhjG Operations listxattrhڌOperations.listxattr()uh+h~hjhKhjhhubh)}(hhh](h.)}(h,Get list of extended attributes for *inode*.h](h$Get list of extended attributes for }(hjPhhhNhNubj)}(h*inode*h]hinode}(hjXhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjPubh.}(hjPhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjMhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjthhhNhNubah}(h!]h#]h%]h']h)]uh+jhjpubh will be a }(hjphhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jGj hh\RequestContextuh+h7hhhKhjpubh instance.}(hjphhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjMhhubh.)}(hiThis method must return a sequence of `bytes` objects. The objects must not include zero-bytes (``\0``).h](h&This method must return a sequence of }(hjhhhNhNubh8)}(h`bytes`h]h)}(hjh]hbytes}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jGj hh\bytesuh+h7hj hKhjubh4 objects. The objects must not include zero-bytes (}(hjhhhNhNubh)}(h``\0``h]h\0}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhjubh).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjMhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$lookup() (pyfuse3.Operations method)pyfuse3.Operations.lookuphNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.lookuphNubhz)}(hhh](h)}(hOperations.lookup(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.lookuphKubh)}(hlookuph]hlookup}(hj5hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhj4hKubj)}(hq(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hjKhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjGubah}(h!]h#]h%]h']h)]hhuh+jhjCubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hjchhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj_ubah}(h!]h#]h%]h']h)]hhuh+jhjCubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj{hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjwubah}(h!]h#]h%]h']h)]hhuh+jhjCubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhj4hKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhj4hKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.lookuphj OperationslookuphڌOperations.lookup()uh+h~hj4hKhjhhubh)}(hhh](h.)}(h9Look up a directory entry by name and get its attributes.h]h9Look up a directory entry by name and get its attributes.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(hThis method should return an `EntryAttributes` instance for the directory entry *name* in the directory with inode *parent_inode*.h](hThis method should return an }(hjhhhNhNubh8)}(h`EntryAttributes`h]h)}(hjh]hEntryAttributes}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\EntryAttributesuh+h7hhhKhjubh" instance for the directory entry }(hjhhhNhNubj)}(h*name*h]hname}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh in the directory with inode }(hjhhhNhNubj)}(h*parent_inode*h]h parent_inode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(hX?If there is no such entry, the method should either return an `EntryAttributes` instance with zero ``st_ino`` value (in which case the negative lookup will be cached as specified by ``entry_timeout``), or it should raise `FUSEError` with an errno of `errno.ENOENT` (in this case the negative result will not be cached).h](h>If there is no such entry, the method should either return an }(hj&hhhNhNubh8)}(h`EntryAttributes`h]h)}(hj0h]hEntryAttributes}(hj2hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj.ubah}(h!]h#]h%]h']h)]refdochV refdomainj<reftypeobj refexplicitrefwarnj jj hh\EntryAttributesuh+h7hj;hKhj&ubh instance with zero }(hj&hhhNhNubh)}(h ``st_ino``h]hst_ino}(hjRhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj&ubhI value (in which case the negative lookup will be cached as specified by }(hj&hhhNhNubh)}(h``entry_timeout``h]h entry_timeout}(hjdhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj&ubh), or it should raise }(hj&hhhNhNubh8)}(h `FUSEError`h]h)}(hjxh]h FUSEError}(hjzhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjvubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\ FUSEErroruh+h7hj;hKhj&ubh with an errno of }(hj&hhhNhNubh8)}(h`errno.ENOENT`h]h)}(hjh]h errno.ENOENT}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\ errno.ENOENTuh+h7hj;hKhj&ubh7 (in this case the negative result will not be cached).}(hj&hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be a }(hjhhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\RequestContextuh+h7hj;hKhjubh instance.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhK hjhhubh.)}(hThe file system must be able to handle lookups for :file:`.` and :file:`..`, no matter if these entries are returned by `readdir` or not.h](h3The file system must be able to handle lookups for }(hjhhhNhNubh)}(h :file:`.`h]h.}(hj hhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhjubh and }(hjhhhNhNubh)}(h :file:`..`h]h..}(hj!hhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhjubh-, no matter if these entries are returned by }(hjhhhNhNubh8)}(h `readdir`h]h)}(hj8h]hreaddir}(hj:hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj6ubah}(h!]h#]h%]h']h)]refdochV refdomainjDreftypeobj refexplicitrefwarnj jj hh\readdiruh+h7hj;hK hjubh or not.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(h`(Successful) execution of this handler increases the lookup count for the returned inode by one.h]h`(Successful) execution of this handler increases the lookup count for the returned inode by one.}(hj`hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhj4hKubeh}(h!]h#](pymethodeh%]h']h)]jjwjjxjjxjjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu#mkdir() (pyfuse3.Operations method)pyfuse3.Operations.mkdirhNtauh+hhhhhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.mkdirhNubhz)}(hhh](h)}(hOperations.mkdir(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.mkdirhKubh)}(hmkdirh]hmkdir}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhjhKubj)}(h(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h(mode: ~pyfuse3.NewType..new_typeh]j)}(h(mode: ~pyfuse3.NewType..new_typeh]h(mode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhjubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhjhKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hj+hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hj'ubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhjhKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.mkdirhjK OperationsmkdirhڌOperations.mkdir()uh+h~hjhKhjhhubh)}(hhh](h.)}(hCreate a directory.h]hCreate a directory.}(hjThhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjQhhubh.)}(hThis method must create a new directory *name* with mode *mode* in the directory with inode *parent_inode*. *ctx* will be a `RequestContext` instance.h](h(This method must create a new directory }(hjbhhhNhNubj)}(h*name*h]hname}(hjjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjbubh with mode }(hjbhhhNhNubj)}(h*mode*h]hmode}(hj|hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjbubh in the directory with inode }(hjbhhhNhNubj)}(h*parent_inode*h]h parent_inode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjbubh. }(hjbhhhNhNubj)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjbubh will be a }(hjbhhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jKj hh\RequestContextuh+h7hhhKhjbubh instance.}(hjbhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjQhhubh.)}(hoThis method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.h](hThis method must return an }(hjhhhNhNubh8)}(h`EntryAttributes`h]h)}(hjh]hEntryAttributes}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jKj hh\EntryAttributesuh+h7hj;hKhjubhC instance with the attributes of the newly created directory entry.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjQhhubh.)}(h`(Successful) execution of this handler increases the lookup count for the returned inode by one.h]h`(Successful) execution of this handler increases the lookup count for the returned inode by one.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhK hjQhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jj%jj&jj&jjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu#mknod() (pyfuse3.Operations method)pyfuse3.Operations.mknodhNtauh+hhhhhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.mknodhNubhz)}(hhh](h)}(hOperations.mknod(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, rdev: int, ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj@hhhNhNubh)}(h h]h }(hjHhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj@ubeh}(h!]h#]h%]h']h)]hhuh+hhj<hhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.mknodhKubh)}(hmknodh]hmknod}(hj]hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj<hhhj\hKubj)}(h(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, mode: ~pyfuse3.NewType..new_type, rdev: int, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hjshhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjoubah}(h!]h#]h%]h']h)]hhuh+jhjkubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjkubj)}(h(mode: ~pyfuse3.NewType..new_typeh]j)}(h(mode: ~pyfuse3.NewType..new_typeh]h(mode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjkubj)}(h rdev: inth]j)}(h rdev: inth]h rdev: int}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjkubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjkubeh}(h!]h#]h%]h']h)]hhuh+jhj<hhhj\hKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhj<hhhj\hKubeh}(h!]j6ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.mknodhj OperationsmknodhڌOperations.mknod()uh+h~hj\hKhj9hhubh)}(hhh](h.)}(hCreate (possibly special) file.h]hCreate (possibly special) file.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj8hKhjhhubh.)}(hX!This method must create a (special or regular) file *name* in the directory with inode *parent_inode*. Whether the file is special or regular is determined by its *mode*. If the file is neither a block nor character device, *rdev* can be ignored. *ctx* will be a `RequestContext` instance.h](h4This method must create a (special or regular) file }(hj(hhhNhNubj)}(h*name*h]hname}(hj0hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj(ubh in the directory with inode }(hj(hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hjBhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj(ubh>. Whether the file is special or regular is determined by its }(hj(hhhNhNubj)}(h*mode*h]hmode}(hjThhhNhNubah}(h!]h#]h%]h']h)]uh+jhj(ubh7. If the file is neither a block nor character device, }(hj(hhhNhNubj)}(h*rdev*h]hrdev}(hjfhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj(ubh can be ignored. }(hj(hhhNhNubj)}(h*ctx*h]hctx}(hjxhhhNhNubah}(h!]h#]h%]h']h)]uh+jhj(ubh will be a }(hj(hhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\RequestContextuh+h7hhhKhj(ubh instance.}(hj(hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj8hKhjhhubh.)}(hnThe method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.h](hThe method must return an }(hjhhhNhNubh8)}(h`EntryAttributes`h]h)}(hjh]hEntryAttributes}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\EntryAttributesuh+h7hj;hKhjubhC instance with the attributes of the newly created directory entry.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj8hK hjhhubh.)}(h`(Successful) execution of this handler increases the lookup count for the returned inode by one.h]h`(Successful) execution of this handler increases the lookup count for the returned inode by one.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj8hK hjhhubeh}(h!]h#]h%]h']h)]uh+hhj9hhhj\hKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhj8hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu"open() (pyfuse3.Operations method)pyfuse3.Operations.openhNtauh+hhhhhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.openhNubhz)}(hhh](h)}(hOperations.open(inode: ~pyfuse3.NewType..new_type, flags: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> FileInfoh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hj hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.openhKubh)}(hopenh]hopen}(hj5hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhj4hKubj)}(hk(inode: ~pyfuse3.NewType..new_type, flags: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hjKhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjGubah}(h!]h#]h%]h']h)]hhuh+jhjCubj)}(h)flags: ~pyfuse3.NewType..new_typeh]j)}(h)flags: ~pyfuse3.NewType..new_typeh]h)flags: ~pyfuse3.NewType..new_type}(hjchhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj_ubah}(h!]h#]h%]h']h)]hhuh+jhjCubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj{hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjwubah}(h!]h#]h%]h']h)]hhuh+jhjCubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhj4hKubjK)}(hFileInfoh]h8)}(hhh]hFileInfo}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetFileInfo refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhj4hKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.openhj OperationsopenhڌOperations.open()uh+h~hj4hKhjhhubh)}(hhh](h.)}(h"Open a inode *inode* with *flags*.h](h Open a inode }(hjhhhNhNubj)}(h*inode*h]hinode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh with }(hjhhhNhNubj)}(h*flags*h]hflags}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be a }(hjhhhNhNubh8)}(h`RequestContext`h]h)}(hj h]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\RequestContextuh+h7hhhKhjubh instance.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(h*flags* will be a bitwise or of the open flags described in the :manpage:`open(2)` manpage and defined in the `os` module (with the exception of ``O_CREAT``, ``O_EXCL``, ``O_NOCTTY`` and ``O_TRUNC``)h](j)}(h*flags*h]hflags}(hj8hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj4ubh9 will be a bitwise or of the open flags described in the }(hj4hhhNhNubhmanpage)}(h:manpage:`open(2)`h]hopen(2)}(hjLhhhNhNubah}(h!]h#]jJah%]h']h)]hhpathopen(2)pageopensection2uh+jJhj4ubh manpage and defined in the }(hj4hhhNhNubh8)}(h`os`h]h)}(hjfh]hos}(hjhhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjdubah}(h!]h#]h%]h']h)]refdochV refdomainjrreftypeobj refexplicitrefwarnj jj hh\osuh+h7hj hKhj4ubh module (with the exception of }(hj4hhhNhNubh)}(h ``O_CREAT``h]hO_CREAT}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj4ubh, }(hj4hhhNhNubh)}(h ``O_EXCL``h]hO_EXCL}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj4ubh, }hj4sbh)}(h ``O_NOCTTY``h]hO_NOCTTY}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj4ubh and }(hj4hhhNhNubh)}(h ``O_TRUNC``h]hO_TRUNC}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+hhj4ubh)}(hj4hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(hX^This method must return a `FileInfo` instance. The `FileInfo.fh` field must contain an integer file handle, which will be passed to the `read`, `write`, `flush`, `fsync` and `release` methods to identify the open file. The `FileInfo` instance may also have relevant configuration attributes set; see the `FileInfo` documentation for more information.h](hThis method must return a }(hjhhhNhNubh8)}(h `FileInfo`h]h)}(hjh]hFileInfo}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\FileInfouh+h7hj;hKhjubh instance. The }(hjhhhNhNubh8)}(h `FileInfo.fh`h]h)}(hjh]h FileInfo.fh}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\ FileInfo.fhuh+h7hj;hKhjubhH field must contain an integer file handle, which will be passed to the }(hjhhhNhNubh8)}(h`read`h]h)}(hj(h]hread}(hj*hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj&ubah}(h!]h#]h%]h']h)]refdochV refdomainj4reftypeobj refexplicitrefwarnj jj hh\readuh+h7hj;hKhjubh, }(hjhhhNhNubh8)}(h`write`h]h)}(hjLh]hwrite}(hjNhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjJubah}(h!]h#]h%]h']h)]refdochV refdomainjXreftypeobj refexplicitrefwarnj jj hh\writeuh+h7hj;hKhjubh, }(hjhhhNhNubh8)}(h`flush`h]h)}(hjph]hflush}(hjrhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjnubah}(h!]h#]h%]h']h)]refdochV refdomainj|reftypeobj refexplicitrefwarnj jj hh\flushuh+h7hj;hKhjubh, }hjsbh8)}(h`fsync`h]h)}(hjh]hfsync}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\fsyncuh+h7hj;hKhjubh and }(hjhhhNhNubh8)}(h `release`h]h)}(hjh]hrelease}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\releaseuh+h7hj;hKhjubh( methods to identify the open file. The }(hjhhhNhNubh8)}(h `FileInfo`h]h)}(hjh]hFileInfo}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\FileInfouh+h7hj;hKhjubhG instance may also have relevant configuration attributes set; see the }(hjhhhNhNubh8)}(h `FileInfo`h]h)}(hjh]hFileInfo}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj jj hh\FileInfouh+h7hj;hKhjubh$ documentation for more information.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhK hjhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhj4hKubeh}(h!]h#](pymethodeh%]h']h)]jj1jj2jj2jjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu%opendir() (pyfuse3.Operations method)pyfuse3.Operations.opendirhNtauh+hhhhhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.opendirhNubhz)}(hhh](h)}(hxOperations.opendir(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> ~pyfuse3.NewType..new_typeh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjLhhhNhNubh)}(h h]h }(hjThhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjLubeh}(h!]h#]h%]h']h)]hhuh+hhjHhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.opendirhKubh)}(hopendirh]hopendir}(hjihhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjHhhhjhhKubj)}(h@(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj{ubah}(h!]h#]h%]h']h)]hhuh+jhjwubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjwubeh}(h!]h#]h%]h']h)]hhuh+jhjHhhhjhhKubjK)}(h"~pyfuse3.NewType..new_typeh]h8)}(hhh]hnew_type}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftarget!pyfuse3.NewType..new_type refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhjHhhhjhhKubeh}(h!]jBah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.opendirhj OperationsopendirhڌOperations.opendir()uh+h~hjhhKhjEhhubh)}(hhh](h.)}(h&Open the directory with inode *inode*.h](hOpen the directory with inode }(hjhhhNhNubj)}(h*inode*h]hinode}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjDhKhjhhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh will be a }(hjhhhNhNubh8)}(h`RequestContext`h]h)}(hjh]hRequestContext}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainj"reftypeobj refexplicitrefwarnj jj hh\RequestContextuh+h7hhhKhjubh instance.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjDhKhjhhubh.)}(hThis method should return an integer file handle. The file handle will be passed to the `readdir`, `fsyncdir` and `releasedir` methods to identify the directory.h](hXThis method should return an integer file handle. The file handle will be passed to the }(hj>hhhNhNubh8)}(h `readdir`h]h)}(hjHh]hreaddir}(hjJhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjFubah}(h!]h#]h%]h']h)]refdochV refdomainjTreftypeobj refexplicitrefwarnj jj hh\readdiruh+h7hj hKhj>ubh, }(hj>hhhNhNubh8)}(h `fsyncdir`h]h)}(hjlh]hfsyncdir}(hjnhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjjubah}(h!]h#]h%]h']h)]refdochV refdomainjxreftypeobj refexplicitrefwarnj jj hh\fsyncdiruh+h7hj hKhj>ubh and }(hj>hhhNhNubh8)}(h `releasedir`h]h)}(hjh]h releasedir}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj jj hh\ releasediruh+h7hj hKhj>ubh# methods to identify the directory.}(hj>hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjDhKhjhhubeh}(h!]h#]h%]h']h)]uh+hhjEhhhjhhKubeh}(h!]h#](pymethodeh%]h']h)]jjjjjjjjjuh+hyhhhhhjDhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu"read() (pyfuse3.Operations method)pyfuse3.Operations.readhNtauh+hhhhhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.readhNubhz)}(hhh](h)}(hUOperations.read(fh: ~pyfuse3.NewType..new_type, off: int, size: int) -> bytesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjhhhNhNubh)}(h h]h }(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubeh}(h!]h#]h%]h']h)]hhuh+hhjhhhZ/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.readhKubh)}(hreadh]hread}(hjhhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjhhhjhKubj)}(h=(fh: ~pyfuse3.NewType..new_type, off: int, size: int)h](j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj ubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(hoff: inth]j)}(hoff: inth]hoff: int}(hj'hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj#ubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h size: inth]j)}(h size: inth]h size: int}(hj?hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj;ubah}(h!]h#]h%]h']h)]hhuh+jhjubeh}(h!]h#]h%]h']h)]hhuh+jhjhhhjhKubjK)}(hbytesh]h8)}(hhh]hbytes}(hj]hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetbytes refspecific py:modulehՌpy:classhuh+h7hjYubah}(h!]h#]h%]h']h)]hhuh+jJhjhhhjhKubeh}(h!]jah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.readhj} OperationsreadhڌOperations.read()uh+h~hjhKhjhhubh)}(hhh](h.)}(h.Read *size* bytes from *fh* at position *off*.h](hRead }(hjhhhNhNubj)}(h*size*h]hsize}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh bytes from }(hjhhhNhNubj)}(h*fh*h]hfh}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh at position }(hjhhhNhNubj)}(h*off*h]hoff}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(hO*fh* will be an integer filehandle returned by a prior `open` or `create` call.h](j)}(h*fh*h]hfh}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhjubh3 will be an integer filehandle returned by a prior }(hjhhhNhNubh8)}(h`open`h]h)}(hjh]hopen}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj j}j hh\openuh+h7hhhKhjubh or }(hjhhhNhNubh8)}(h`create`h]h)}(hjh]hcreate}(hjhhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdochV refdomainjreftypeobj refexplicitrefwarnj j}j hh\createuh+h7hhhKhjubh call.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubh.)}(hThis function should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes.h]hThis function should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes.}(hj.hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjhhubeh}(h!]h#]h%]h']h)]uh+hhjhhhjhKubeh}(h!]h#](pymethodeh%]h']h)]jjEjjFjjFjjjuh+hyhhhhhjhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu%readdir() (pyfuse3.Operations method)pyfuse3.Operations.readdirhNtauh+hhhhhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.readdirhNubhz)}(hhh](h)}(hfOperations.readdir(fh: ~pyfuse3.NewType..new_type, start_id: int, token: ReaddirToken) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj`hhhNhNubh)}(h h]h }(hjhhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj`ubeh}(h!]h#]h%]h']h)]hhuh+hhj\hhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.readdirhKubh)}(hreaddirh]hreaddir}(hj}hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj\hhhj|hKubj)}(hL(fh: ~pyfuse3.NewType..new_type, start_id: int, token: ReaddirToken)h](j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(h start_id: inth]j)}(h start_id: inth]h start_id: int}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubj)}(htoken: ReaddirTokenh]j)}(htoken: ReaddirTokenh]htoken: ReaddirToken}(hjhhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjubah}(h!]h#]h%]h']h)]hhuh+jhjubeh}(h!]h#]h%]h']h)]hhuh+jhj\hhhj|hKubjK)}(hNoneh]h8)}(hhh]hNone}(hjhhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hjubah}(h!]h#]h%]h']h)]hhuh+jJhj\hhhj|hKubeh}(h!]jVah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.readdirhj OperationsreaddirhڌOperations.readdir()uh+h~hj|hKhjYhhubh)}(hhh](h.)}(h$Read entries in open directory *fh*.h](hRead entries in open directory }(hj hhhNhNubj)}(h*fh*h]hfh}(hj hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubh.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjXhKhj hhubh.)}(hThis method should list the contents of directory *fh* (as returned by a prior `opendir` call), starting at the entry identified by *start_id*.h](h2This method should list the contents of directory }(hj* hhhNhNubj)}(h*fh*h]hfh}(hj2 hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj* ubh (as returned by a prior }(hj* hhhNhNubh8)}(h `opendir`h]h)}(hjF h]hopendir}(hjH hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjD ubah}(h!]h#]h%]h']h)]refdochV refdomainjR reftypeobj refexplicitrefwarnj j j hh\opendiruh+h7hhhKhj* ubh, call), starting at the entry identified by }(hj* hhhNhNubj)}(h *start_id*h]hstart_id}(hjh hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj* ubh.}(hj* hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjXhKhj hhubh.)}(hXInstead of returning the directory entries directly, the method must call `readdir_reply` for each directory entry. If `readdir_reply` returns True, the file system must increase the lookup count for the provided directory entry by one and call `readdir_reply` again for the next entry (if any). If `readdir_reply` returns False, the lookup count must *not* be increased and the method should return without further calls to `readdir_reply`.h](hJInstead of returning the directory entries directly, the method must call }(hj hhhNhNubh8)}(h`readdir_reply`h]h)}(hj h]h readdir_reply}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hj;hKhj ubh for each directory entry. If }(hj hhhNhNubh8)}(h`readdir_reply`h]h)}(hj h]h readdir_reply}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hj;hKhj ubho returns True, the file system must increase the lookup count for the provided directory entry by one and call }(hj hhhNhNubh8)}(h`readdir_reply`h]h)}(hj h]h readdir_reply}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hj;hKhj ubh' again for the next entry (if any). If }(hj hhhNhNubh8)}(h`readdir_reply`h]h)}(hj h]h readdir_reply}(hj hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj ubah}(h!]h#]h%]h']h)]refdochV refdomainj!reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hj;hKhj ubh& returns False, the lookup count must }(hj hhhNhNubj)}(h*not*h]hnot}(hj!hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj ubhD be increased and the method should return without further calls to }(hj hhhNhNubh8)}(h`readdir_reply`h]h)}(hj,!h]h readdir_reply}(hj.!hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj*!ubah}(h!]h#]h%]h']h)]refdochV refdomainj8!reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hj;hKhj ubh.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjXhKhj hhubh.)}(hThe *start_id* parameter will be either zero (in which case listing should begin with the first entry) or it will correspond to a value that was previously passed by the file system to the `readdir_reply` function in the *next_id* parameter.h](hThe }(hjT!hhhNhNubj)}(h *start_id*h]hstart_id}(hj\!hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjT!ubh parameter will be either zero (in which case listing should begin with the first entry) or it will correspond to a value that was previously passed by the file system to the }(hjT!hhhNhNubh8)}(h`readdir_reply`h]h)}(hjp!h]h readdir_reply}(hjr!hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjn!ubah}(h!]h#]h%]h']h)]refdochV refdomainj|!reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hj;hK hjT!ubh function in the }(hjT!hhhNhNubj)}(h *next_id*h]hnext_id}(hj!hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjT!ubh parameter.}(hjT!hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjXhKhj hhubh.)}(hIf entries are added or removed during a `readdir` cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once.h](h)If entries are added or removed during a }(hj!hhhNhNubh8)}(h `readdir`h]h)}(hj!h]hreaddir}(hj!hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj!ubah}(h!]h#]h%]h']h)]refdochV refdomainj!reftypeobj refexplicitrefwarnj j j hh\readdiruh+h7hj;hKhj!ubh} cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once.}(hj!hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjXhKhj hhubh.)}(h:file:`.` and :file:`..` entries may be included but are not required. However, if they are reported the filesystem *must not* increase the lookup count for the corresponding inodes (even if `readdir_reply` returns True).h](h)}(h :file:`.`h]h.}(hj!hhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhj!ubh and }(hj!hhhNhNubh)}(h :file:`..`h]h..}(hj!hhhNhNubah}(h!]h#]fileah%]h']h)]rolefileuh+hhj!ubh\ entries may be included but are not required. However, if they are reported the filesystem }(hj!hhhNhNubj)}(h *must not*h]hmust not}(hj "hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj!ubhA increase the lookup count for the corresponding inodes (even if }(hj!hhhNhNubh8)}(h`readdir_reply`h]h)}(hj"h]h readdir_reply}(hj "hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj"ubah}(h!]h#]h%]h']h)]refdochV refdomainj*"reftypeobj refexplicitrefwarnj j j hh\ readdir_replyuh+h7hh,hKhj!ubh returns True).}(hj!hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjXhKhj hhubeh}(h!]h#]h%]h']h)]uh+hhjYhhhj|hKubeh}(h!]h#](pymethodeh%]h']h)]jjO"jjP"jjP"jjjuh+hyhhhhhjXhNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu&readlink() (pyfuse3.Operations method)pyfuse3.Operations.readlinkhNtauh+hhhhhhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.readlinkhNubhz)}(hhh](h)}(hyOperations.readlink(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> ~pyfuse3.NewType..new_typeh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjj"hhhNhNubh)}(h h]h }(hjr"hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjj"ubeh}(h!]h#]h%]h']h)]hhuh+hhjf"hhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.readlinkhKubh)}(hreadlinkh]hreadlink}(hj"hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjf"hhhj"hKubj)}(h@(inode: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hj"hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj"ubah}(h!]h#]h%]h']h)]hhuh+jhj"ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj"hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj"ubah}(h!]h#]h%]h']h)]hhuh+jhj"ubeh}(h!]h#]h%]h']h)]hhuh+jhjf"hhhj"hKubjK)}(h"~pyfuse3.NewType..new_typeh]h8)}(hhh]hnew_type}(hj"hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftarget!pyfuse3.NewType..new_type refspecific py:modulehՌpy:classhuh+h7hj"ubah}(h!]h#]h%]h']h)]hhuh+jJhjf"hhhj"hKubeh}(h!]j`"ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.readlinkhj" OperationsreadlinkhڌOperations.readlink()uh+h~hj"hKhjc"hhubh)}(hhh](h.)}(h'Return target of symbolic link *inode*.h](hReturn target of symbolic link }(hj"hhhNhNubj)}(h*inode*h]hinode}(hj#hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj"ubh.}(hj"hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjb"hKhj"hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hj #hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj#ubh will be a }(hj#hhhNhNubh8)}(h`RequestContext`h]h)}(hj4#h]hRequestContext}(hj6#hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj2#ubah}(h!]h#]h%]h']h)]refdochV refdomainj@#reftypeobj refexplicitrefwarnj j"j hh\RequestContextuh+h7hhhKhj#ubh instance.}(hj#hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjb"hKhj"hhubeh}(h!]h#]h%]h']h)]uh+hhjc"hhhj"hKubeh}(h!]h#](pymethodeh%]h']h)]jje#jjf#jjf#jjjuh+hyhhhhhjb"hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu%release() (pyfuse3.Operations method)pyfuse3.Operations.releasehNtauh+hhhhhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.releasehNubhz)}(hhh](h)}(hBOperations.release(fh: ~pyfuse3.NewType..new_type) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj#hhhNhNubh)}(h h]h }(hj#hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj#ubeh}(h!]h#]h%]h']h)]hhuh+hhj|#hhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.releasehKubh)}(hreleaseh]hrelease}(hj#hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj|#hhhj#hKubj)}(h((fh: ~pyfuse3.NewType..new_type)h]j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hj#hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj#ubah}(h!]h#]h%]h']h)]hhuh+jhj#ubah}(h!]h#]h%]h']h)]hhuh+jhj|#hhhj#hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj#hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj#ubah}(h!]h#]h%]h']h)]hhuh+jJhj|#hhhj#hKubeh}(h!]jv#ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.releasehj# OperationsreleasehڌOperations.release()uh+h~hj#hKhjy#hhubh)}(hhh](h.)}(hRelease open file.h]hRelease open file.}(hj#hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjx#hKhj#hhubh.)}(hThis method will be called when the last file descriptor of *fh* has been closed, i.e. when the file is no longer opened by any client process.h](h$ubah}(h!]h#]h%]h']h)]refdochV refdomainjL$reftypeobj refexplicitrefwarnj j#j hh\openuh+h7hj;hKhj($ubh or }(hj($hhhNhNubh8)}(h`create`h]h)}(hjd$h]hcreate}(hjf$hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjb$ubah}(h!]h#]h%]h']h)]refdochV refdomainjp$reftypeobj refexplicitrefwarnj j#j hh\createuh+h7hj;hKhj($ubh call. Once }(hj($hhhNhNubh8)}(h `release`h]h)}(hj$h]hrelease}(hj$hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj$ubah}(h!]h#]h%]h']h)]refdochV refdomainj$reftypeobj refexplicitrefwarnj j#j hh\releaseuh+h7hj;hKhj($ubh) has been called, no future requests for }(hj($hhhNhNubj)}(h*fh*h]hfh}(hj$hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj($ubhM will be received (until the value is re-used in the return value of another }(hj($hhhNhNubh8)}(h`open`h]h)}(hj$h]hopen}(hj$hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj$ubah}(h!]h#]h%]h']h)]refdochV refdomainj$reftypeobj refexplicitrefwarnj j#j hh\openuh+h7hj;hKhj($ubh or }(hj($hhhNhNubh8)}(h`create`h]h)}(hj$h]hcreate}(hj$hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj$ubah}(h!]h#]h%]h']h)]refdochV refdomainj$reftypeobj refexplicitrefwarnj j#j hh\createuh+h7hj;hKhj($ubh call).}(hj($hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjx#hKhj#hhubh.)}(hThis method may return an error by raising `FUSEError`, but the error will be discarded because there is no corresponding client request.h](h+This method may return an error by raising }(hj %hhhNhNubh8)}(h `FUSEError`h]h)}(hj%h]h FUSEError}(hj%hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj%ubah}(h!]h#]h%]h']h)]refdochV refdomainj %reftypeobj refexplicitrefwarnj j#j hh\ FUSEErroruh+h7hj;hKhj %ubhS, but the error will be discarded because there is no corresponding client request.}(hj %hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjx#hK hj#hhubeh}(h!]h#]h%]h']h)]uh+hhjy#hhhj#hKubeh}(h!]h#](pymethodeh%]h']h)]jjE%jjF%jjF%jjjuh+hyhhhhhjx#hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu(releasedir() (pyfuse3.Operations method)pyfuse3.Operations.releasedirhNtauh+hhhhhhh`/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.releasedirhNubhz)}(hhh](h)}(hEOperations.releasedir(fh: ~pyfuse3.NewType..new_type) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj`%hhhNhNubh)}(h h]h }(hjh%hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj`%ubeh}(h!]h#]h%]h']h)]hhuh+hhj\%hhh`/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.releasedirhKubh)}(h releasedirh]h releasedir}(hj}%hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj\%hhhj|%hKubj)}(h((fh: ~pyfuse3.NewType..new_type)h]j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hj%hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj%ubah}(h!]h#]h%]h']h)]hhuh+jhj%ubah}(h!]h#]h%]h']h)]hhuh+jhj\%hhhj|%hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj%hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj%ubah}(h!]h#]h%]h']h)]hhuh+jJhj\%hhhj|%hKubeh}(h!]jV%ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.releasedirhj% Operations releasedirhڌOperations.releasedir()uh+h~hj|%hKhjY%hhubh)}(hhh](h.)}(hRelease open directory.h]hRelease open directory.}(hj%hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjX%hKhj%hhubh.)}(hThis method will be called exactly once for each `opendir` call. After *fh* has been released, no further `readdir` requests will be received for it (until it is opened again with `opendir`).h](h1This method will be called exactly once for each }(hj%hhhNhNubh8)}(h `opendir`h]h)}(hj%h]hopendir}(hj%hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj%ubah}(h!]h#]h%]h']h)]refdochV refdomainj%reftypeobj refexplicitrefwarnj j%j hh\opendiruh+h7hhhKhj%ubh call. After }(hj%hhhNhNubj)}(h*fh*h]hfh}(hj&hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj%ubh has been released, no further }(hj%hhhNhNubh8)}(h `readdir`h]h)}(hj(&h]hreaddir}(hj*&hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj&&ubah}(h!]h#]h%]h']h)]refdochV refdomainj4&reftypeobj refexplicitrefwarnj j%j hh\readdiruh+h7hhhKhj%ubhA requests will be received for it (until it is opened again with }(hj%hhhNhNubh8)}(h `opendir`h]h)}(hjL&h]hopendir}(hjN&hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjJ&ubah}(h!]h#]h%]h']h)]refdochV refdomainjX&reftypeobj refexplicitrefwarnj j%j hh\opendiruh+h7hhhKhj%ubh).}(hj%hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjX%hKhj%hhubeh}(h!]h#]h%]h']h)]uh+hhjY%hhhj|%hKubeh}(h!]h#](pymethodeh%]h']h)]jj}&jj~&jj~&jjjuh+hyhhhhhjX%hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu)removexattr() (pyfuse3.Operations method)pyfuse3.Operations.removexattrhNtauh+hhhhhhha/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.removexattrhNubhz)}(hhh](h)}(hOperations.removexattr(inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj&hhhNhNubh)}(h h]h }(hj&hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj&ubeh}(h!]h#]h%]h']h)]hhuh+hhj&hhha/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.removexattrhKubh)}(h removexattrh]h removexattr}(hj&hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj&hhhj&hKubj)}(hj(inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hj&hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj&ubah}(h!]h#]h%]h']h)]hhuh+jhj&ubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hj&hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj&ubah}(h!]h#]h%]h']h)]hhuh+jhj&ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj&hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj&ubah}(h!]h#]h%]h']h)]hhuh+jhj&ubeh}(h!]h#]h%]h']h)]hhuh+jhj&hhhj&hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj'hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj'ubah}(h!]h#]h%]h']h)]hhuh+jJhj&hhhj&hKubeh}(h!]j&ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.removexattrhj9' Operations removexattrhڌOperations.removexattr()uh+h~hj&hKhj&hhubh)}(hhh](h.)}(h,Remove extended attribute *name* of *inode*.h](hRemove extended attribute }(hjB'hhhNhNubj)}(h*name*h]hname}(hjJ'hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjB'ubh of }(hjB'hhhNhNubj)}(h*inode*h]hinode}(hj\'hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjB'ubh.}(hjB'hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj&hKhj?'hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hjx'hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjt'ubh will be a }(hjt'hhhNhNubh8)}(h`RequestContext`h]h)}(hj'h]hRequestContext}(hj'hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj'ubah}(h!]h#]h%]h']h)]refdochV refdomainj'reftypeobj refexplicitrefwarnj j9'j hh\RequestContextuh+h7hhhKhjt'ubh instance.}(hjt'hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj&hKhj?'hhubh.)}(hIf the attribute does not exist, the method must raise `FUSEError` with an error code of `ENOATTR`. *name* will be of type `bytes`, but is guaranteed not to contain zero-bytes (``\0``).h](h7If the attribute does not exist, the method must raise }(hj'hhhNhNubh8)}(h `FUSEError`h]h)}(hj'h]h FUSEError}(hj'hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj'ubah}(h!]h#]h%]h']h)]refdochV refdomainj'reftypeobj refexplicitrefwarnj j9'j hh\ FUSEErroruh+h7hj hKhj'ubh with an error code of }(hj'hhhNhNubh8)}(h `ENOATTR`h]h)}(hj'h]hENOATTR}(hj'hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj'ubah}(h!]h#]h%]h']h)]refdochV refdomainj'reftypeobj refexplicitrefwarnj j9'j hh\ENOATTRuh+h7hj hKhj'ubh. }(hj'hhhNhNubj)}(h*name*h]hname}(hj(hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj'ubh will be of type }(hj'hhhNhNubh8)}(h`bytes`h]h)}(hj(h]hbytes}(hj(hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj(ubah}(h!]h#]h%]h']h)]refdochV refdomainj$(reftypeobj refexplicitrefwarnj j9'j hh\bytesuh+h7hj hKhj'ubh/, but is guaranteed not to contain zero-bytes (}(hj'hhhNhNubh)}(h``\0``h]h\0}(hj:(hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj'ubh).}(hj'hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj&hKhj?'hhubeh}(h!]h#]h%]h']h)]uh+hhj&hhhj&hKubeh}(h!]h#](pymethodeh%]h']h)]jj[(jj\(jj\(jjjuh+hyhhhhhj&hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$rename() (pyfuse3.Operations method)pyfuse3.Operations.renamehNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.renamehNubhz)}(hhh](h)}(hOperations.rename(parent_inode_old: ~pyfuse3.NewType..new_type, name_old: str, parent_inode_new: ~pyfuse3.NewType..new_type, name_new: str, flags: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjv(hhhNhNubh)}(h h]h }(hj~(hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjv(ubeh}(h!]h#]h%]h']h)]hhuh+hhjr(hhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.renamehKubh)}(hrenameh]hrename}(hj(hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjr(hhhj(hKubj)}(h(parent_inode_old: ~pyfuse3.NewType..new_type, name_old: str, parent_inode_new: ~pyfuse3.NewType..new_type, name_new: str, flags: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h4parent_inode_old: ~pyfuse3.NewType..new_typeh]j)}(h4parent_inode_old: ~pyfuse3.NewType..new_typeh]h4parent_inode_old: ~pyfuse3.NewType..new_type}(hj(hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj(ubah}(h!]h#]h%]h']h)]hhuh+jhj(ubj)}(h name_old: strh]j)}(h name_old: strh]h name_old: str}(hj(hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj(ubah}(h!]h#]h%]h']h)]hhuh+jhj(ubj)}(h4parent_inode_new: ~pyfuse3.NewType..new_typeh]j)}(h4parent_inode_new: ~pyfuse3.NewType..new_typeh]h4parent_inode_new: ~pyfuse3.NewType..new_type}(hj(hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj(ubah}(h!]h#]h%]h']h)]hhuh+jhj(ubj)}(h name_new: strh]j)}(h name_new: strh]h name_new: str}(hj(hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj(ubah}(h!]h#]h%]h']h)]hhuh+jhj(ubj)}(h)flags: ~pyfuse3.NewType..new_typeh]j)}(h)flags: ~pyfuse3.NewType..new_typeh]h)flags: ~pyfuse3.NewType..new_type}(hj )hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj)ubah}(h!]h#]h%]h']h)]hhuh+jhj(ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj!)hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj)ubah}(h!]h#]h%]h']h)]hhuh+jhj(ubeh}(h!]h#]h%]h']h)]hhuh+jhjr(hhhj(hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj?)hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj;)ubah}(h!]h#]h%]h']h)]hhuh+jJhjr(hhhj(hKubeh}(h!]jl(ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.renamehj_) OperationsrenamehڌOperations.rename()uh+h~hj(hKhjo(hhubh)}(hhh](h.)}(hRename a directory entry.h]hRename a directory entry.}(hjh)hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjn(hKhje)hhubh.)}(hThis method must rename *name_old* in the directory with inode *parent_inode_old* to *name_new* in the directory with inode *parent_inode_new*. If *name_new* already exists, it should be overwritten.h](hThis method must rename }(hjv)hhhNhNubj)}(h *name_old*h]hname_old}(hj~)hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjv)ubh in the directory with inode }(hjv)hhhNhNubj)}(h*parent_inode_old*h]hparent_inode_old}(hj)hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjv)ubh to }(hjv)hhhNhNubj)}(h *name_new*h]hname_new}(hj)hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjv)ubh in the directory with inode }hjv)sbj)}(h*parent_inode_new*h]hparent_inode_new}(hj)hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjv)ubh. If }(hjv)hhhNhNubj)}(h *name_new*h]hname_new}(hj)hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjv)ubh* already exists, it should be overwritten.}(hjv)hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjn(hKhje)hhubh.)}(hX=*flags* may be `RENAME_EXCHANGE` or `RENAME_NOREPLACE`. If `RENAME_NOREPLACE` is specified, the filesystem must not overwrite *name_new* if it exists and return an error instead. If `RENAME_EXCHANGE` is specified, the filesystem must atomically exchange the two files, i.e. both must exist and neither may be deleted.h](j)}(h*flags*h]hflags}(hj)hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj)ubh may be }(hj)hhhNhNubh8)}(h`RENAME_EXCHANGE`h]h)}(hj)h]hRENAME_EXCHANGE}(hj)hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj)ubah}(h!]h#]h%]h']h)]refdochV refdomainj*reftypeobj refexplicitrefwarnj j_)j hh\RENAME_EXCHANGEuh+h7hj;hKhj)ubh or }(hj)hhhNhNubh8)}(h`RENAME_NOREPLACE`h]h)}(hj*h]hRENAME_NOREPLACE}(hj*hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj*ubah}(h!]h#]h%]h']h)]refdochV refdomainj&*reftypeobj refexplicitrefwarnj j_)j hh\RENAME_NOREPLACEuh+h7hj;hKhj)ubh. If }(hj)hhhNhNubh8)}(h`RENAME_NOREPLACE`h]h)}(hj>*h]hRENAME_NOREPLACE}(hj@*hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj<*ubah}(h!]h#]h%]h']h)]refdochV refdomainjJ*reftypeobj refexplicitrefwarnj j_)j hh\RENAME_NOREPLACEuh+h7hj;hKhj)ubh1 is specified, the filesystem must not overwrite }(hj)hhhNhNubj)}(h *name_new*h]hname_new}(hj`*hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj)ubh. if it exists and return an error instead. If }(hj)hhhNhNubh8)}(h`RENAME_EXCHANGE`h]h)}(hjt*h]hRENAME_EXCHANGE}(hjv*hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjr*ubah}(h!]h#]h%]h']h)]refdochV refdomainj*reftypeobj refexplicitrefwarnj j_)j hh\RENAME_EXCHANGEuh+h7hj;hKhj)ubhv is specified, the filesystem must atomically exchange the two files, i.e. both must exist and neither may be deleted.}(hj)hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjn(hKhje)hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hj*hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh will be a }(hj*hhhNhNubh8)}(h`RequestContext`h]h)}(hj*h]hRequestContext}(hj*hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj*ubah}(h!]h#]h%]h']h)]refdochV refdomainj*reftypeobj refexplicitrefwarnj j_)j hh\RequestContextuh+h7hj;hK hj*ubh instance.}(hj*hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjn(hKhje)hhubh.)}(hLet the inode associated with *name_old* in *parent_inode_old* be *inode_moved*, and the inode associated with *name_new* in *parent_inode_new* (if it exists) be called *inode_deref*.h](hLet the inode associated with }(hj*hhhNhNubj)}(h *name_old*h]hname_old}(hj*hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh in }(hj*hhhNhNubj)}(h*parent_inode_old*h]hparent_inode_old}(hj*hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh be }(hj*hhhNhNubj)}(h *inode_moved*h]h inode_moved}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh , and the inode associated with }(hj*hhhNhNubj)}(h *name_new*h]hname_new}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh in }(hj*hhhNhNubj)}(h*parent_inode_new*h]hparent_inode_new}(hj,+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh (if it exists) be called }(hj*hhhNhNubj)}(h *inode_deref*h]h inode_deref}(hj>+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj*ubh.}(hj*hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjn(hKhje)hhubh.)}(hXIf *inode_deref* exists and has a non-zero lookup count, or if there are other directory entries referring to *inode_deref*), the file system must update only the directory entry for *name_new* to point to *inode_moved* instead of *inode_deref*. (Potential) removal of *inode_deref* (containing the previous contents of *name_new*) must be deferred to the `forget` method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with *inode_deref* either).h](hIf }(hjV+hhhNhNubj)}(h *inode_deref*h]h inode_deref}(hj^+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh^ exists and has a non-zero lookup count, or if there are other directory entries referring to }(hjV+hhhNhNubj)}(h *inode_deref*gh]h inode_deref}(hjp+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh<), the file system must update only the directory entry for }(hjV+hhhNhNubj)}(h *name_new*h]hname_new}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh to point to }(hjV+hhhNhNubj)}(h *inode_moved*h]h inode_moved}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh instead of }(hjV+hhhNhNubj)}(h *inode_deref*h]h inode_deref}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh. (Potential) removal of }(hjV+hhhNhNubj)}(h *inode_deref*h]h inode_deref}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh& (containing the previous contents of }(hjV+hhhNhNubj)}(h *name_new*h]hname_new}(hj+hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh) must be deferred to the }(hjV+hhhNhNubh8)}(h`forget`h]h)}(hj+h]hforget}(hj+hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj+ubah}(h!]h#]h%]h']h)]refdochV refdomainj+reftypeobj refexplicitrefwarnj j_)j hh\forgetuh+h7hh,hK hjV+ubh method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with }(hjV+hhhNhNubj)}(h *inode_deref*h]h inode_deref}(hj,hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjV+ubh either).}(hjV+hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjn(hKhje)hhubeh}(h!]h#]h%]h']h)]uh+hhjo(hhhj(hKubeh}(h!]h#](pymethodeh%]h']h)]jj!,jj",jj",jjjuh+hyhhhhhjn(hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu#rmdir() (pyfuse3.Operations method)pyfuse3.Operations.rmdirhNtauh+hhhhhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.rmdirhNubhz)}(hhh](h)}(hOperations.rmdir(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj<,hhhNhNubh)}(h h]h }(hjD,hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj<,ubeh}(h!]h#]h%]h']h)]hhuh+hhj8,hhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.rmdirhKubh)}(hrmdirh]hrmdir}(hjY,hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj8,hhhjX,hKubj)}(hq(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hjo,hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjk,ubah}(h!]h#]h%]h']h)]hhuh+jhjg,ubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hj,hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj,ubah}(h!]h#]h%]h']h)]hhuh+jhjg,ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj,hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj,ubah}(h!]h#]h%]h']h)]hhuh+jhjg,ubeh}(h!]h#]h%]h']h)]hhuh+jhj8,hhhjX,hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj,hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj,ubah}(h!]h#]h%]h']h)]hhuh+jJhj8,hhhjX,hKubeh}(h!]j2,ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.rmdirhj, OperationsrmdirhڌOperations.rmdir()uh+h~hjX,hKhj5,hhubh)}(hhh](h.)}(hRemove directory *name*.h](hRemove directory }(hj,hhhNhNubj)}(h*name*h]hname}(hj,hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj,ubh.}(hj,hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4,hKhj,hhubh.)}(hThis method must remove the directory *name* from the direcory with inode *parent_inode*. *ctx* will be a `RequestContext` instance. If there are still entries in the directory, the method should raise ``FUSEError(errno.ENOTEMPTY)``.h](h&This method must remove the directory }(hj-hhhNhNubj)}(h*name*h]hname}(hj-hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh from the direcory with inode }(hj-hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hj -hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh. }(hj-hhhNhNubj)}(h*ctx*h]hctx}(hj2-hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh will be a }(hj-hhhNhNubh8)}(h`RequestContext`h]h)}(hjF-h]hRequestContext}(hjH-hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjD-ubah}(h!]h#]h%]h']h)]refdochV refdomainjR-reftypeobj refexplicitrefwarnj j,j hh\RequestContextuh+h7hhhKhj-ubhP instance. If there are still entries in the directory, the method should raise }(hj-hhhNhNubh)}(h``FUSEError(errno.ENOTEMPTY)``h]hFUSEError(errno.ENOTEMPTY)}(hjh-hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj-ubh.}(hj-hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4,hKhj,hhubh.)}(hXIf the inode associated with *name* (i.e., not the *parent_inode*) has a non-zero lookup count, the file system must remove only the directory entry (so that future calls to `readdir` for *parent_inode* will no longer include *name*, but e.g. calls to `getattr` for *file*'s inode still succeed). Removal of the associated inode holding the directory contents and metadata must be deferred to the `forget` method to be carried out when the lookup count reaches zero.h](hIf the inode associated with }(hj-hhhNhNubj)}(h*name*h]hname}(hj-hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh (i.e., not the }(hj-hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hj-hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubhm) has a non-zero lookup count, the file system must remove only the directory entry (so that future calls to }(hj-hhhNhNubh8)}(h `readdir`h]h)}(hj-h]hreaddir}(hj-hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj-ubah}(h!]h#]h%]h']h)]refdochV refdomainj-reftypeobj refexplicitrefwarnj j,j hh\readdiruh+h7hj;hKhj-ubh for }(hj-hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hj-hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh will no longer include }(hj-hhhNhNubj)}(h*name*h]hname}(hj-hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh, but e.g. calls to }(hj-hhhNhNubh8)}(h `getattr`h]h)}(hj-h]hgetattr}(hj-hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj-ubah}(h!]h#]h%]h']h)]refdochV refdomainj.reftypeobj refexplicitrefwarnj j,j hh\getattruh+h7hj;hKhj-ubh for }hj-sbj)}(h*file*h]hfile}(hj.hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj-ubh’s inode still succeed). Removal of the associated inode holding the directory contents and metadata must be deferred to the }(hj-hhhNhNubh8)}(h`forget`h]h)}(hj,.h]hforget}(hj..hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj*.ubah}(h!]h#]h%]h']h)]refdochV refdomainj8.reftypeobj refexplicitrefwarnj j,j hh\forgetuh+h7hj;hKhj-ubh= method to be carried out when the lookup count reaches zero.}(hj-hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4,hKhj,hhubh.)}(h(Since hard links to directories are not allowed by POSIX, this method is not required to check if there are still other directory entries refering to the same inode. This conveniently avoids the ambigiouties associated with the ``.`` and ``..`` entries).h](h(Since hard links to directories are not allowed by POSIX, this method is not required to check if there are still other directory entries refering to the same inode. This conveniently avoids the ambigiouties associated with the }(hjT.hhhNhNubh)}(h``.``h]h.}(hj\.hhhNhNubah}(h!]h#]h%]h']h)]uh+hhjT.ubh and }(hjT.hhhNhNubh)}(h``..``h]h..}(hjn.hhhNhNubah}(h!]h#]h%]h']h)]uh+hhjT.ubh entries).}(hjT.hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4,hKhj,hhubeh}(h!]h#]h%]h']h)]uh+hhj5,hhhjX,hKubeh}(h!]h#](pymethodeh%]h']h)]jj.jj.jj.jjjuh+hyhhhhhj4,hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu%setattr() (pyfuse3.Operations method)pyfuse3.Operations.setattrhNtauh+hhhhhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.setattrhNubhz)}(hhh](h)}(hOperations.setattr(inode: ~pyfuse3.NewType..new_type, attr: EntryAttributes, fields: SetattrFields, fh: ~typing.Optional[~pyfuse3.NewType..new_type], ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj.hhhNhNubh)}(h h]h }(hj.hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj.ubeh}(h!]h#]h%]h']h)]hhuh+hhj.hhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.setattrhKubh)}(hsetattrh]hsetattr}(hj.hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj.hhhj.hKubj)}(h(inode: ~pyfuse3.NewType..new_type, attr: EntryAttributes, fields: SetattrFields, fh: ~typing.Optional[~pyfuse3.NewType..new_type], ctx: RequestContext)h]j)}(hinode: ~pyfuse3.NewType..new_type, attr: EntryAttributes, fields: SetattrFields, fh: ~typing.Optional[~pyfuse3.NewType..new_type], ctx: RequestContexth]hinode: ~pyfuse3.NewType..new_type, attr: EntryAttributes, fields: SetattrFields, fh: ~typing.Optional[~pyfuse3.NewType..new_type], ctx: RequestContext}(hj.hhhNhNubah}(h!]h#]h%]h']h)]hhuh+jhj.ubah}(h!]h#]h%]h']h)]hhuh+jhj.hhhj.hKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hj.hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hj.ubah}(h!]h#]h%]h']h)]hhuh+jJhj.hhhj.hKubeh}(h!]j.ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.setattrhj/ OperationssetattrhڌOperations.setattr()uh+h~hj.hKhj.hhubh)}(hhh](h.)}(hChange attributes of *inode*.h](hChange attributes of }(hj/hhhNhNubj)}(h*inode*h]hinode}(hj"/hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj/ubh.}(hj/hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj.hKhj/hhubh.)}(h*fields* will be an `SetattrFields` instance that specifies which attributes are to be updated. *attr* will be an `EntryAttributes` instance for *inode* that contains the new values for changed attributes, and undefined values for all other attributes.h](j)}(h*fields*h]hfields}(hj>/hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj:/ubh will be an }(hj:/hhhNhNubh8)}(h`SetattrFields`h]h)}(hjR/h]h SetattrFields}(hjT/hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjP/ubah}(h!]h#]h%]h']h)]refdochV refdomainj^/reftypeobj refexplicitrefwarnj j/j hh\ SetattrFieldsuh+h7hhhKhj:/ubh= instance that specifies which attributes are to be updated. }(hj:/hhhNhNubj)}(h*attr*h]hattr}(hjt/hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj:/ubh will be an }hj:/sbh8)}(h`EntryAttributes`h]h)}(hj/h]hEntryAttributes}(hj/hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj/ubah}(h!]h#]h%]h']h)]refdochV refdomainj/reftypeobj refexplicitrefwarnj j/j hh\EntryAttributesuh+h7hhhKhj:/ubh instance for }(hj:/hhhNhNubj)}(h*inode*h]hinode}(hj/hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj:/ubhd that contains the new values for changed attributes, and undefined values for all other attributes.}(hj:/hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj.hKhj/hhubh.)}(hMost file systems will additionally set the `~EntryAttributes.st_ctime_ns` attribute to the current time (to indicate that the inode metadata was changed).h](h,Most file systems will additionally set the }(hj/hhhNhNubh8)}(h`~EntryAttributes.st_ctime_ns`h]h)}(hj/h]h st_ctime_ns}(hj/hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj/ubah}(h!]h#]h%]h']h)]refdochV refdomainj/reftypeobj refexplicitrefwarnj j/j hh\EntryAttributes.st_ctime_nsuh+h7hj;hKhj/ubhQ attribute to the current time (to indicate that the inode metadata was changed).}(hj/hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj.hKhj/hhubh.)}(hXLIf the syscall that is being processed received a file descriptor argument (like e.g. :manpage:`ftruncate(2)` or :manpage:`fchmod(2)`), *fh* will be the file handle returned by the corresponding call to the `open` handler. If the syscall was path based (like e.g. :manpage:`truncate(2)` or :manpage:`chmod(2)`), *fh* will be `None`.h](hVIf the syscall that is being processed received a file descriptor argument (like e.g. }(hj/hhhNhNubjK)}(h:manpage:`ftruncate(2)`h]h ftruncate(2)}(hj/hhhNhNubah}(h!]h#]jJah%]h']h)]hhjZ ftruncate(2)j\ ftruncatej^j_uh+jJhj/ubh or }(hj/hhhNhNubjK)}(h:manpage:`fchmod(2)`h]h fchmod(2)}(hj0hhhNhNubah}(h!]h#]jJah%]h']h)]hhjZ fchmod(2)j\fchmodj^j_uh+jJhj/ubh), }(hj/hhhNhNubj)}(h*fh*h]hfh}(hj$0hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj/ubhC will be the file handle returned by the corresponding call to the }(hj/hhhNhNubh8)}(h`open`h]h)}(hj80h]hopen}(hj:0hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj60ubah}(h!]h#]h%]h']h)]refdochV refdomainjD0reftypeobj refexplicitrefwarnj j/j hh\openuh+h7hj;hKhj/ubh3 handler. If the syscall was path based (like e.g. }(hj/hhhNhNubjK)}(h:manpage:`truncate(2)`h]h truncate(2)}(hjZ0hhhNhNubah}(h!]h#]jJah%]h']h)]hhjZ truncate(2)j\truncatej^j_uh+jJhj/ubh or }hj/sbjK)}(h:manpage:`chmod(2)`h]hchmod(2)}(hjn0hhhNhNubah}(h!]h#]jJah%]h']h)]hhjZchmod(2)j\chmodj^j_uh+jJhj/ubh), }(hj/hhhNhNubj)}(h*fh*h]hfh}(hj0hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj/ubh will be }(hj/hhhNhNubh8)}(h`None`h]h)}(hj0h]hNone}(hj0hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj0ubah}(h!]h#]h%]h']h)]refdochV refdomainj0reftypeobj refexplicitrefwarnj j/j hh\Noneuh+h7hj;hKhj/ubh.}(hj/hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj.hK hj/hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hj0hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj0ubh will be a }(hj0hhhNhNubh8)}(h`RequestContext`h]h)}(hj0h]hRequestContext}(hj0hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj0ubah}(h!]h#]h%]h']h)]refdochV refdomainj0reftypeobj refexplicitrefwarnj j/j hh\RequestContextuh+h7hj;hKhj0ubh instance.}(hj0hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj.hKhj/hhubh.)}(hjThe method should return an `EntryAttributes` instance (containing both the changed and unchanged values).h](hThe method should return an }(hj0hhhNhNubh8)}(h`EntryAttributes`h]h)}(hj1h]hEntryAttributes}(hj 1hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj1ubah}(h!]h#]h%]h']h)]refdochV refdomainj1reftypeobj refexplicitrefwarnj j/j hh\EntryAttributesuh+h7hh,hK hj0ubh= instance (containing both the changed and unchanged values).}(hj0hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj.hKhj/hhubeh}(h!]h#]h%]h']h)]uh+hhj.hhhj.hKubeh}(h!]h#](pymethodeh%]h']h)]jj91jj:1jj:1jjjuh+hyhhhhhj.hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu&setxattr() (pyfuse3.Operations method)pyfuse3.Operations.setxattrhNtauh+hhhhhhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.setxattrhNubhz)}(hhh](h)}(hOperations.setxattr(inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, value: bytes, ctx: RequestContext) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hjT1hhhNhNubh)}(h h]h }(hj\1hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjT1ubeh}(h!]h#]h%]h']h)]hhuh+hhjP1hhh^/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.setxattrhKubh)}(hsetxattrh]hsetxattr}(hjq1hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhjP1hhhjp1hKubj)}(hx(inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, value: bytes, ctx: RequestContext)h](j)}(h)inode: ~pyfuse3.NewType..new_typeh]j)}(h)inode: ~pyfuse3.NewType..new_typeh]h)inode: ~pyfuse3.NewType..new_type}(hj1hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj1ubah}(h!]h#]h%]h']h)]hhuh+jhj1ubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hj1hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj1ubah}(h!]h#]h%]h']h)]hhuh+jhj1ubj)}(h value: bytesh]j)}(h value: bytesh]h value: bytes}(hj1hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj1ubah}(h!]h#]h%]h']h)]hhuh+jhj1ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj1hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj1ubah}(h!]h#]h%]h']h)]hhuh+jhj1ubeh}(h!]h#]h%]h']h)]hhuh+jhjP1hhhjp1hKubjK)}(hNoneh]h8)}(hhh]hNone}(hj1hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hj1ubah}(h!]h#]h%]h']h)]hhuh+jJhjP1hhhjp1hKubeh}(h!]jJ1ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.setxattrhj 2 OperationssetxattrhڌOperations.setxattr()uh+h~hjp1hKhjM1hhubh)}(hhh](h.)}(h4Set extended attribute *name* of *inode* to *value*.h](hSet extended attribute }(hj2hhhNhNubj)}(h*name*h]hname}(hj2hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj2ubh of }(hj2hhhNhNubj)}(h*inode*h]hinode}(hj02hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj2ubh to }(hj2hhhNhNubj)}(h*value*h]hvalue}(hjB2hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj2ubh.}(hj2hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjL1hKhj2hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hj^2hhhNhNubah}(h!]h#]h%]h']h)]uh+jhjZ2ubh will be a }(hjZ2hhhNhNubh8)}(h`RequestContext`h]h)}(hjr2h]hRequestContext}(hjt2hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjp2ubah}(h!]h#]h%]h']h)]refdochV refdomainj~2reftypeobj refexplicitrefwarnj j 2j hh\RequestContextuh+h7hhhKhjZ2ubh instance.}(hjZ2hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjL1hKhj2hhubh.)}(hThe attribute may or may not exist already. Both *name* and *value* will be of type `bytes`. *name* is guaranteed not to contain zero-bytes (``\0``).h](h1The attribute may or may not exist already. Both }(hj2hhhNhNubj)}(h*name*h]hname}(hj2hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj2ubh and }(hj2hhhNhNubj)}(h*value*h]hvalue}(hj2hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj2ubh will be of type }(hj2hhhNhNubh8)}(h`bytes`h]h)}(hj2h]hbytes}(hj2hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj2ubah}(h!]h#]h%]h']h)]refdochV refdomainj2reftypeobj refexplicitrefwarnj j 2j hh\bytesuh+h7hj hKhj2ubh. }(hj2hhhNhNubj)}(h*name*h]hname}(hj2hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj2ubh* is guaranteed not to contain zero-bytes (}(hj2hhhNhNubh)}(h``\0``h]h\0}(hj2hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj2ubh).}(hj2hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjL1hKhj2hhubeh}(h!]h#]h%]h']h)]uh+hhjM1hhhjp1hKubeh}(h!]h#](pymethodeh%]h']h)]jj3jj3jj3jjjuh+hyhhhhhjL1hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu(stacktrace() (pyfuse3.Operations method)pyfuse3.Operations.stacktracehNtauh+hhhhhhh`/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.stacktracehNubhz)}(hhh](h)}(hOperations.stacktrace() -> Noneh](h)}(h stacktraceh]h stacktrace}(hj83hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj43hhh`/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.stacktracehKubj)}(h()h]h}(h!]h#]h%]h']h)]hhuh+jhj43hhhjF3hKubjK)}(hNoneh]h8)}(hhh]hNone}(hjU3hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hjQ3ubah}(h!]h#]h%]h']h)]hhuh+jJhj43hhhjF3hKubeh}(h!]j.3ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.stacktracehju3 Operations stacktracehڌOperations.stacktrace()uh+h~hjF3hKhj13hhubh)}(hhh](h.)}(hAsynchronous debugging.h]hAsynchronous debugging.}(hj~3hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj03hKhj{3hhubh.)}(hThis method will be called when the ``fuse_stacktrace`` extended attribute is set on the mountpoint. The default implementation logs the current stack trace of every running Python thread. This can be quite useful to debug file system deadlocks.h](h$This method will be called when the }(hj3hhhNhNubh)}(h``fuse_stacktrace``h]hfuse_stacktrace}(hj3hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj3ubh extended attribute is set on the mountpoint. The default implementation logs the current stack trace of every running Python thread. This can be quite useful to debug file system deadlocks.}(hj3hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj03hKhj{3hhubeh}(h!]h#]h%]h']h)]uh+hhj13hhhjF3hKubeh}(h!]h#](pymethodeh%]h']h)]jj3jj3jj3jjjuh+hyhhhhhj03hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$statfs() (pyfuse3.Operations method)pyfuse3.Operations.statfshNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.statfshNubhz)}(hhh](h)}(h5Operations.statfs(ctx: RequestContext) -> StatvfsDatah](h)}(h2[<#text: 'async'>, >]h](hasync}(hj3hhhNhNubh)}(h h]h }(hj3hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj3ubeh}(h!]h#]h%]h']h)]hhuh+hhj3hhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.statfshKubh)}(hstatfsh]hstatfs}(hj3hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj3hhhj3hKubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth](j)}(hctxh]hctx}(hj4hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj3ubj9)}(h:h]h:}(hj4hhhNhNubah}(h!]h#]jEah%]h']h)]uh+j8hj3ubh)}(h h]h }(hj4hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj3ubj)}(hRequestContexth]h8)}(hhh]hRequestContext}(hj14hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetRequestContext refspecific py:modulehՌpy:classhuh+h7hj-4ubah}(h!]h#]j ah%]h']h)]uh+jhj3ubeh}(h!]h#]h%]h']h)]hhuh+jhj3ubah}(h!]h#]h%]h']h)]hhuh+jhj3hhhj3hKubjK)}(h StatvfsDatah]h8)}(hhh]h StatvfsData}(hj[4hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftarget StatvfsData refspecific py:modulehՌpy:classhuh+h7hjW4ubah}(h!]h#]h%]h']h)]hhuh+jJhj3hhhj3hKubeh}(h!]j3ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.statfshj{4 OperationsstatfshڌOperations.statfs()uh+h~hj3hKhj3hhubh)}(hhh](h.)}(hGet file system statistics.h]hGet file system statistics.}(hj4hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj3hKhj4hhubh.)}(h**ctx* will be a `RequestContext` instance.h](j)}(h*ctx*h]hctx}(hj4hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj4ubh will be a }(hj4hhhNhNubh8)}(h`RequestContext`h]h)}(hj4h]hRequestContext}(hj4hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj4ubah}(h!]h#]h%]h']h)]refdochV refdomainj4reftypeobj refexplicitrefwarnj j{4j hh\RequestContextuh+h7hhhKhj4ubh instance.}(hj4hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj3hKhj4hhubh.)}(hFThe method must return an appropriately filled `StatvfsData` instance.h](h/The method must return an appropriately filled }(hj4hhhNhNubh8)}(h `StatvfsData`h]h)}(hj4h]h StatvfsData}(hj4hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj4ubah}(h!]h#]h%]h']h)]refdochV refdomainj4reftypeobj refexplicitrefwarnj j{4j hh\ StatvfsDatauh+h7hj hKhj4ubh instance.}(hj4hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj3hKhj4hhubeh}(h!]h#]h%]h']h)]uh+hhj3hhhj3hKubeh}(h!]h#](pymethodeh%]h']h)]jj 5jj5jj5jjjuh+hyhhhhhj3hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu%symlink() (pyfuse3.Operations method)pyfuse3.Operations.symlinkhNtauh+hhhhhhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.symlinkhNubhz)}(hhh](h)}(hOperations.symlink(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, target: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> EntryAttributesh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj(5hhhNhNubh)}(h h]h }(hj05hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj(5ubeh}(h!]h#]h%]h']h)]hhuh+hhj$5hhh]/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.symlinkhKubh)}(hsymlinkh]hsymlink}(hjE5hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj$5hhhjD5hKubj)}(h(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, target: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hj[5hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjW5ubah}(h!]h#]h%]h']h)]hhuh+jhjS5ubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hjs5hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjo5ubah}(h!]h#]h%]h']h)]hhuh+jhjS5ubj)}(h*target: ~pyfuse3.NewType..new_typeh]j)}(h*target: ~pyfuse3.NewType..new_typeh]h*target: ~pyfuse3.NewType..new_type}(hj5hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj5ubah}(h!]h#]h%]h']h)]hhuh+jhjS5ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj5hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj5ubah}(h!]h#]h%]h']h)]hhuh+jhjS5ubeh}(h!]h#]h%]h']h)]hhuh+jhj$5hhhjD5hKubjK)}(hEntryAttributesh]h8)}(hhh]hEntryAttributes}(hj5hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetEntryAttributes refspecific py:modulehՌpy:classhuh+h7hj5ubah}(h!]h#]h%]h']h)]hhuh+jJhj$5hhhjD5hKubeh}(h!]j5ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.symlinkhj5 OperationssymlinkhڌOperations.symlink()uh+h~hjD5hKhj!5hhubh)}(hhh](h.)}(hCreate a symbolic link.h]hCreate a symbolic link.}(hj5hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj 5hKhj5hhubh.)}(hThis method must create a symbolink link named *name* in the directory with inode *parent_inode*, pointing to *target*. *ctx* will be a `RequestContext` instance.h](h/This method must create a symbolink link named }(hj5hhhNhNubj)}(h*name*h]hname}(hj6hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj5ubh in the directory with inode }(hj5hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hj6hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj5ubh, pointing to }(hj5hhhNhNubj)}(h*target*h]htarget}(hj$6hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj5ubh. }(hj5hhhNhNubj)}(h*ctx*h]hctx}(hj66hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj5ubh will be a }(hj5hhhNhNubh8)}(h`RequestContext`h]h)}(hjJ6h]hRequestContext}(hjL6hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjH6ubah}(h!]h#]h%]h']h)]refdochV refdomainjV6reftypeobj refexplicitrefwarnj j5j hh\RequestContextuh+h7hhhKhj5ubh instance.}(hj5hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj 5hKhj5hhubh.)}(hnThe method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.h](hThe method must return an }(hjr6hhhNhNubh8)}(h`EntryAttributes`h]h)}(hj|6h]hEntryAttributes}(hj~6hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjz6ubah}(h!]h#]h%]h']h)]refdochV refdomainj6reftypeobj refexplicitrefwarnj j5j hh\EntryAttributesuh+h7hj;hKhjr6ubhC instance with the attributes of the newly created directory entry.}(hjr6hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj 5hKhj5hhubh.)}(h`(Successful) execution of this handler increases the lookup count for the returned inode by one.h]h`(Successful) execution of this handler increases the lookup count for the returned inode by one.}(hj6hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj 5hK hj5hhubeh}(h!]h#]h%]h']h)]uh+hhj!5hhhjD5hKubeh}(h!]h#](pymethodeh%]h']h)]jj6jj6jj6jjjuh+hyhhhhhj 5hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu$unlink() (pyfuse3.Operations method)pyfuse3.Operations.unlinkhNtauh+hhhhhhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.unlinkhNubhz)}(hhh](h)}(hOperations.unlink(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext) -> Noneh](h)}(h2[<#text: 'async'>, >]h](hasync}(hj6hhhNhNubh)}(h h]h }(hj6hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj6ubeh}(h!]h#]h%]h']h)]hhuh+hhj6hhh\/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.unlinkhKubh)}(hunlinkh]hunlink}(hj6hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj6hhhj6hKubj)}(hq(parent_inode: ~pyfuse3.NewType..new_type, name: ~pyfuse3.NewType..new_type, ctx: RequestContext)h](j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]j)}(h0parent_inode: ~pyfuse3.NewType..new_typeh]h0parent_inode: ~pyfuse3.NewType..new_type}(hj 7hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj7ubah}(h!]h#]h%]h']h)]hhuh+jhj7ubj)}(h(name: ~pyfuse3.NewType..new_typeh]j)}(h(name: ~pyfuse3.NewType..new_typeh]h(name: ~pyfuse3.NewType..new_type}(hj!7hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj7ubah}(h!]h#]h%]h']h)]hhuh+jhj7ubj)}(hctx: RequestContexth]j)}(hctx: RequestContexth]hctx: RequestContext}(hj97hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj57ubah}(h!]h#]h%]h']h)]hhuh+jhj7ubeh}(h!]h#]h%]h']h)]hhuh+jhj6hhhj6hKubjK)}(hNoneh]h8)}(hhh]hNone}(hjW7hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypej2 reftargetNone refspecific py:modulehՌpy:classhuh+h7hjS7ubah}(h!]h#]h%]h']h)]hhuh+jJhj6hhhj6hKubeh}(h!]j6ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.unlinkhjw7 OperationsunlinkhڌOperations.unlink()uh+h~hj6hKhj6hhubh)}(hhh](h.)}(h!Remove a (possibly special) file.h]h!Remove a (possibly special) file.}(hj7hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hj6hKhj}7hhubh.)}(hThis method must remove the (special or regular) file *name* from the direcory with inode *parent_inode*. *ctx* will be a `RequestContext` instance.h](h6This method must remove the (special or regular) file }(hj7hhhNhNubj)}(h*name*h]hname}(hj7hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh from the direcory with inode }(hj7hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hj7hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh. }(hj7hhhNhNubj)}(h*ctx*h]hctx}(hj7hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh will be a }(hj7hhhNhNubh8)}(h`RequestContext`h]h)}(hj7h]hRequestContext}(hj7hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj7ubah}(h!]h#]h%]h']h)]refdochV refdomainj7reftypeobj refexplicitrefwarnj jw7j hh\RequestContextuh+h7hhhKhj7ubh instance.}(hj7hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj6hKhj}7hhubh.)}(hXIf the inode associated with *file* (i.e., not the *parent_inode*) has a non-zero lookup count, or if there are still other directory entries referring to this inode (due to hardlinks), the file system must remove only the directory entry (so that future calls to `readdir` for *parent_inode* will no longer include *name*, but e.g. calls to `getattr` for *file*'s inode still succeed). (Potential) removal of the associated inode with the file contents and metadata must be deferred to the `forget` method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with the inode either).h](hIf the inode associated with }(hj7hhhNhNubj)}(h*file*h]hfile}(hj7hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh (i.e., not the }(hj7hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hj8hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh) has a non-zero lookup count, or if there are still other directory entries referring to this inode (due to hardlinks), the file system must remove only the directory entry (so that future calls to }(hj7hhhNhNubh8)}(h `readdir`h]h)}(hj$8h]hreaddir}(hj&8hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj"8ubah}(h!]h#]h%]h']h)]refdochV refdomainj08reftypeobj refexplicitrefwarnj jw7j hh\readdiruh+h7hj;hKhj7ubh for }(hj7hhhNhNubj)}(h*parent_inode*h]h parent_inode}(hjF8hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh will no longer include }(hj7hhhNhNubj)}(h*name*h]hname}(hjX8hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh, but e.g. calls to }(hj7hhhNhNubh8)}(h `getattr`h]h)}(hjl8h]hgetattr}(hjn8hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhjj8ubah}(h!]h#]h%]h']h)]refdochV refdomainjx8reftypeobj refexplicitrefwarnj jw7j hh\getattruh+h7hj;hKhj7ubh for }(hj7hhhNhNubj)}(h*file*h]hfile}(hj8hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj7ubh’s inode still succeed). (Potential) removal of the associated inode with the file contents and metadata must be deferred to the }(hj7hhhNhNubh8)}(h`forget`h]h)}(hj8h]hforget}(hj8hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj8ubah}(h!]h#]h%]h']h)]refdochV refdomainj8reftypeobj refexplicitrefwarnj jw7j hh\forgetuh+h7hj;hKhj7ubh method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with the inode either).}(hj7hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj6hKhj}7hhubeh}(h!]h#]h%]h']h)]uh+hhj6hhhj6hKubeh}(h!]h#](pymethodeh%]h']h)]jj8jj8jj8jjjuh+hyhhhhhj6hNubhi)}(hhh]h}(h!]h#]h%]h']h)]entries](hu#write() (pyfuse3.Operations method)pyfuse3.Operations.writehNtauh+hhhhhhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.writehNubhz)}(hhh](h)}(hUOperations.write(fh: ~pyfuse3.NewType..new_type, off: int, buf: bytes) -> inth](h)}(h2[<#text: 'async'>, >]h](hasync}(hj8hhhNhNubh)}(h h]h }(hj8hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj8ubeh}(h!]h#]h%]h']h)]hhuh+hhj8hhh[/home/user/w/pyfuse3/src/pyfuse3/_pyfuse3.py:docstring of pyfuse3._pyfuse3.Operations.writehKubh)}(hwriteh]hwrite}(hj 9hhhNhNubah}(h!]h#](hheh%]h']h)]hhuh+hhj8hhhj 9hKubj)}(h>(fh: ~pyfuse3.NewType..new_type, off: int, buf: bytes)h](j)}(h&fh: ~pyfuse3.NewType..new_typeh]j)}(h&fh: ~pyfuse3.NewType..new_typeh]h&fh: ~pyfuse3.NewType..new_type}(hj!9hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj9ubah}(h!]h#]h%]h']h)]hhuh+jhj9ubj)}(hoff: inth]j)}(hoff: inth]hoff: int}(hj99hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhj59ubah}(h!]h#]h%]h']h)]hhuh+jhj9ubj)}(h buf: bytesh]j)}(h buf: bytesh]h buf: bytes}(hjQ9hhhNhNubah}(h!]h#]j ah%]h']h)]uh+jhjM9ubah}(h!]h#]h%]h']h)]hhuh+jhj9ubeh}(h!]h#]h%]h']h)]hhuh+jhj8hhhj 9hKubjK)}(hinth]h8)}(hhh]hint}(hjo9hhhNhNubah}(h!]h#]h%]h']h)] refdomainj^reftypeh֌ reftargetint refspecific py:modulehՌpy:classhuh+h7hjk9ubah}(h!]h#]h%]h']h)]hhuh+jJhj8hhhj 9hKubeh}(h!]j8ah#](hheh%]h']h)]hԌpyfuse3hhh׌Operations.writehj9 OperationswritehڌOperations.write()uh+h~hj 9hKhj8hhubh)}(hhh](h.)}(hWrite *buf* into *fh* at *off*.h](hWrite }(hj9hhhNhNubj)}(h*buf*h]hbuf}(hj9hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj9ubh into }(hj9hhhNhNubj)}(h*fh*h]hfh}(hj9hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj9ubh at }(hj9hhhNhNubj)}(h*off*h]hoff}(hj9hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj9ubh.}(hj9hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj8hKhj9hhubh.)}(hO*fh* will be an integer filehandle returned by a prior `open` or `create` call.h](j)}(h*fh*h]hfh}(hj9hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj9ubh3 will be an integer filehandle returned by a prior }(hj9hhhNhNubh8)}(h`open`h]h)}(hj9h]hopen}(hj9hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj9ubah}(h!]h#]h%]h']h)]refdochV refdomainj:reftypeobj refexplicitrefwarnj j9j hh\openuh+h7hhhKhj9ubh or }(hj9hhhNhNubh8)}(h`create`h]h)}(hj:h]hcreate}(hj:hhhNhNubah}(h!]h#](hIpypy-objeh%]h']h)]uh+hhj:ubah}(h!]h#]h%]h']h)]refdochV refdomainj$:reftypeobj refexplicitrefwarnj j9j hh\createuh+h7hhhKhj9ubh call.}(hj9hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj8hKhj9hhubh.)}(hThis method must return the number of bytes written. However, unless the file system has been mounted with the ``direct_io`` option, the file system *must* always write *all* the provided data (i.e., return ``len(buf)``).h](hoThis method must return the number of bytes written. However, unless the file system has been mounted with the }(hj@:hhhNhNubh)}(h ``direct_io``h]h direct_io}(hjH:hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj@:ubh option, the file system }(hj@:hhhNhNubj)}(h*must*h]hmust}(hjZ:hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj@:ubh always write }(hj@:hhhNhNubj)}(h*all*h]hall}(hjl:hhhNhNubah}(h!]h#]h%]h']h)]uh+jhj@:ubh! the provided data (i.e., return }(hj@:hhhNhNubh)}(h ``len(buf)``h]hlen(buf)}(hj~:hhhNhNubah}(h!]h#]h%]h']h)]uh+hhj@:ubh).}(hj@:hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj8hKhj9hhubeh}(h!]h#]h%]h']h)]uh+hhj8hhhj 9hKubeh}(h!]h#](pymethodeh%]h']h)]jj:jj:jj:jjjuh+hyhhhhhj8hNubeh}(h!]h#]h%]h']h)]uh+hhh{hhhhhKubeh}(h!]h#](pyclasseh%]h']h)]jj:jj:jj:jjjuh+hyhhhh hNhNubeh}(h!]request-handlersah#]h%]request handlersah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj:error_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}j:j:s nametypes}j:sh!}(j:h hwhjjjhjnjjjjj j j j j j j j j`jfj jjjjjjjj6j<jjjBjHjjjVj\j`"jf"jv#j|#jV%j\%j&j&jl(jr(j2,j8,j.j.jJ1jP1j.3j43j3j3j5j$5j6j6j8j8u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.pyfuse3-3.4.0/doc/html/.doctrees/util.doctree0000644000175000017500000005070314663711064021032 0ustar useruser00000000000000Qsphinx.addnodesdocument)}( rawsourcechildren]docutils.nodessection)}(hhh](h title)}(hUtility Functionsh]h TextUtility Functions}(parenth _documenthsourceNlineNuba attributes}(ids]classes]names]dupnames]backrefs]utagnamehhh hhh!/home/user/w/pyfuse3/rst/util.rsthKubh paragraph)}(hThe 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]hThe 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.}(hh/hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hh,hKhh hhubhindex)}(hhh]h}(h!]h#]h%]h']h)]entries](singlesetxattr() (in module pyfuse3)pyfuse3.setxattrhNtauh+h=hh hhhdocstring of pyfuse3.setxattrhNubhdesc)}(hhh](hdesc_signature)}(h.setxattr(path, name, value, namespace=u'user')h](h desc_addname)}(hpyfuse3.h]hpyfuse3.}(hh\hhhNhNubah}(h!]h#]( sig-prename descclassnameeh%]h']h)] xml:spacepreserveuh+hZhhVhhhdocstring of pyfuse3.setxattrhKubh desc_name)}(hsetxattrh]hsetxattr}(hhqhhhNhNubah}(h!]h#](sig-namedescnameeh%]h']h)]hlhmuh+hohhVhhhhnhKubhdesc_parameterlist)}(h$path, name, value, namespace=u'user'h](hdesc_parameter)}(hpathh]h desc_sig_name)}(hpathh]hpath}(hhhhhNhNubah}(h!]h#]nah%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]hlhmuh+hhhubh)}(hnameh]h)}(hnameh]hname}(hhhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]hlhmuh+hhhubh)}(hvalueh]h)}(hvalueh]hvalue}(hhhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhhubah}(h!]h#]h%]h']h)]hlhmuh+hhhubh)}(hnamespace='user'h](h)}(h namespaceh]h namespace}(hhhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhhubhdesc_sig_operator)}(h=h]h=}(hhhhhNhNubah}(h!]h#]oah%]h']h)]uh+hhhubh inline)}(h'user'h]h'user'}(hhhhhNhNubah}(h!]h#] default_valueah%]h']h)]support_smartquotesuh+hhhubeh}(h!]h#]h%]h']h)]hlhmuh+hhhubeh}(h!]h#]h%]h']h)]hlhmuh+hhhVhhhhnhKubeh}(h!]hLah#](sig sig-objecteh%]h']h)]modulepyfuse3classhfullnamehs _toc_partsjhs _toc_name setxattr()uh+hThhnhKhhQhhubh desc_content)}(hhh](h.)}(hSet extended attributeh]hSet extended attribute}(hj*hhhNhNubah}(h!]h#]h%]h']h)]uh+h-hhNhKhj'hhubh.)}(hz*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]hpath}(hj>hhhNhNubah}(h!]h#]h%]h']h)]uh+j<hj8ubh and }(hj8hhhNhNubj=)}(h*name*h]hname}(hjPhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hj8ubh have to be of type }(hj8hhhNhNubh pending_xref)}(h`str`h]h literal)}(hjfh]hstr}(hjjhhhNhNubah}(h!]h#](xrefpypy-objeh%]h']h)]uh+jhhjdubah}(h!]h#]h%]h']h)]refdocutil refdomainjureftypeobj refexplicitrefwarn py:modulejpy:classN reftargetstruh+jbhhnhKhj8ubh.. In Python 3.x, they may contain surrogates. }(hj8hhhNhNubj=)}(h*value*h]hvalue}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hj8ubh has to be of type }(hj8hhhNhNubjc)}(h`bytes`h]ji)}(hjh]hbytes}(hjhhhNhNubah}(h!]h#](jtpypy-objeh%]h']h)]uh+jhhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnjjjNjbytesuh+jbhhnhKhj8ubh.}(hj8hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hhNhKhj'hhubh.)}(hUnder 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](hUnder FreeBSD, the }(hjhhhNhNubj=)}(h *namespace*h]h namespace}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubh parameter may be set to }(hjhhhNhNubj=)}(h*system*h]hsystem}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubh or }(hjhhhNhNubj=)}(h*user*h]huser}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubhd to select the namespace for the extended attribute. For other platforms, this parameter is ignored.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hhNhKhj'hhubh.)}(hIn contrast to the `os.setxattr` function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems.h](hIn contrast to the }(hjhhhNhNubjc)}(h `os.setxattr`h]ji)}(hjh]h os.setxattr}(hjhhhNhNubah}(h!]h#](jtpypy-objeh%]h']h)]uh+jhhjubah}(h!]h#]h%]h']h)]refdocj refdomainj%reftypeobj refexplicitrefwarnjjjNj os.setxattruh+jbhhNhKhjubhl function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hhNhK hj'hhubeh}(h!]h#]h%]h']h)]uh+j%hhQhhhhnhKubeh}(h!]h#](pyfunctioneh%]h']h)]domainjJobjtypejKdesctypejKnoindex noindexentrynocontentsentryuh+hOhhhh hhNhNubh>)}(hhh]h}(h!]h#]h%]h']h)]entries](hJgetxattr() (in module pyfuse3)pyfuse3.getxattrhNtauh+h=hh hhhdocstring of pyfuse3.getxattrhNubhP)}(hhh](hU)}(h>getxattr(path, name, size_t size_guess=128, namespace=u'user')h](h[)}(hpyfuse3.h]hpyfuse3.}(hjkhhhNhNubah}(h!]h#](hghheh%]h']h)]hlhmuh+hZhjghhhdocstring of pyfuse3.getxattrhKubhp)}(hgetxattrh]hgetxattr}(hjzhhhNhNubah}(h!]h#](h|h}eh%]h']h)]hlhmuh+hohjghhhjyhKubh)}(h6(path, name, size_t size_guess=128, namespace=u'user')h](h)}(hpathh]h)}(hpathh]hpath}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]hlhmuh+hhjubh)}(hnameh]h)}(hnameh]hname}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]hlhmuh+hhjubh)}(hsize_t size_guess=128h]h)}(hsize_t size_guess=128h]hsize_t size_guess=128}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]hlhmuh+hhjubh)}(hnamespace=u'user'h]h)}(hnamespace=u'user'h]hnamespace=u'user'}(hjhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]hlhmuh+hhjubeh}(h!]h#]h%]h']h)]hlhmuh+hhjghhhjyhKubeh}(h!]jaah#](jjeh%]h']h)]jpyfuse3jhj j|j!jj|j# getxattr()uh+hThjyhKhjdhhubj&)}(hhh](h.)}(hGet extended attributeh]hGet extended attribute}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjchKhjhhubh.)}(hx*path* and *name* have to be of type `str`. In Python 3.x, they may contain surrogates. Returns a value of type `bytes`.h](j=)}(h*path*h]hpath}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hj ubh and }(hj hhhNhNubj=)}(h*name*h]hname}(hj"hhhNhNubah}(h!]h#]h%]h']h)]uh+j<hj ubh have to be of type }(hj hhhNhNubjc)}(h`str`h]ji)}(hj6h]hstr}(hj8hhhNhNubah}(h!]h#](jtpypy-objeh%]h']h)]uh+jhhj4ubah}(h!]h#]h%]h']h)]refdocj refdomainjBreftypeobj refexplicitrefwarnjjjNjstruh+jbhjyhKhj ubhF. In Python 3.x, they may contain surrogates. Returns a value of type }(hj hhhNhNubjc)}(h`bytes`h]ji)}(hjZh]hbytes}(hj\hhhNhNubah}(h!]h#](jtpypy-objeh%]h']h)]uh+jhhjXubah}(h!]h#]h%]h']h)]refdocj refdomainjfreftypeobj refexplicitrefwarnjjjNjbytesuh+jbhjyhKhj ubh.}(hj hhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjchKhjhhubh.)}(hXIf 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](hZIf the caller knows the approximate size of the attribute value, it should be supplied in }(hjhhhNhNubj=)}(h *size_guess*h]h size_guess}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubh. 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).}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjchKhjhhubh.)}(hUnder 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](hUnder FreeBSD, the }(hjhhhNhNubj=)}(h *namespace*h]h namespace}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubh parameter may be set to }(hjhhhNhNubj=)}(h*system*h]hsystem}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubh or }(hjhhhNhNubj=)}(h*user*h]huser}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubhd to select the namespace for the extended attribute. For other platforms, this parameter is ignored.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjchK hjhhubh.)}(hIn contrast to the `os.getxattr` function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems.h](hIn contrast to the }(hjhhhNhNubjc)}(h `os.getxattr`h]ji)}(hjh]h os.getxattr}(hjhhhNhNubah}(h!]h#](jtpypy-objeh%]h']h)]uh+jhhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnjjjNj os.getxattruh+jbhjchK hjubhl function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjchKhjhhubeh}(h!]h#]h%]h']h)]uh+j%hjdhhhjyhKubeh}(h!]h#](pyfunctioneh%]h']h)]jOj!jPj"jQj"jRjSjTuh+hOhhhh hjchNubh>)}(hhh]h}(h!]h#]h%]h']h)]entries](hJlistdir() (in module pyfuse3)pyfuse3.listdirhNtauh+h=hh hhhdocstring of pyfuse3.listdirhNubhP)}(hhh](hU)}(h listdir(path)h](h[)}(hpyfuse3.h]hpyfuse3.}(hj<hhhNhNubah}(h!]h#](hghheh%]h']h)]hlhmuh+hZhj8hhhdocstring of pyfuse3.listdirhKubhp)}(hlistdirh]hlistdir}(hjKhhhNhNubah}(h!]h#](h|h}eh%]h']h)]hlhmuh+hohj8hhhjJhKubh)}(hpathh]h)}(hpathh]h)}(hpathh]hpath}(hjahhhNhNubah}(h!]h#]hah%]h']h)]uh+hhj]ubah}(h!]h#]h%]h']h)]hlhmuh+hhjYubah}(h!]h#]h%]h']h)]hlhmuh+hhj8hhhjJhKubeh}(h!]j2ah#](jjeh%]h']h)]jpyfuse3jhj jMj!jjMj# listdir()uh+hThjJhKhj5hhubj&)}(hhh](h.)}(h(Like `os.listdir`, but releases the GIL.h](hLike }(hjhhhNhNubjc)}(h `os.listdir`h]ji)}(hjh]h os.listdir}(hjhhhNhNubah}(h!]h#](jtpypy-objeh%]h']h)]uh+jhhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftypeobj refexplicitrefwarnjjjNj os.listdiruh+jbhdocstring of pyfuse3.listdirhKhjubh, but releases the GIL.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4hKhjhhubh.)}(hGThis function returns an iterator over the directory entries in *path*.h](h@This function returns an iterator over the directory entries in }(hjhhhNhNubj=)}(h*path*h]hpath}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubh.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4hKhjhhubh.)}(hThe returned values are of type :ref:`str `. Surrogate escape coding (cf. `PEP 383 `_) is used for directory names that do not have a string representation.h](h The returned values are of type }(hjhhhNhNubjc)}(h:ref:`str `h]h)}(hjh]hstr}(hjhhhNhNubah}(h!]h#](jtstdstd-refeh%]h']h)]uh+hhjubah}(h!]h#]h%]h']h)]refdocj refdomainjreftyperef refexplicitrefwarnjpython:textsequh+jbhj4hKhjubh . Surrogate escape coding (cf. }(hjhhhNhNubh reference)}(h5`PEP 383 `_h]hPEP 383}(hjhhhNhNubah}(h!]h#]h%]h']h)]namePEP 383refuri(http://www.python.org/dev/peps/pep-0383/uh+jhjubh target)}(h+ h]h}(h!]pep-383ah#]h%]pep 383ah']h)]refurijuh+j referencedKhjubhG) is used for directory names that do not have a string representation.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hj4hKhjhhubeh}(h!]h#]h%]h']h)]uh+j%hj5hhhjJhKubeh}(h!]h#](pyfunctioneh%]h']h)]jOj=jPj>jQj>jRjSjTuh+hOhhhh hj4hNubh>)}(hhh]h}(h!]h#]h%]h']h)]entries](hJ$get_sup_groups() (in module pyfuse3)pyfuse3.get_sup_groupshNtauh+h=hh hhh#docstring of pyfuse3.get_sup_groupshNubhP)}(hhh](hU)}(hget_sup_groups(pid)h](h[)}(hpyfuse3.h]hpyfuse3.}(hjXhhhNhNubah}(h!]h#](hghheh%]h']h)]hlhmuh+hZhjThhh#docstring of pyfuse3.get_sup_groupshKubhp)}(hget_sup_groupsh]hget_sup_groups}(hjghhhNhNubah}(h!]h#](h|h}eh%]h']h)]hlhmuh+hohjThhhjfhKubh)}(hpidh]h)}(hpidh]h)}(hpidh]hpid}(hj}hhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjyubah}(h!]h#]h%]h']h)]hlhmuh+hhjuubah}(h!]h#]h%]h']h)]hlhmuh+hhjThhhjfhKubeh}(h!]jNah#](jjeh%]h']h)]jpyfuse3jhj jij!jjij#get_sup_groups()uh+hThjfhKhjQhhubj&)}(hhh](h.)}(h'Return supplementary group ids of *pid*h](h"Return supplementary group ids of }(hjhhhNhNubj=)}(h*pid*h]hpid}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjubeh}(h!]h#]h%]h']h)]uh+h-hjPhKhjhhubh.)}(hThis 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](hPThis function is relatively expensive because it has to read the group ids from }(hjhhhNhNubji)}(h``/proc/[pid]/status``h]h/proc/[pid]/status}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhhjubhN. For the same reason, it will also not work on systems that do not provide a }(hjhhhNhNubji)}(h ``/proc``h]h/proc}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+jhhjubh file system.}(hjhhhNhNubeh}(h!]h#]h%]h']h)]uh+h-hjPhKhjhhubh.)}(hReturns a set.h]hReturns a set.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjPhKhjhhubeh}(h!]h#]h%]h']h)]uh+j%hjQhhhjfhKubeh}(h!]h#](pyfunctioneh%]h']h)]jOjjPj jQj jRjSjTuh+hOhhhh hjPhNubh>)}(hhh]h}(h!]h#]h%]h']h)]entries](hJsyncfs() (in module pyfuse3)pyfuse3.syncfshNtauh+h=hh hhhdocstring of pyfuse3.syncfshNubhP)}(hhh](hU)}(h syncfs(path)h](h[)}(hpyfuse3.h]hpyfuse3.}(hj#hhhNhNubah}(h!]h#](hghheh%]h']h)]hlhmuh+hZhjhhhdocstring of pyfuse3.syncfshKubhp)}(hsyncfsh]hsyncfs}(hj2hhhNhNubah}(h!]h#](h|h}eh%]h']h)]hlhmuh+hohjhhhj1hKubh)}(hpathh]h)}(hpathh]h)}(hpathh]hpath}(hjHhhhNhNubah}(h!]h#]hah%]h']h)]uh+hhjDubah}(h!]h#]h%]h']h)]hlhmuh+hhj@ubah}(h!]h#]h%]h']h)]hlhmuh+hhjhhhj1hKubeh}(h!]jah#](jjeh%]h']h)]jpyfuse3jhj j4j!jhj4j#syncfs()uh+hThj1hKhjhhubj&)}(hhh](h.)}(h!Sync filesystem mounted at *path*h](hSync filesystem mounted at }(hjnhhhNhNubj=)}(h*path*h]hpath}(hjvhhhNhNubah}(h!]h#]h%]h']h)]uh+j<hjnubeh}(h!]h#]h%]h']h)]uh+h-hjhKhjkhhubh.)}(hThis is a Python interface to the syncfs(2) system call. There is no particular relation to libfuse, it is provided by pyfuse3 as a convience.h]hThis is a Python interface to the syncfs(2) system call. There is no particular relation to libfuse, it is provided by pyfuse3 as a convience.}(hjhhhNhNubah}(h!]h#]h%]h']h)]uh+h-hjhKhjkhhubeh}(h!]h#]h%]h']h)]uh+j%hjhhhj1hKubeh}(h!]h#](pyfunctioneh%]h']h)]jOjjPjjQjjRjSjTuh+hOhhhh hjhNubeh}(h!]utility-functionsah#]h%]utility functionsah']h)]uh+h hhhhhh,hKubah}(h!]h#]h%]h']h)]sourceh,uh+hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encodingutf-8input_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh, _destinationN _config_files]file_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjj%j"u nametypes}(jj%uh!}(jh hLhVjajgj2j8j"jjNjTjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.pyfuse3-3.4.0/doc/html/_sources/0000755000175000017500000000000014663711152016433 5ustar useruser00000000000000pyfuse3-3.4.0/doc/html/_sources/about.rst.txt0000644000175000017500000000012014245446437021115 0ustar useruser00000000000000======= About ======= .. include:: ../README.rst :start-after: start-intro pyfuse3-3.4.0/doc/html/_sources/asyncio.rst.txt0000644000175000017500000000101614663705673021461 0ustar useruser00000000000000.. _asyncio: ================= asyncio Support ================= By default, pyfuse3 uses asynchronous I/O using Trio_ (and most of the documentation assumes that you are using Trio). If you'd rather use asyncio, import the *pyfuse3.asyncio* module (*pyfuse3_asyncio* in 3.3.0 and earlier) and call its *enable()* function before using *pyfuse3*. For example:: import pyfuse3 import pyfuse3.asyncio pyfuse3.asyncio.enable() # Use pyfuse3 as usual from here on. .. _Trio: https://github.com/python-trio/trio pyfuse3-3.4.0/doc/html/_sources/changes.rst.txt0000644000175000017500000000003414245446437021417 0ustar useruser00000000000000.. include:: ../Changes.rst pyfuse3-3.4.0/doc/html/_sources/data.rst.txt0000644000175000017500000001133114663705673020726 0ustar useruser00000000000000================= Data Structures ================= .. currentmodule:: pyfuse3 .. py:data:: ENOATTR This errorcode is unfortunately missing in the `errno` module, so it is provided by pyfuse3 instead. .. py:data:: ROOT_INODE The inode of the root directory, i.e. the mount point of the file system. .. py:data:: RENAME_EXCHANGE A flag that may be passed to the `~Operations.rename` handler. When passed, the handler must atomically exchange the two paths (which must both exist). .. py:data:: RENAME_NOREPLACE A flag that may be passed to the `~Operations.rename` handler. When passed, the handler must not replace an existing target. .. py:data:: default_options This is a recommended set of options that should be passed to `pyfuse3.init` to get reasonable behavior and performance. pyfuse3 is compatible with any other combination of options as well, but you should only deviate from the defaults with good reason. (The :samp:`fsname=` option is guaranteed never to be included in the default options, so you can always safely add it to the set). The default options are: * ``default_permissions`` enables permission checking by kernel. Without this any umask (or uid/gid) would not have an effect. .. autoexception:: FUSEError .. autoclass currently doesn't work for NewTypes .. https://github.com/sphinx-doc/sphinx/issues/11552 .. class:: FileHandleT A subclass of `int`, representing an integer file handle produced by a `~Operations.create`, `~Operations.open`, or `~Operations.opendir` call. .. class:: FileNameT A subclass of `bytes`, representing a file name, with no embedded zero-bytes (``\0``). .. class:: FlagT A subclass of `int`, representing flags modifying the behavior of an operation. .. class:: InodeT A subclass of `int`, representing an inode number. .. class:: ModeT A subclass of `int`, representing a file mode. .. class:: XAttrNameT A subclass of `bytes`, representing an extended attribute name, with no embedded zero-bytes (``\0``). .. autoclass:: RequestContext .. attribute:: pid .. attribute:: uid .. attribute:: gid .. attribute:: umask .. autoclass:: StatvfsData .. attribute:: f_bsize .. attribute:: f_frsize .. attribute:: f_blocks .. attribute:: f_bfree .. attribute:: f_bavail .. attribute:: f_files .. attribute:: f_ffree .. attribute:: f_favail .. attribute:: f_namemax .. autoclass:: EntryAttributes .. autoattribute:: st_ino .. autoattribute:: generation .. autoattribute:: entry_timeout .. autoattribute:: attr_timeout .. autoattribute:: st_mode .. autoattribute:: st_nlink .. autoattribute:: st_uid .. autoattribute:: st_gid .. autoattribute:: st_rdev .. autoattribute:: st_size .. autoattribute:: st_blksize .. autoattribute:: st_blocks .. autoattribute:: st_atime_ns .. autoattribute:: st_ctime_ns .. autoattribute:: st_mtime_ns .. autoclass:: FileInfo .. autoattribute:: fh This attribute must be set to the file handle to be returned from `Operations.open`. .. autoattribute:: direct_io If true, signals to the kernel that this file should not be cached or buffered. .. autoattribute:: keep_cache If true, signals to the kernel that previously cached data for this inode is still valid, and should not be invalidated. .. autoattribute:: nonseekable If true, indicates that the file does not support seeking. .. autoclass:: SetattrFields .. attribute:: update_atime If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_atime_ns` field contains an updated value. .. attribute:: update_mtime If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_mtime_ns` field contains an updated value. .. attribute:: update_mode If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_mode` field contains an updated value. .. attribute:: update_uid If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_uid` field contains an updated value. .. attribute:: update_gid If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_gid` field contains an updated value. .. attribute:: update_size If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_size` field contains an updated value. .. autoclass:: ReaddirToken An identifier for a particular `~Operations.readdir` invocation. pyfuse3-3.4.0/doc/html/_sources/example.rst.txt0000644000175000017500000000145114245446437021446 0ustar useruser00000000000000.. _example file system: ====================== Example File Systems ====================== pyfuse3 comes with several example file systems in the :file:`examples` directory of the release tarball. For completeness, these examples are also included here. Single-file, Read-only File System ================================== (shipped as :file:`examples/lltest.py`) .. literalinclude:: ../examples/hello.py :linenos: :language: python In-memory File System ===================== (shipped as :file:`examples/tmpfs.py`) .. literalinclude:: ../examples/tmpfs.py :linenos: :language: python Passthrough / Overlay File System ================================= (shipped as :file:`examples/passthroughfs.py`) .. literalinclude:: ../examples/passthroughfs.py :linenos: :language: python pyfuse3-3.4.0/doc/html/_sources/fuse_api.rst.txt0000644000175000017500000000110114663705673021602 0ustar useruser00000000000000==================== FUSE API Functions ==================== .. currentmodule:: pyfuse3 .. autofunction:: init .. autofunction:: main .. autofunction:: terminate .. autofunction:: close .. autofunction:: invalidate_inode .. autofunction:: invalidate_entry .. autofunction:: invalidate_entry_async .. autofunction:: notify_store .. autofunction:: readdir_reply .. py:data:: trio_token Set to the value returned by `trio.lowlevel.current_trio_token` while `main` is running. Can be used by other threads to run code in the main loop through `trio.from_thread.run`. pyfuse3-3.4.0/doc/html/_sources/general.rst.txt0000644000175000017500000000717614245446437021442 0ustar useruser00000000000000===================== General Information ===================== .. currentmodule:: pyfuse3 .. _getting_started: Getting started =============== A file system is implemented by subclassing the `pyfuse3.Operations` class and implementing the various request handlers. The handlers respond to requests received from the FUSE kernel module and perform functions like looking up the inode given a file name, looking up attributes of an inode, opening a (file) inode for reading or writing or listing the contents of a (directory) inode. By default, pyfuse3 uses asynchronous I/O using Trio_, and most of the documentation assumes that you are using Trio. If you'd rather use asyncio, take a look at :ref:`asyncio Support `. If you would like to use Trio (which is recommended) but you have not yet used Trio before, please read the `Trio tutorial`_ first. An instance of the operations class is passed to `pyfuse3.init` to mount the file system. To enter the request handling loop, run `pyfuse3.main` in a trio event loop. This function will return when the file system should be unmounted again, which is done by calling `pyfuse3.close`. All character data (directory entry names, extended attribute names and values, symbolic link targets etc) are passed as `bytes` and must be returned as `bytes`. For easier debugging, it is strongly recommended that applications using pyfuse3 also make use of the faulthandler_ module. .. _faulthandler: http://docs.python.org/3/library/faulthandler.html .. _Trio tutorial: https://trio.readthedocs.io/en/latest/tutorial.html .. _Trio: https://github.com/python-trio/trio Lookup Counts ============= Most file systems need to keep track which inodes are currently known to the kernel. This is, for example, necessary to correctly implement the *unlink* system call: when unlinking a directory entry whose associated inode is currently opened, the file system must defer removal of the inode (and thus the file contents) until it is no longer in use by any process. FUSE file systems achieve this by using "lookup counts". A lookup count is a number that's associated with an inode. An inode with a lookup count of zero is currently not known to the kernel. This means that if there are no directory entries referring to such an inode it can be safely removed, or (if a file system implements dynamic inode numbers), the inode number can be safely recycled. The lookup count of an inode is increased by every operation that could make the inode "known" to the kernel. This includes e.g. `~Operations.lookup`, `~Operations.create` and `~Operations.readdir` (to determine if a given request handler affects the lookup count, please refer to its description in the `Operations` class). The lookup count is decreased by calls to the `~Operations.forget` handler. FUSE and VFS Locking ==================== FUSE and the kernel's VFS layer provide some basic locking that FUSE file systems automatically take advantage of. Specifically: * Calls to `~Operations.rename`, `~Operations.create`, `~Operations.symlink`, `~Operations.mknod`, `~Operations.link` and `~Operations.mkdir` acquire a write-lock on the inode of the directory in which the respective operation takes place (two in case of rename). * Calls to `~Operations.lookup` acquire a read-lock on the inode of the parent directory (meaning that lookups in the same directory may run concurrently, but never at the same time as e.g. a rename or mkdir operation). * Unless writeback caching is enabled, calls to `~Operations.write` for the same inode are automatically serialized (i.e., there are never concurrent calls for the same inode even when multithreading is enabled). pyfuse3-3.4.0/doc/html/_sources/gotchas.rst.txt0000644000175000017500000000154514245446437021447 0ustar useruser00000000000000================ Common Gotchas ================ .. currentmodule:: pyfuse3 This chapter lists some common gotchas that should be avoided. Removing inodes in unlink handler ================================= If your file system is mounted at :file:`mnt`, the following code should complete without errors:: with open('mnt/file_one', 'w+') as fh1: fh1.write('foo') fh1.flush() with open('mnt/file_one', 'a') as fh2: os.unlink('mnt/file_one') assert 'file_one' not in os.listdir('mnt') fh2.write('bar') os.close(os.dup(fh1.fileno())) fh1.seek(0) assert fh1.read() == 'foobar' If you're getting an error, then you probably did a mistake when implementing the `~Operations.unlink` handler and are removing the file contents when you should be deferring removal to the `~Operations.forget` handler. pyfuse3-3.4.0/doc/html/_sources/index.rst.txt0000644000175000017500000000062714245446437021126 0ustar useruser00000000000000============================= pyfuse3 Documentation ============================= Table of Contents ----------------- .. module:: pyfuse3 .. toctree:: :maxdepth: 1 about.rst install.rst general.rst asyncio.rst fuse_api.rst data.rst operations.rst util.rst gotchas.rst example.rst changes.rst Indices and tables ------------------ * :ref:`genindex` * :ref:`search` pyfuse3-3.4.0/doc/html/_sources/install.rst.txt0000644000175000017500000000424514663705673021471 0ustar useruser00000000000000============== Installation ============== .. highlight:: sh Dependencies ============ In order to build and run pyfuse3 you need the following software: * Linux kernel 3.9 or newer. * Version 3.3.0 or newer of the libfuse_ library, including development headers (typically distributions provide them in a *libfuse3-devel* or *libfuse3-dev* package). * Python_ 3.8 or newer installed with development headers * The Trio_ Python module, version 0.7 or newer. * The `setuptools`_ Python module, version 1.0 or newer. * the `pkg-config`_ tool * the `attr`_ library * A C compiler (only for building) To run the unit tests, you will need * The `py.test`_ Python module, version 3.3.0 or newer Stable releases =============== To install a stable pyfuse3 release: 1. Download and unpack the release tarball from https://pypi.python.org/pypi/pyfuse3/ 2. Run ``python3 setup.py build_ext --inplace`` to build the C extension 3. Run ``python3 -m pytest test/`` to run a self-test. If this fails, ask for help on the `FUSE mailing list`_ or report a bug in the `issue tracker `_. 4. To install system-wide for all users, run ``sudo python setup.py install``. To install into :file:`~/.local`, run ``python3 setup.py install --user``. Development Version =================== If you have checked out the unstable development version, a bit more effort is required. You need to also have Cython_ (0.29 or newer) and Sphinx_ installed, and the necessary commands are:: python3 setup.py build_cython python3 setup.py build_ext --inplace python3 -m pytest test/ sphinx-build -b html rst doc/html python3 setup.py install .. _Cython: http://www.cython.org/ .. _Sphinx: http://sphinx.pocoo.org/ .. _Python: http://www.python.org/ .. _Trio: https://github.com/python-trio/trio .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel .. _`py.test`: https://pypi.python.org/pypi/pytest/ .. _libfuse: http://github.com/libfuse/libfuse .. _attr: http://savannah.nongnu.org/projects/attr/ .. _`pkg-config`: http://www.freedesktop.org/wiki/Software/pkg-config .. _setuptools: https://pypi.python.org/pypi/setuptools pyfuse3-3.4.0/doc/html/_sources/operations.rst.txt0000644000175000017500000000235114245446437022176 0ustar useruser00000000000000================== Request Handlers ================== (You can use the :ref:`genindex` to directly jump to a specific handler). .. currentmodule:: pyfuse3 .. autoclass:: Operations :members: .. attribute:: supports_dot_lookup = True If set, indicates that the filesystem supports lookup of the ``.`` and ``..`` entries. This is required if the file system will be shared over NFS. .. attribute:: enable_writeback_cache = True Enables write-caching in the kernel if available. This means that individual write request may be buffered and merged in the kernel before they are send to the filesystem. .. attribute:: enable_acl = False Enable ACL support. When enabled, the kernel will cache and have responsibility for enforcing ACLs. ACL will be stored as xattrs and passed to userspace, which is responsible for updating the ACLs in the filesystem, keeping the file mode in sync with the ACL, and ensuring inheritance of default ACLs when new filesystem nodes are created. Note that this requires that the file system is able to parse and interpret the xattr representation of ACLs. Enabling this feature implicitly turns on the ``default_permissions`` option. pyfuse3-3.4.0/doc/html/_sources/util.rst.txt0000644000175000017500000000062714245446437020774 0ustar useruser00000000000000==================== Utility Functions ==================== 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. .. currentmodule:: pyfuse3 .. autofunction:: setxattr .. autofunction:: getxattr .. autofunction:: listdir .. autofunction:: get_sup_groups .. autofunction:: syncfs pyfuse3-3.4.0/doc/html/_static/0000755000175000017500000000000014663711152016237 5ustar useruser00000000000000pyfuse3-3.4.0/doc/html/_static/_sphinx_javascript_frameworks_compat.js0000644000175000017500000001050214314706704026274 0ustar useruser00000000000000/* * _sphinx_javascript_frameworks_compat.js * ~~~~~~~~~~ * * Compatability shim for jQuery and underscores.js. * * WILL BE REMOVED IN Sphinx 6.0 * xref RemovedInSphinx60Warning * */ /** * select a different prefix for underscore */ $u = _.noConflict(); /** * small helper function to urldecode strings * * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL */ jQuery.urldecode = function(x) { if (!x) { return x } return decodeURIComponent(x.replace(/\+/g, ' ')); }; /** * small helper function to urlencode strings */ jQuery.urlencode = encodeURIComponent; /** * This function returns the parsed url parameters of the * current request. Multiple values per key are supported, * it will always return arrays of strings for the value parts. */ jQuery.getQueryParameters = function(s) { if (typeof s === 'undefined') s = document.location.search; var parts = s.substr(s.indexOf('?') + 1).split('&'); var result = {}; for (var i = 0; i < parts.length; i++) { var tmp = parts[i].split('=', 2); var key = jQuery.urldecode(tmp[0]); var value = jQuery.urldecode(tmp[1]); if (key in result) result[key].push(value); else result[key] = [value]; } return result; }; /** * highlight a given string on a jquery object by wrapping it in * span elements with the given class name. */ jQuery.fn.highlightText = function(text, className) { function highlight(node, addItems) { if (node.nodeType === 3) { var val = node.nodeValue; var pos = val.toLowerCase().indexOf(text); if (pos >= 0 && !jQuery(node.parentNode).hasClass(className) && !jQuery(node.parentNode).hasClass("nohighlight")) { var span; var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); if (isInSVG) { span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); } else { span = document.createElement("span"); span.className = className; } span.appendChild(document.createTextNode(val.substr(pos, text.length))); node.parentNode.insertBefore(span, node.parentNode.insertBefore( document.createTextNode(val.substr(pos + text.length)), node.nextSibling)); node.nodeValue = val.substr(0, pos); if (isInSVG) { var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); var bbox = node.parentElement.getBBox(); rect.x.baseVal.value = bbox.x; rect.y.baseVal.value = bbox.y; rect.width.baseVal.value = bbox.width; rect.height.baseVal.value = bbox.height; rect.setAttribute('class', className); addItems.push({ "parent": node.parentNode, "target": rect}); } } } else if (!jQuery(node).is("button, select, textarea")) { jQuery.each(node.childNodes, function() { highlight(this, addItems); }); } } var addItems = []; var result = this.each(function() { highlight(this, addItems); }); for (var i = 0; i < addItems.length; ++i) { jQuery(addItems[i].parent).before(addItems[i].target); } return result; }; /* * backward compatibility for jQuery.browser * This will be supported until firefox bug is fixed. */ if (!jQuery.browser) { jQuery.uaMatch = function(ua) { ua = ua.toLowerCase(); var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || []; return { browser: match[ 1 ] || "", version: match[ 2 ] || "0" }; }; jQuery.browser = {}; jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; } pyfuse3-3.4.0/doc/html/_static/basic.css0000644000175000017500000003473214663711065020046 0ustar useruser00000000000000/* * basic.css * ~~~~~~~~~ * * Sphinx stylesheet -- basic theme. * * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* -- main layout ----------------------------------------------------------- */ div.clearer { clear: both; } div.section::after { display: block; content: ''; clear: left; } /* -- relbar ---------------------------------------------------------------- */ div.related { width: 100%; font-size: 90%; } div.related h3 { display: none; } div.related ul { margin: 0; padding: 0 0 0 10px; list-style: none; } div.related li { display: inline; } div.related li.right { float: right; margin-right: 5px; } /* -- sidebar --------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 10px 5px 0 10px; } div.sphinxsidebar { float: left; width: 230px; margin-left: -100%; font-size: 90%; word-wrap: break-word; overflow-wrap : break-word; } div.sphinxsidebar ul { list-style: none; } div.sphinxsidebar ul ul, div.sphinxsidebar ul.want-points { margin-left: 20px; list-style: square; } div.sphinxsidebar ul ul { margin-top: 0; margin-bottom: 0; } div.sphinxsidebar form { margin-top: 10px; } div.sphinxsidebar input { border: 1px solid #98dbcc; font-family: sans-serif; font-size: 1em; } div.sphinxsidebar #searchbox form.search { overflow: hidden; } div.sphinxsidebar #searchbox input[type="text"] { float: left; width: 80%; padding: 0.25em; box-sizing: border-box; } div.sphinxsidebar #searchbox input[type="submit"] { float: left; width: 20%; border-left: none; padding: 0.25em; box-sizing: border-box; } img { border: 0; max-width: 100%; } /* -- search page ----------------------------------------------------------- */ ul.search { margin: 10px 0 0 20px; padding: 0; } ul.search li { padding: 5px 0 5px 20px; background-image: url(file.png); background-repeat: no-repeat; background-position: 0 7px; } ul.search li a { font-weight: bold; } ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; } ul.keywordmatches li.goodmatch a { font-weight: bold; } /* -- index page ------------------------------------------------------------ */ table.contentstable { width: 90%; margin-left: auto; margin-right: auto; } table.contentstable p.biglink { line-height: 150%; } a.biglink { font-size: 1.3em; } span.linkdescr { font-style: italic; padding-top: 5px; font-size: 90%; } /* -- general index --------------------------------------------------------- */ table.indextable { width: 100%; } table.indextable td { text-align: left; vertical-align: top; } table.indextable ul { margin-top: 0; margin-bottom: 0; list-style-type: none; } table.indextable > tbody > tr > td > ul { padding-left: 0em; } table.indextable tr.pcap { height: 10px; } table.indextable tr.cap { margin-top: 10px; background-color: #f2f2f2; } img.toggler { margin-right: 3px; margin-top: 3px; cursor: pointer; } div.modindex-jumpbox { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin: 1em 0 1em 0; padding: 0.4em; } div.genindex-jumpbox { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin: 1em 0 1em 0; padding: 0.4em; } /* -- domain module index --------------------------------------------------- */ table.modindextable td { padding: 2px; border-collapse: collapse; } /* -- general body styles --------------------------------------------------- */ div.body { min-width: 360px; max-width: 800px; } div.body p, div.body dd, div.body li, div.body blockquote { -moz-hyphens: auto; -ms-hyphens: auto; -webkit-hyphens: auto; hyphens: auto; } a.headerlink { visibility: hidden; } h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, dt:hover > a.headerlink, caption:hover > a.headerlink, p.caption:hover > a.headerlink, div.code-block-caption:hover > a.headerlink { visibility: visible; } div.body p.caption { text-align: inherit; } div.body td { text-align: left; } .first { margin-top: 0 !important; } p.rubric { margin-top: 30px; font-weight: bold; } img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } img.align-center, figure.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; } .align-left { text-align: left; } .align-center { text-align: center; } .align-default { text-align: center; } .align-right { text-align: right; } /* -- sidebars -------------------------------------------------------------- */ div.sidebar, aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; padding: 7px; background-color: #ffe; width: 40%; float: right; clear: right; overflow-x: auto; } p.sidebar-title { font-weight: bold; } nav.contents, aside.topic, div.admonition, div.topic, blockquote { clear: left; } /* -- topics ---------------------------------------------------------------- */ nav.contents, aside.topic, div.topic { border: 1px solid #ccc; padding: 7px; margin: 10px 0 10px 0; } p.topic-title { font-size: 1.1em; font-weight: bold; margin-top: 10px; } /* -- admonitions ----------------------------------------------------------- */ div.admonition { margin-top: 10px; margin-bottom: 10px; padding: 7px; } div.admonition dt { font-weight: bold; } p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; } div.body p.centered { text-align: center; margin-top: 25px; } /* -- content of sidebars/topics/admonitions -------------------------------- */ div.sidebar > :last-child, aside.sidebar > :last-child, nav.contents > :last-child, aside.topic > :last-child, div.topic > :last-child, div.admonition > :last-child { margin-bottom: 0; } div.sidebar::after, aside.sidebar::after, nav.contents::after, aside.topic::after, div.topic::after, div.admonition::after, blockquote::after { display: block; content: ''; clear: both; } /* -- tables ---------------------------------------------------------------- */ table.docutils { margin-top: 10px; margin-bottom: 10px; border: 0; border-collapse: collapse; } table.align-center { margin-left: auto; margin-right: auto; } table.align-default { margin-left: auto; margin-right: auto; } table caption span.caption-number { font-style: italic; } table caption span.caption-text { } table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; border-top: 0; border-left: 0; border-right: 0; border-bottom: 1px solid #aaa; } th { text-align: left; padding-right: 5px; } table.citation { border-left: solid 1px gray; margin-left: 1px; } table.citation td { border-bottom: none; } th > :first-child, td > :first-child { margin-top: 0px; } th > :last-child, td > :last-child { margin-bottom: 0px; } /* -- figures --------------------------------------------------------------- */ div.figure, figure { margin: 0.5em; padding: 0.5em; } div.figure p.caption, figcaption { padding: 0.3em; } div.figure p.caption span.caption-number, figcaption span.caption-number { font-style: italic; } div.figure p.caption span.caption-text, figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ table.field-list td, table.field-list th { border: 0 !important; } .field-list ul { margin: 0; padding-left: 1em; } .field-list p { margin: 0; } .field-name { -moz-hyphens: manual; -ms-hyphens: manual; -webkit-hyphens: manual; hyphens: manual; } /* -- hlist styles ---------------------------------------------------------- */ table.hlist { margin: 1em 0; } table.hlist td { vertical-align: top; } /* -- object description styles --------------------------------------------- */ .sig { font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; } .sig-name, code.descname { background-color: transparent; font-weight: bold; } .sig-name { font-size: 1.1em; } code.descname { font-size: 1.2em; } .sig-prename, code.descclassname { background-color: transparent; } .optional { font-size: 1.3em; } .sig-paren { font-size: larger; } .sig-param.n { font-style: italic; } /* C++ specific styling */ .sig-inline.c-texpr, .sig-inline.cpp-texpr { font-family: unset; } .sig.c .k, .sig.c .kt, .sig.cpp .k, .sig.cpp .kt { color: #0033B3; } .sig.c .m, .sig.cpp .m { color: #1750EB; } .sig.c .s, .sig.c .sc, .sig.cpp .s, .sig.cpp .sc { color: #067D17; } /* -- other body styles ----------------------------------------------------- */ ol.arabic { list-style: decimal; } ol.loweralpha { list-style: lower-alpha; } ol.upperalpha { list-style: upper-alpha; } ol.lowerroman { list-style: lower-roman; } ol.upperroman { list-style: upper-roman; } :not(li) > ol > li:first-child > :first-child, :not(li) > ul > li:first-child > :first-child { margin-top: 0px; } :not(li) > ol > li:last-child > :last-child, :not(li) > ul > li:last-child > :last-child { margin-bottom: 0px; } ol.simple ol p, ol.simple ul p, ul.simple ol p, ul.simple ul p { margin-top: 0; } ol.simple > li:not(:first-child) > p, ul.simple > li:not(:first-child) > p { margin-top: 0; } ol.simple p, ul.simple p { margin-bottom: 0; } aside.footnote > span, div.citation > span { float: left; } aside.footnote > span:last-of-type, div.citation > span:last-of-type { padding-right: 0.5em; } aside.footnote > p { margin-left: 2em; } div.citation > p { margin-left: 4em; } aside.footnote > p:last-of-type, div.citation > p:last-of-type { margin-bottom: 0em; } aside.footnote > p:last-of-type:after, div.citation > p:last-of-type:after { content: ""; clear: both; } dl.field-list { display: grid; grid-template-columns: fit-content(30%) auto; } dl.field-list > dt { font-weight: bold; word-break: break-word; padding-left: 0.5em; padding-right: 5px; } dl.field-list > dd { padding-left: 0.5em; margin-top: 0em; margin-left: 0em; margin-bottom: 0em; } dl { margin-bottom: 15px; } dd > :first-child { margin-top: 0px; } dd ul, dd table { margin-bottom: 10px; } dd { margin-top: 3px; margin-bottom: 10px; margin-left: 30px; } dl > dd:last-child, dl > dd:last-child > :last-child { margin-bottom: 0; } dt:target, span.highlighted { background-color: #fbe54e; } rect.highlighted { fill: #fbe54e; } dl.glossary dt { font-weight: bold; font-size: 1.1em; } .versionmodified { font-style: italic; } .system-message { background-color: #fda; padding: 5px; border: 3px solid red; } .footnote:target { background-color: #ffa; } .line-block { display: block; margin-top: 1em; margin-bottom: 1em; } .line-block .line-block { margin-top: 0; margin-bottom: 0; margin-left: 1.5em; } .guilabel, .menuselection { font-family: sans-serif; } .accelerator { text-decoration: underline; } .classifier { font-style: oblique; } .classifier:before { font-style: normal; margin: 0 0.5em; content: ":"; display: inline-block; } abbr, acronym { border-bottom: dotted 1px; cursor: help; } /* -- code displays --------------------------------------------------------- */ pre { overflow: auto; overflow-y: hidden; /* fixes display issues on Chrome browsers */ } pre, div[class*="highlight-"] { clear: both; } span.pre { -moz-hyphens: none; -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; white-space: nowrap; } div[class*="highlight-"] { margin: 1em 0; } td.linenos pre { border: 0; background-color: transparent; color: #aaa; } table.highlighttable { display: block; } table.highlighttable tbody { display: block; } table.highlighttable tr { display: flex; } table.highlighttable td { margin: 0; padding: 0; } table.highlighttable td.linenos { padding-right: 0.5em; } table.highlighttable td.code { flex: 1; overflow: hidden; } .highlight .hll { display: block; } div.highlight pre, table.highlighttable pre { margin: 0; } div.code-block-caption + div { margin-top: 0; } div.code-block-caption { margin-top: 1em; padding: 2px 5px; font-size: small; } div.code-block-caption code { background-color: transparent; } table.highlighttable td.linenos, span.linenos, div.highlight span.gp { /* gp: Generic.Prompt */ user-select: none; -webkit-user-select: text; /* Safari fallback only */ -webkit-user-select: none; /* Chrome/Safari */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { padding: 0.1em 0.3em; font-style: italic; } div.code-block-caption span.caption-text { } div.literal-block-wrapper { margin: 1em 0; } code.xref, a code { background-color: transparent; font-weight: bold; } h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { background-color: transparent; } .viewcode-link { float: right; } .viewcode-back { float: right; font-family: sans-serif; } div.viewcode-block:target { margin: -1px -10px; padding: 0 10px; } /* -- math display ---------------------------------------------------------- */ img.math { vertical-align: middle; } div.body div.math p { text-align: center; } span.eqno { float: right; } span.eqno a.headerlink { position: absolute; z-index: 1; } div.math:hover a.headerlink { visibility: visible; } /* -- printout stylesheet --------------------------------------------------- */ @media print { div.document, div.documentwrapper, div.bodywrapper { margin: 0 !important; width: 100%; } div.sphinxsidebar, div.related, div.footer, #top-link { display: none; } }pyfuse3-3.4.0/doc/html/_static/classic.css0000644000175000017500000001031614663711065020376 0ustar useruser00000000000000/* * classic.css_t * ~~~~~~~~~~~~~ * * Sphinx stylesheet -- classic theme. * * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @import url("basic.css"); /* -- page layout ----------------------------------------------------------- */ html { /* CSS hack for macOS's scrollbar (see #1125) */ background-color: #FFFFFF; } body { font-family: sans-serif; font-size: 100%; background-color: #11303d; color: #000; margin: 0; padding: 0; } div.document { display: flex; background-color: #1c4e63; } div.documentwrapper { float: left; width: 100%; } div.bodywrapper { margin: 0 0 0 230px; } div.body { background-color: #ffffff; color: #000000; padding: 0 20px 30px 20px; } div.footer { color: #ffffff; width: 100%; padding: 9px 0 9px 0; text-align: center; font-size: 75%; } div.footer a { color: #ffffff; text-decoration: underline; } div.related { background-color: #133f52; line-height: 30px; color: #ffffff; } div.related a { color: #ffffff; } div.sphinxsidebar { } div.sphinxsidebar h3 { font-family: 'Trebuchet MS', sans-serif; color: #ffffff; font-size: 1.4em; font-weight: normal; margin: 0; padding: 0; } div.sphinxsidebar h3 a { color: #ffffff; } div.sphinxsidebar h4 { font-family: 'Trebuchet MS', sans-serif; color: #ffffff; font-size: 1.3em; font-weight: normal; margin: 5px 0 0 0; padding: 0; } div.sphinxsidebar p { color: #ffffff; } div.sphinxsidebar p.topless { margin: 5px 10px 10px 10px; } div.sphinxsidebar ul { margin: 10px; padding: 0; color: #ffffff; } div.sphinxsidebar a { color: #98dbcc; } div.sphinxsidebar input { border: 1px solid #98dbcc; font-family: sans-serif; font-size: 1em; } /* -- hyperlink styles ------------------------------------------------------ */ a { color: #355f7c; text-decoration: none; } a:visited { color: #355f7c; text-decoration: none; } a:hover { text-decoration: underline; } /* -- body styles ----------------------------------------------------------- */ div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 { font-family: 'Trebuchet MS', sans-serif; background-color: #f2f2f2; font-weight: normal; color: #20435c; border-bottom: 1px solid #ccc; margin: 20px -20px 10px -20px; padding: 3px 0 3px 10px; } div.body h1 { margin-top: 0; font-size: 200%; } div.body h2 { font-size: 160%; } div.body h3 { font-size: 140%; } div.body h4 { font-size: 120%; } div.body h5 { font-size: 110%; } div.body h6 { font-size: 100%; } a.headerlink { color: #c60f0f; font-size: 0.8em; padding: 0 4px 0 4px; text-decoration: none; } a.headerlink:hover { background-color: #c60f0f; color: white; } div.body p, div.body dd, div.body li, div.body blockquote { text-align: justify; line-height: 130%; } div.admonition p.admonition-title + p { display: inline; } div.admonition p { margin-bottom: 5px; } div.admonition pre { margin-bottom: 5px; } div.admonition ul, div.admonition ol { margin-bottom: 5px; } div.note { background-color: #eee; border: 1px solid #ccc; } div.seealso { background-color: #ffc; border: 1px solid #ff6; } nav.contents, aside.topic, div.topic { background-color: #eee; } div.warning { background-color: #ffe4e4; border: 1px solid #f66; } p.admonition-title { display: inline; } p.admonition-title:after { content: ":"; } pre { padding: 5px; background-color: unset; color: unset; line-height: 120%; border: 1px solid #ac9; border-left: none; border-right: none; } code { background-color: #ecf0f3; padding: 0 1px 0 1px; font-size: 0.95em; } th, dl.field-list > dt { background-color: #ede; } .warning code { background: #efc2c2; } .note code { background: #d6d6d6; } .viewcode-back { font-family: sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } div.code-block-caption { color: #efefef; background-color: #1c4e63; }pyfuse3-3.4.0/doc/html/_static/default.css0000644000175000017500000000003414314706704020372 0ustar useruser00000000000000@import url("classic.css"); pyfuse3-3.4.0/doc/html/_static/doctools.js0000644000175000017500000001057014314706704020426 0ustar useruser00000000000000/* * doctools.js * ~~~~~~~~~~~ * * Base JavaScript utilities for all Sphinx HTML documentation. * * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ "use strict"; const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ "TEXTAREA", "INPUT", "SELECT", "BUTTON", ]); const _ready = (callback) => { if (document.readyState !== "loading") { callback(); } else { document.addEventListener("DOMContentLoaded", callback); } }; /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, /** * i18n support */ TRANSLATIONS: {}, PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) gettext: (string) => { const translated = Documentation.TRANSLATIONS[string]; switch (typeof translated) { case "undefined": return string; // no translation case "string": return translated; // translation exists default: return translated[0]; // (singular, plural) translation tuple exists } }, ngettext: (singular, plural, n) => { const translated = Documentation.TRANSLATIONS[singular]; if (typeof translated !== "undefined") return translated[Documentation.PLURAL_EXPR(n)]; return n === 1 ? singular : plural; }, addTranslations: (catalog) => { Object.assign(Documentation.TRANSLATIONS, catalog.messages); Documentation.PLURAL_EXPR = new Function( "n", `return (${catalog.plural_expr})` ); Documentation.LOCALE = catalog.locale; }, /** * helper function to focus on search bar */ focusSearchBar: () => { document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** * Initialise the domain index toggle buttons */ initDomainIndexTable: () => { const toggler = (el) => { const idNumber = el.id.substr(7); const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); if (el.src.substr(-9) === "minus.png") { el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; toggledRows.forEach((el) => (el.style.display = "none")); } else { el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; toggledRows.forEach((el) => (el.style.display = "")); } }; const togglerElements = document.querySelectorAll("img.toggler"); togglerElements.forEach((el) => el.addEventListener("click", (event) => toggler(event.currentTarget)) ); togglerElements.forEach((el) => (el.style.display = "")); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, initOnKeyListeners: () => { // only install a listener if it is really needed if ( !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS ) return; document.addEventListener("keydown", (event) => { // bail for input elements if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; // bail with special keys if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { case "ArrowLeft": if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; const prevLink = document.querySelector('link[rel="prev"]'); if (prevLink && prevLink.href) { window.location.href = prevLink.href; event.preventDefault(); } break; case "ArrowRight": if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; const nextLink = document.querySelector('link[rel="next"]'); if (nextLink && nextLink.href) { window.location.href = nextLink.href; event.preventDefault(); } break; } } // some keyboard layouts may need Shift to get / switch (event.key) { case "/": if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; Documentation.focusSearchBar(); event.preventDefault(); } }); }, }; // quick alias for translations const _ = Documentation.gettext; _ready(Documentation.init); pyfuse3-3.4.0/doc/html/_static/documentation_options.js0000644000175000017500000000064414663711065023230 0ustar useruser00000000000000var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '3.4.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', FILE_SUFFIX: '.html', LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', NAVIGATION_WITH_KEYS: false, SHOW_SEARCH_SUMMARY: true, ENABLE_SEARCH_SHORTCUTS: true, };pyfuse3-3.4.0/doc/html/_static/file.png0000644000175000017500000000043614314706704017667 0ustar useruser00000000000000PNG  IHDRaIDATxR){l ۶f=@ :3~箄rX$AX-D ~ lj(P%8<<9:: PO&$ l~X&EW^4wQ}^ͣ i0/H/@F)Dzq+j[SU5h/oY G&Lfs|{3%U+S`AFIENDB`pyfuse3-3.4.0/doc/html/_static/jquery-3.6.0.js0000644000175000017500000106350414314706704020567 0ustar useruser00000000000000/*! * jQuery JavaScript Library v3.6.0 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * * Date: 2021-03-02T17:08Z */ ( function( global, factory ) { "use strict"; if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); } // Pass this if window is not defined yet } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common // enough that all such attempts are guarded in a try block. "use strict"; var arr = []; var getProto = Object.getPrototypeOf; var slice = arr.slice; var flat = arr.flat ? function( array ) { return arr.flat.call( array ); } : function( array ) { return arr.concat.apply( [], array ); }; var push = arr.push; var indexOf = arr.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var fnToString = hasOwn.toString; var ObjectFunctionString = fnToString.call( Object ); var support = {}; var isFunction = function isFunction( obj ) { // Support: Chrome <=57, Firefox <=52 // In some browsers, typeof returns "function" for HTML elements // (i.e., `typeof document.createElement( "object" ) === "function"`). // We don't want to classify *any* DOM node as a function. // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 // Plus for old WebKit, typeof returns "function" for HTML collections // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; }; var isWindow = function isWindow( obj ) { return obj != null && obj === obj.window; }; var document = window.document; var preservedScriptAttributes = { type: true, src: true, nonce: true, noModule: true }; function DOMEval( code, node, doc ) { doc = doc || document; var i, val, script = doc.createElement( "script" ); script.text = code; if ( node ) { for ( i in preservedScriptAttributes ) { // Support: Firefox 64+, Edge 18+ // Some browsers don't support the "nonce" property on scripts. // On the other hand, just using `getAttribute` is not enough as // the `nonce` attribute is reset to an empty string whenever it // becomes browsing-context connected. // See https://github.com/whatwg/html/issues/2369 // See https://html.spec.whatwg.org/#nonce-attributes // The `node.getAttribute` check was added for the sake of // `jQuery.globalEval` so that it can fake a nonce-containing node // via an object. val = node[ i ] || node.getAttribute && node.getAttribute( i ); if ( val ) { script.setAttribute( i, val ); } } } doc.head.appendChild( script ).parentNode.removeChild( script ); } function toType( obj ) { if ( obj == null ) { return obj + ""; } // Support: Android <=2.3 only (functionish RegExp) return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call( obj ) ] || "object" : typeof obj; } /* global Symbol */ // Defining this global in .eslintrc.json would create a danger of using the global // unguarded in another place, it seems safer to define global only for this module var version = "3.6.0", // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // The default length of a jQuery object is 0 length: 0, toArray: function() { return slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { // Return all the elements in a clean array if ( num == null ) { return slice.call( this ); } // Return just the one element from the set return num < 0 ? this[ num + this.length ] : this[ num ]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. each: function( callback ) { return jQuery.each( this, callback ); }, map: function( callback ) { return this.pushStack( jQuery.map( this, function( elem, i ) { return callback.call( elem, i, elem ); } ) ); }, slice: function() { return this.pushStack( slice.apply( this, arguments ) ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, even: function() { return this.pushStack( jQuery.grep( this, function( _elem, i ) { return ( i + 1 ) % 2; } ) ); }, odd: function() { return this.pushStack( jQuery.grep( this, function( _elem, i ) { return i % 2; } ) ); }, eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); }, end: function() { return this.prevObject || this.constructor(); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: arr.sort, splice: arr.splice }; jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; // Skip the boolean and the target target = arguments[ i ] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !isFunction( target ) ) { target = {}; } // Extend jQuery itself if only one argument is passed if ( i === length ) { target = this; i--; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( ( options = arguments[ i ] ) != null ) { // Extend the base object for ( name in options ) { copy = options[ name ]; // Prevent Object.prototype pollution // Prevent never-ending loop if ( name === "__proto__" || target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = Array.isArray( copy ) ) ) ) { src = target[ name ]; // Ensure proper type for the source value if ( copyIsArray && !Array.isArray( src ) ) { clone = []; } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { clone = {}; } else { clone = src; } copyIsArray = false; // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend( { // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready without the ready module isReady: true, error: function( msg ) { throw new Error( msg ); }, noop: function() {}, isPlainObject: function( obj ) { var proto, Ctor; // Detect obvious negatives // Use toString instead of jQuery.type to catch host objects if ( !obj || toString.call( obj ) !== "[object Object]" ) { return false; } proto = getProto( obj ); // Objects with no prototype (e.g., `Object.create( null )`) are plain if ( !proto ) { return true; } // Objects with prototype are plain iff they were constructed by a global Object function Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, // Evaluates a script in a provided context; falls back to the global one // if not specified. globalEval: function( code, options, doc ) { DOMEval( code, { nonce: options && options.nonce }, doc ); }, each: function( obj, callback ) { var length, i = 0; if ( isArrayLike( obj ) ) { length = obj.length; for ( ; i < length; i++ ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } else { for ( i in obj ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } return obj; }, // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; if ( arr != null ) { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? [ arr ] : arr ); } else { push.call( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { return arr == null ? -1 : indexOf.call( arr, elem, i ); }, // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit merge: function( first, second ) { var len = +second.length, j = 0, i = first.length; for ( ; j < len; j++ ) { first[ i++ ] = second[ j ]; } first.length = i; return first; }, grep: function( elems, callback, invert ) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { callbackInverse = !callback( elems[ i ], i ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ i ] ); } } return matches; }, // arg is for internal usage only map: function( elems, callback, arg ) { var length, value, i = 0, ret = []; // Go through the array, translating each of the items to their new values if ( isArrayLike( elems ) ) { length = elems.length; for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } // Go through every key on the object, } else { for ( i in elems ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } } // Flatten any nested arrays return flat( ret ); }, // A global GUID counter for objects guid: 1, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support } ); if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; } // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), function( _i, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); function isArrayLike( obj ) { // Support: real iOS 8.2 only (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, type = toType( obj ); if ( isFunction( obj ) || isWindow( obj ) ) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } var Sizzle = /*! * Sizzle CSS Selector Engine v2.3.6 * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT license * https://js.foundation/ * * Date: 2021-02-16 */ ( function( window ) { var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, // Local document vars setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, // Instance-specific data expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; } return 0; }, // Instance methods hasOwn = ( {} ).hasOwnProperty, arr = [], pop = arr.pop, pushNative = arr.push, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native // https://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { if ( list[ i ] === elem ) { return i; } } return -1; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + "ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] // or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rdescend = new RegExp( whitespace + "|>" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { "ID": new RegExp( "^#(" + identifier + ")" ), "CLASS": new RegExp( "^\\.(" + identifier + ")" ), "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), // For use in libraries implementing .is() // We use this for POS matching in `select` "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rhtml = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, // CSS escapes // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), funescape = function( escape, nonHex ) { var high = "0x" + escape.slice( 1 ) - 0x10000; return nonHex ? // Strip the backslash prefix from a non-hex escape sequence nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point // Support: IE <=11+ // For values outside the Basic Multilingual Plane (BMP), manually construct a // surrogate pair high < 0 ? String.fromCharCode( high + 0x10000 ) : String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, // CSS string/identifier serialization // https://drafts.csswg.org/cssom/#common-serializing-idioms rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, fcssescape = function( ch, asCodePoint ) { if ( asCodePoint ) { // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER if ( ch === "\0" ) { return "\uFFFD"; } // Control characters and (dependent upon position) numbers get escaped as code points return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; } // Other potentially-special ASCII characters get backslash-escaped return "\\" + ch; }, // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function() { setDocument(); }, inDisabledFieldset = addCombinator( function( elem ) { return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; }, { dir: "parentNode", next: "legend" } ); // Optimize for push.apply( _, NodeList ) try { push.apply( ( arr = slice.call( preferredDoc.childNodes ) ), preferredDoc.childNodes ); // Support: Android<4.0 // Detect silently failing push.apply // eslint-disable-next-line no-unused-expressions arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { pushNative.apply( target, slice.call( els ) ); } : // Support: IE<9 // Otherwise append directly function( target, els ) { var j = target.length, i = 0; // Can't trust NodeList.length while ( ( target[ j++ ] = els[ i++ ] ) ) {} target.length = j - 1; } }; } function Sizzle( selector, context, results, seed ) { var m, i, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document nodeType = context ? context.nodeType : 9; results = results || []; // Return early from calls with invalid selector or context if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { setDocument( context ); context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { // ID selector if ( ( m = match[ 1 ] ) ) { // Document context if ( nodeType === 9 ) { if ( ( elem = context.getElementById( m ) ) ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( elem.id === m ) { results.push( elem ); return results; } } else { return results; } // Element context } else { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( newContext && ( elem = newContext.getElementById( m ) ) && contains( context, elem ) && elem.id === m ) { results.push( elem ); return results; } } // Type selector } else if ( match[ 2 ] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); return results; } } // Take advantage of querySelectorAll if ( support.qsa && !nonnativeSelectorCache[ selector + " " ] && ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && // Support: IE 8 only // Exclude object elements ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { newSelector = selector; newContext = context; // qSA considers elements outside a scoping root when evaluating child or // descendant combinators, which is not what we want. // In such cases, we work around the behavior by prefixing every selector in the // list with an ID selector referencing the scope context. // The technique has to be used as well when a leading combinator is used // as such selectors are not recognized by querySelectorAll. // Thanks to Andrew Dupont for this technique. if ( nodeType === 1 && ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { // Expand context for sibling selectors newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; // We can use :scope instead of the ID hack if the browser // supports it & if we're not changing the context. if ( newContext !== context || !support.scope ) { // Capture the context ID, setting it first if necessary if ( ( nid = context.getAttribute( "id" ) ) ) { nid = nid.replace( rcssescape, fcssescape ); } else { context.setAttribute( "id", ( nid = expando ) ); } } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; while ( i-- ) { groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + toSelector( groups[ i ] ); } newSelector = groups.join( "," ); } try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; } catch ( qsaError ) { nonnativeSelectorCache( selector, true ); } finally { if ( nid === expando ) { context.removeAttribute( "id" ); } } } } } // All others return select( selector.replace( rtrim, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { // Only keep the most recent entries delete cache[ keys.shift() ]; } return ( cache[ key + " " ] = value ); } return cache; } /** * Mark a function for special use by Sizzle * @param {Function} fn The function to mark */ function markFunction( fn ) { fn[ expando ] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { var el = document.createElement( "fieldset" ); try { return !!fn( el ); } catch ( e ) { return false; } finally { // Remove from its parent by default if ( el.parentNode ) { el.parentNode.removeChild( el ); } // release memory in IE el = null; } } /** * Adds the same handler for all of the specified attrs * @param {String} attrs Pipe-separated list of attributes * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { var arr = attrs.split( "|" ), i = arr.length; while ( i-- ) { Expr.attrHandle[ arr[ i ] ] = handler; } } /** * Checks document order of two siblings * @param {Element} a * @param {Element} b * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b */ function siblingCheck( a, b ) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes if ( diff ) { return diff; } // Check if b follows a if ( cur ) { while ( ( cur = cur.nextSibling ) ) { if ( cur === b ) { return -1; } } } return a ? 1 : -1; } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return ( name === "input" || name === "button" ) && elem.type === type; }; } /** * Returns a function to use in pseudos for :enabled/:disabled * @param {Boolean} disabled true for :disabled; false for :enabled */ function createDisabledPseudo( disabled ) { // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable return function( elem ) { // Only certain elements can match :enabled or :disabled // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled if ( "form" in elem ) { // Check for inherited disabledness on relevant non-disabled elements: // * listed form-associated elements in a disabled fieldset // https://html.spec.whatwg.org/multipage/forms.html#category-listed // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled // * option elements in a disabled optgroup // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled // All such elements have a "form" property. if ( elem.parentNode && elem.disabled === false ) { // Option elements defer to a parent optgroup if present if ( "label" in elem ) { if ( "label" in elem.parentNode ) { return elem.parentNode.disabled === disabled; } else { return elem.disabled === disabled; } } // Support: IE 6 - 11 // Use the isDisabled shortcut property to check for disabled fieldset ancestors return elem.isDisabled === disabled || // Where there is no isDisabled, check manually /* jshint -W018 */ elem.isDisabled !== !disabled && inDisabledFieldset( elem ) === disabled; } return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property. // Some victims get caught in our net (label, legend, menu, track), but it shouldn't // even exist on them, let alone have a boolean value. } else if ( "label" in elem ) { return elem.disabled === disabled; } // Remaining elements are neither :enabled nor :disabled return false; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo( fn ) { return markFunction( function( argument ) { argument = +argument; return markFunction( function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ ( j = matchIndexes[ i ] ) ] ) { seed[ j ] = !( matches[ j ] = seed[ j ] ); } } } ); } ); } /** * Checks a node for validity as a Sizzle context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } // Expose support vars for convenience support = Sizzle.support = {}; /** * Detects XML nodes * @param {Element|Object} elem An element or a document * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { var namespace = elem && elem.namespaceURI, docElem = elem && ( elem.ownerDocument || elem ).documentElement; // Support: IE <=8 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes // https://bugs.jquery.com/ticket/4833 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); }; /** * Sets document-related variables once based on the current document * @param {Element|Object} [doc] An element or document object to use to set the document * @returns {Object} Returns the current document */ setDocument = Sizzle.setDocument = function( node ) { var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } // Update global variables document = doc; docElem = document.documentElement; documentIsHTML = !isXML( document ); // Support: IE 9 - 11+, Edge 12 - 18+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( preferredDoc != document && ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { // Support: IE 11, Edge if ( subWindow.addEventListener ) { subWindow.addEventListener( "unload", unloadHandler, false ); // Support: IE 9 - 10 only } else if ( subWindow.attachEvent ) { subWindow.attachEvent( "onunload", unloadHandler ); } } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, // Safari 4 - 5 only, Opera <=11.6 - 12.x only // IE/Edge & older browsers don't support the :scope pseudo-class. // Support: Safari 6.0 only // Safari 6.0 supports :scope but it's an alias of :root there. support.scope = assert( function( el ) { docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll( ":scope fieldset div" ).length; } ); /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) support.attributes = assert( function( el ) { el.className = "i"; return !el.getAttribute( "className" ); } ); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements support.getElementsByTagName = assert( function( el ) { el.appendChild( document.createComment( "" ) ); return !el.getElementsByTagName( "*" ).length; } ); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); // Support: IE<10 // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test support.getById = assert( function( el ) { docElem.appendChild( el ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; } ); // ID filter and find if ( support.getById ) { Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute( "id" ) === attrId; }; }; Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var elem = context.getElementById( id ); return elem ? [ elem ] : []; } }; } else { Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode( "id" ); return node && node.value === attrId; }; }; // Support: IE 6 - 7 only // getElementById is not reliable as a find shortcut Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var node, i, elems, elem = context.getElementById( id ); if ( elem ) { // Verify the id attribute node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } // Fall back on getElementsByName elems = context.getElementsByName( id ); i = 0; while ( ( elem = elems[ i++ ] ) ) { node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } } } return []; } }; } // Tag Expr.find[ "TAG" ] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); // DocumentFragment nodes don't have gEBTN } else if ( support.qsa ) { return context.querySelectorAll( tag ); } } : function( tag, context ) { var elem, tmp = [], i = 0, // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { while ( ( elem = results[ i++ ] ) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } } return tmp; } return results; }; // Class Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } }; /* QSA/matchesSelector ---------------------------------------------------------------------- */ // QSA and matchesSelector support // matchesSelector(:active) reports false when true (IE9/Opera 11.5) rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21) // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { // Build QSA regex // Regex strategy adopted from Diego Perini assert( function( el ) { var input; // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough // https://bugs.jquery.com/ticket/12359 docElem.appendChild( el ).innerHTML = "" + ""; // Support: IE8, Opera 11-12.16 // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly if ( !el.querySelectorAll( "[selected]" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push( "~=" ); } // Support: IE 11+, Edge 15 - 18+ // IE 11/Edge don't find elements on a `[name='']` query in some cases. // Adding a temporary attribute to the document before the selection works // around the issue. // Interestingly, IE 10 & older don't seem to have the issue. input = document.createElement( "input" ); input.setAttribute( "name", "" ); el.appendChild( input ); if ( !el.querySelectorAll( "[name='']" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")" ); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !el.querySelectorAll( ":checked" ).length ) { rbuggyQSA.push( ":checked" ); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibling-combinator selector` fails if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push( ".#.+[+~]" ); } // Support: Firefox <=3.6 - 5 only // Old Firefox doesn't throw on a badly-escaped identifier. el.querySelectorAll( "\\\f" ); rbuggyQSA.push( "[\\r\\n\\f]" ); } ); assert( function( el ) { el.innerHTML = "" + ""; // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment var input = document.createElement( "input" ); input.setAttribute( "type", "hidden" ); el.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute if ( el.querySelectorAll( "[name=d]" ).length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Support: IE9-11+ // IE's :disabled selector does not pick up the children of disabled fieldsets docElem.appendChild( el ).disabled = true; if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Support: Opera 10 - 11 only // Opera 10-11 does not throw on post-comma invalid pseudos el.querySelectorAll( "*,:x" ); rbuggyQSA.push( ",.*:" ); } ); } if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector ) ) ) ) { assert( function( el ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( el, "*" ); // This should fail with an exception // Gecko does not error, returns false instead matches.call( el, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); } ); } rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); /* Contains ---------------------------------------------------------------------- */ hasCompare = rnative.test( docElem.compareDocumentPosition ); // Element contains another // Purposefully self-exclusive // As in, an element does not contain itself contains = hasCompare || rnative.test( docElem.contains ) ? function( a, b ) { var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && ( adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 ) ); } : function( a, b ) { if ( b ) { while ( ( b = b.parentNode ) ) { if ( b === a ) { return true; } } } return false; }; /* Sorting ---------------------------------------------------------------------- */ // Document order sorting sortOrder = hasCompare ? function( a, b ) { // Flag for duplicate removal if ( a === b ) { hasDuplicate = true; return 0; } // Sort on method existence if only one input has compareDocumentPosition var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; if ( compare ) { return compare; } // Calculate position if both inputs belong to the same document // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected 1; // Disconnected nodes if ( compare & 1 || ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { // Choose the first element that is related to our preferred document // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( a == document || a.ownerDocument == preferredDoc && contains( preferredDoc, a ) ) { return -1; } // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( b == document || b.ownerDocument == preferredDoc && contains( preferredDoc, b ) ) { return 1; } // Maintain original order return sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; } : function( a, b ) { // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; return 0; } var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. /* eslint-disable eqeqeq */ return a == document ? -1 : b == document ? 1 : /* eslint-enable eqeqeq */ aup ? -1 : bup ? 1 : sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; // If the nodes are siblings, we can do a quick check } else if ( aup === bup ) { return siblingCheck( a, b ); } // Otherwise we need full lists of their ancestors for comparison cur = a; while ( ( cur = cur.parentNode ) ) { ap.unshift( cur ); } cur = b; while ( ( cur = cur.parentNode ) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy while ( ap[ i ] === bp[ i ] ) { i++; } return i ? // Do a sibling check if the nodes have a common ancestor siblingCheck( ap[ i ], bp[ i ] ) : // Otherwise nodes in our document sort first // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. /* eslint-disable eqeqeq */ ap[ i ] == preferredDoc ? -1 : bp[ i ] == preferredDoc ? 1 : /* eslint-enable eqeqeq */ 0; }; return document; }; Sizzle.matches = function( expr, elements ) { return Sizzle( expr, null, null, elements ); }; Sizzle.matchesSelector = function( elem, expr ) { setDocument( elem ); if ( support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[ expr + " " ] && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch ( e ) { nonnativeSelectorCache( expr, true ); } } return Sizzle( expr, document, null, [ elem ] ).length > 0; }; Sizzle.contains = function( context, elem ) { // Set document vars if needed // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( ( context.ownerDocument || context ) != document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { // Set document vars if needed // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( ( elem.ownerDocument || elem ) != document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : null; }; Sizzle.escape = function( sel ) { return ( sel + "" ).replace( rcssescape, fcssescape ); }; Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; /** * Document sorting and removing duplicates * @param {ArrayLike} results */ Sizzle.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence hasDuplicate = !support.detectDuplicates; sortInput = !support.sortStable && results.slice( 0 ); results.sort( sortOrder ); if ( hasDuplicate ) { while ( ( elem = results[ i++ ] ) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { results.splice( duplicates[ j ], 1 ); } } // Clear input after sorting to release objects // See https://github.com/jquery/sizzle/pull/225 sortInput = null; return results; }; /** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Element} elem */ getText = Sizzle.getText = function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( !nodeType ) { // If no nodeType, this is expected to be an array while ( ( node = elem[ i++ ] ) ) { // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); } } } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes return ret; }; Expr = Sizzle.selectors = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { "ATTR": function( match ) { match[ 1 ] = match[ 1 ].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ).replace( runescape, funescape ); if ( match[ 2 ] === "~=" ) { match[ 3 ] = " " + match[ 3 ] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 4 xn-component of xn+y argument ([+-]?\d*n|) 5 sign of xn-component 6 x of xn-component 7 sign of y-component 8 y of y-component */ match[ 1 ] = match[ 1 ].toLowerCase(); if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { // nth-* requires argument if ( !match[ 3 ] ) { Sizzle.error( match[ 0 ] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[ 4 ] = +( match[ 4 ] ? match[ 5 ] + ( match[ 6 ] || 1 ) : 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); // other types prohibit arguments } else if ( match[ 3 ] ) { Sizzle.error( match[ 0 ] ); } return match; }, "PSEUDO": function( match ) { var excess, unquoted = !match[ 6 ] && match[ 2 ]; if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { return null; } // Accept quoted arguments as-is if ( match[ 3 ] ) { match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && // Get excess from tokenize (recursively) ( excess = tokenize( unquoted, true ) ) && // advance to the next closing parenthesis ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { // excess is a negative index match[ 0 ] = match[ 0 ].slice( 0, excess ); match[ 2 ] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? function() { return true; } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; }, "CLASS": function( className ) { var pattern = classCache[ className + " " ]; return pattern || ( pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( className, function( elem ) { return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute( "class" ) || "" ); } ); }, "ATTR": function( name, operator, check ) { return function( elem ) { var result = Sizzle.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; /* eslint-disable max-len */ return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : operator === "$=" ? check && result.slice( -check.length ) === check : operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; /* eslint-enable max-len */ }; }, "CHILD": function( type, what, _argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; return first === 1 && last === 0 ? // Shortcut for :nth-*(n) function( elem ) { return !!elem.parentNode; } : function( elem, _context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; if ( parent ) { // :(first|last|only)-(child|of-type) if ( simple ) { while ( dir ) { node = elem; while ( ( node = node[ dir ] ) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { return false; } } // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } return true; } start = [ forward ? parent.firstChild : parent.lastChild ]; // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { // Seek `elem` from a previously-cached index // ...in a gzip-friendly way node = parent; outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; while ( ( node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start ( diff = nodeIndex = 0 ) || start.pop() ) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; break; } } } else { // Use previously-cached element index if available if ( useCache ) { // ...in a gzip-friendly way node = elem; outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex; } // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { // Use the same loop as above to seek `elem` from the start while ( ( node = ++nodeIndex && node && node[ dir ] || ( diff = nodeIndex = 0 ) || start.pop() ) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { // Cache the index of each encountered element if ( useCache ) { outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || ( outerCache[ node.uniqueID ] = {} ); uniqueCache[ type ] = [ dirruns, diff ]; } if ( node === elem ) { break; } } } } } // Incorporate the offset, then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); } }; }, "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as Sizzle does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction( function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf( seed, matched[ i ] ); seed[ idx ] = !( matches[ idx ] = matched[ i ] ); } } ) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { // Potentially complex pseudos "not": markFunction( function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? markFunction( function( seed, matches, _context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( ( elem = unmatched[ i ] ) ) { seed[ i ] = !( matches[ i ] = elem ); } } } ) : function( elem, _context, xml ) { input[ 0 ] = elem; matcher( input, null, xml, results ); // Don't keep the element (issue #299) input[ 0 ] = null; return !results.pop(); }; } ), "has": markFunction( function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; } ), "contains": markFunction( function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; }; } ), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value // being equal to the identifier C, // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test( lang || "" ) ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { if ( ( elemLang = documentIsHTML ? elem.lang : elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); return false; }; } ), // Miscellaneous "target": function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, "root": function( elem ) { return elem === docElem; }, "focus": function( elem ) { return elem === document.activeElement && ( !document.hasFocus || document.hasFocus() ) && !!( elem.type || elem.href || ~elem.tabIndex ); }, // Boolean properties "enabled": createDisabledPseudo( false ), "disabled": createDisabledPseudo( true ), "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return ( nodeName === "input" && !!elem.checked ) || ( nodeName === "option" && !!elem.selected ); }, "selected": function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { // eslint-disable-next-line no-unused-expressions elem.parentNode.selectedIndex; } return elem.selected === true; }, // Contents "empty": function( elem ) { // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { if ( elem.nodeType < 6 ) { return false; } } return true; }, "parent": function( elem ) { return !Expr.pseudos[ "empty" ]( elem ); }, // Element/input types "header": function( elem ) { return rheader.test( elem.nodeName ); }, "input": function( elem ) { return rinputs.test( elem.nodeName ); }, "button": function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === "button" || name === "button"; }, "text": function( elem ) { var attr; return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" ( ( attr = elem.getAttribute( "type" ) ) == null || attr.toLowerCase() === "text" ); }, // Position-in-collection "first": createPositionalPseudo( function() { return [ 0 ]; } ), "last": createPositionalPseudo( function( _matchIndexes, length ) { return [ length - 1 ]; } ), "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; } ), "even": createPositionalPseudo( function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; } ), "odd": createPositionalPseudo( function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; } ), "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument > length ? length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; } ), "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; } ) } }; Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { Expr.pseudos[ i ] = createInputPseudo( i ); } for ( i in { submit: true, reset: true } ) { Expr.pseudos[ i ] = createButtonPseudo( i ); } // Easy API for creating new setFilters function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); tokenize = Sizzle.tokenize = function( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || ( match = rcomma.exec( soFar ) ) ) { if ( match ) { // Don't consume trailing commas as valid soFar = soFar.slice( match[ 0 ].length ) || soFar; } groups.push( ( tokens = [] ) ); } matched = false; // Combinators if ( ( match = rcombinators.exec( soFar ) ) ) { matched = match.shift(); tokens.push( { value: matched, // Cast descendant combinators to space type: match[ 0 ].replace( rtrim, " " ) } ); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || ( match = preFilters[ type ]( match ) ) ) ) { matched = match.shift(); tokens.push( { value: matched, type: type, matches: match } ); soFar = soFar.slice( matched.length ); } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens return parseOnly ? soFar.length : soFar ? Sizzle.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { selector += tokens[ i ].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, skip = combinator.next, key = skip || dir, checkNonElements = base && key === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } return false; } : // Check against all ancestor/preceding elements function( elem, context, xml ) { var oldCache, uniqueCache, outerCache, newCache = [ dirruns, doneName ]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; } } } } else { while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { outerCache = elem[ expando ] || ( elem[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ elem.uniqueID ] || ( outerCache[ elem.uniqueID ] = {} ); if ( skip && skip === elem.nodeName.toLowerCase() ) { elem = elem[ dir ] || elem; } else if ( ( oldCache = uniqueCache[ key ] ) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return ( newCache[ 2 ] = oldCache[ 2 ] ); } else { // Reuse newcache so results back-propagate to previous elements uniqueCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { return true; } } } } } return false; }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[ i ]( elem, context, xml ) ) { return false; } } return true; } : matchers[ 0 ]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { Sizzle( selector, contexts[ i ], results ); } return results; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( ( elem = unmatched[ i ] ) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction( function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results : matcherIn; // Find primary matches if ( matcher ) { matcher( matcherIn, matcherOut, context, xml ); } // Apply postFilter if ( postFilter ) { temp = condense( matcherOut, postMap ); postFilter( temp, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { if ( ( elem = temp[ i ] ) ) { matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); } } } if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { if ( ( elem = matcherOut[ i ] ) ) { // Restore matcherIn since elem is not yet a final match temp.push( ( matcherIn[ i ] = elem ) ); } } postFinder( null, ( matcherOut = [] ), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { if ( ( elem = matcherOut[ i ] ) && ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { seed[ temp ] = !( results[ temp ] = elem ); } } } // Add elements to results, through postFinder if defined } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } } ); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[ 0 ].type ], implicitRelative = leadingRelative || Expr.relative[ " " ], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( ( checkContext = context ).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[ j ].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*` tokens .slice( 0, i - 1 ) .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), j < len && toSelector( tokens ) ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, outermost ) { var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, // We must always have either seed elements or outermost context elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), // Use integer dirruns iff this is the outermost matcher dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), len = elems.length; if ( outermost ) { // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq outermostContext = context == document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { if ( byElement && elem ) { j = 0; // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( !context && elem.ownerDocument != document ) { setDocument( elem ); xml = !documentIsHTML; } while ( ( matcher = elementMatchers[ j++ ] ) ) { if ( matcher( elem, context || document, xml ) ) { results.push( elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( ( elem = !matcher && elem ) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // `i` is now the count of elements visited above, and adding it to `matchedCount` // makes the latter nonnegative. matchedCount += i; // Apply set filters to unmatched elements // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` // equals `i`), unless we didn't visit _any_ elements in the above loop because we have // no element matchers and no seed. // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that // case, which will result in a "00" `matchedCount` that differs from `i` but is also // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; while ( ( matcher = setMatchers[ j++ ] ) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !( unmatched[ i ] || setMatched[ i ] ) ) { setMatched[ i ] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { Sizzle.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; return bySet ? markFunction( superMatcher ) : superMatcher; } compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { cached = matcherFromTokens( match[ i ] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; }; /** * A low-level selection function that works with Sizzle's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled * selector function built with Sizzle.compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize( ( selector = compiled.selector || selector ) ); results = results || []; // Try to minimize operations if there is only one selector in the list and no seed // (the latter of which guarantees us context) if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID tokens = match[ 0 ] = match[ 0 ].slice( 0 ); if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { context = ( Expr.find[ "ID" ]( token.matches[ 0 ] .replace( runescape, funescape ), context ) || [] )[ 0 ]; if ( !context ) { return results; // Precompiled matchers will still verify ancestry, so step up a level } else if ( compiled ) { context = context.parentNode; } selector = selector.slice( tokens.shift().value.length ); } // Fetch a seed set for right-to-left matching i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; while ( i-- ) { token = tokens[ i ]; // Abort if we hit a combinator if ( Expr.relative[ ( type = token.type ) ] ) { break; } if ( ( find = Expr.find[ type ] ) ) { // Search, expanding context for leading sibling combinators if ( ( seed = find( token.matches[ 0 ].replace( runescape, funescape ), rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || context ) ) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && toSelector( tokens ); if ( !selector ) { push.apply( results, seed ); return results; } break; } } } } // Compile and execute a filtering function if one is not provided // Provide `match` to avoid retokenization if we modified the selector above ( compiled || compile( selector, match ) )( seed, context, !documentIsHTML, results, !context || rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; }; // One-time assignments // Sort stability support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function support.detectDuplicates = !!hasDuplicate; // Initialize against the default document setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* support.sortDetached = assert( function( el ) { // Should return 1, but returns 4 (following) return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; } ); // Support: IE<8 // Prevent attribute/property "interpolation" // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !assert( function( el ) { el.innerHTML = ""; return el.firstChild.getAttribute( "href" ) === "#"; } ) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } } ); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") if ( !support.attributes || !assert( function( el ) { el.innerHTML = ""; el.firstChild.setAttribute( "value", "" ); return el.firstChild.getAttribute( "value" ) === ""; } ) ) { addHandle( "value", function( elem, _name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } } ); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies if ( !assert( function( el ) { return el.getAttribute( "disabled" ) == null; } ) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : null; } } ); } return Sizzle; } )( window ); jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; // Deprecated jQuery.expr[ ":" ] = jQuery.expr.pseudos; jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; jQuery.escapeSelector = Sizzle.escape; var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }; var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }; var rneedsContext = jQuery.expr.match.needsContext; function nodeName( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); } var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { if ( isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { return !!qualifier.call( elem, i, elem ) !== not; } ); } // Single element if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; } ); } // Arraylike of elements (jQuery, arguments, Array) if ( typeof qualifier !== "string" ) { return jQuery.grep( elements, function( elem ) { return ( indexOf.call( qualifier, elem ) > -1 ) !== not; } ); } // Filtered directly for both simple and complex selectors return jQuery.filter( qualifier, elements, not ); } jQuery.filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } if ( elems.length === 1 && elem.nodeType === 1 ) { return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; } return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }; jQuery.fn.extend( { find: function( selector ) { var i, ret, len = this.length, self = this; if ( typeof selector !== "string" ) { return this.pushStack( jQuery( selector ).filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } } ) ); } ret = this.pushStack( [] ); for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } return len > 1 ? jQuery.uniqueSort( ret ) : ret; }, filter: function( selector ) { return this.pushStack( winnow( this, selector || [], false ) ); }, not: function( selector ) { return this.pushStack( winnow( this, selector || [], true ) ); }, is: function( selector ) { return !!winnow( this, // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". typeof selector === "string" && rneedsContext.test( selector ) ? jQuery( selector ) : selector || [], false ).length; } } ); // Initialize a jQuery object // A central reference to the root jQuery(document) var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) // Strict HTML recognition (#11290: must start with <) // Shortcut simple #id case for speed rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function( selector, context, root ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // Method init() accepts an alternate rootjQuery // so migrate can support jQuery.sub (gh-2101) root = root || rootjQuery; // Handle HTML strings if ( typeof selector === "string" ) { if ( selector[ 0 ] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && ( match[ 1 ] || !context ) ) { // HANDLE: $(html) -> $(array) if ( match[ 1 ] ) { context = context instanceof jQuery ? context[ 0 ] : context; // Option to run scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( match[ 1 ], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { // Properties of context are called as methods if possible if ( isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes } else { this.attr( match, context[ match ] ); } } } return this; // HANDLE: $(#id) } else { elem = document.getElementById( match[ 2 ] ); if ( elem ) { // Inject the element directly into the jQuery object this[ 0 ] = elem; this.length = 1; } return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || root ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready } else if ( isFunction( selector ) ) { return root.ready !== undefined ? root.ready( selector ) : // Execute immediately if ready is not present selector( jQuery ); } return jQuery.makeArray( selector, this ); }; // Give the init function the jQuery prototype for later instantiation init.prototype = jQuery.fn; // Initialize central reference rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, // Methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend( { has: function( target ) { var targets = jQuery( target, this ), l = targets.length; return this.filter( function() { var i = 0; for ( ; i < l; i++ ) { if ( jQuery.contains( this, targets[ i ] ) ) { return true; } } } ); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery( selectors ); // Positional selectors never match, since there's no _selection_ context if ( !rneedsContext.test( selectors ) ) { for ( ; i < l; i++ ) { for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { // Always skip document fragments if ( cur.nodeType < 11 && ( targets ? targets.index( cur ) > -1 : // Don't pass non-elements to Sizzle cur.nodeType === 1 && jQuery.find.matchesSelector( cur, selectors ) ) ) { matched.push( cur ); break; } } } } return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); }, // Determine the position of an element within the set index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; } // Index in selector if ( typeof elem === "string" ) { return indexOf.call( jQuery( elem ), this[ 0 ] ); } // Locate the position of the desired element return indexOf.call( this, // If it receives a jQuery object, the first element is used elem.jquery ? elem[ 0 ] : elem ); }, add: function( selector, context ) { return this.pushStack( jQuery.uniqueSort( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); } } ); function sibling( cur, dir ) { while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} return cur; } jQuery.each( { parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return dir( elem, "parentNode" ); }, parentsUntil: function( elem, _i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, nextUntil: function( elem, _i, until ) { return dir( elem, "nextSibling", until ); }, prevUntil: function( elem, _i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return siblings( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return siblings( elem.firstChild ); }, contents: function( elem ) { if ( elem.contentDocument != null && // Support: IE 11+ // elements with no `data` attribute has an object // `contentDocument` with a `null` prototype. getProto( elem.contentDocument ) ) { return elem.contentDocument; } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only // Treat the template element as a regular one in browsers that // don't support it. if ( nodeName( elem, "template" ) ) { elem = elem.content || elem; } return jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var matched = jQuery.map( this, fn, until ); if ( name.slice( -5 ) !== "Until" ) { selector = until; } if ( selector && typeof selector === "string" ) { matched = jQuery.filter( selector, matched ); } if ( this.length > 1 ) { // Remove duplicates if ( !guaranteedUnique[ name ] ) { jQuery.uniqueSort( matched ); } // Reverse order for parents* and prev-derivatives if ( rparentsprev.test( name ) ) { matched.reverse(); } } return this.pushStack( matched ); }; } ); var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); // Convert String-formatted options into Object-formatted ones function createOptions( options ) { var object = {}; jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { object[ flag ] = true; } ); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? createOptions( options ) : jQuery.extend( {}, options ); var // Flag to know if list is currently firing firing, // Last fire value for non-forgettable lists memory, // Flag to know if list was already fired fired, // Flag to prevent firing locked, // Actual callback list list = [], // Queue of execution data for repeatable lists queue = [], // Index of currently firing callback (modified by add/remove as needed) firingIndex = -1, // Fire callbacks fire = function() { // Enforce single-firing locked = locked || options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes fired = firing = true; for ( ; queue.length; firingIndex = -1 ) { memory = queue.shift(); while ( ++firingIndex < list.length ) { // Run callback and check for early termination if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && options.stopOnFalse ) { // Jump to end and forget the data so .add doesn't re-fire firingIndex = list.length; memory = false; } } } // Forget the data if we're done with it if ( !options.memory ) { memory = false; } firing = false; // Clean up if we're done firing for good if ( locked ) { // Keep an empty list if we have data for future add calls if ( memory ) { list = []; // Otherwise, this object is spent } else { list = ""; } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // If we have memory from a past run, we should fire after adding if ( memory && !firing ) { firingIndex = list.length - 1; queue.push( memory ); } ( function add( args ) { jQuery.each( args, function( _, arg ) { if ( isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && toType( arg ) !== "string" ) { // Inspect recursively add( arg ); } } ); } )( arguments ); if ( memory && !firing ) { fire(); } } return this; }, // Remove a callback from the list remove: function() { jQuery.each( arguments, function( _, arg ) { var index; while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( index <= firingIndex ) { firingIndex--; } } } ); return this; }, // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { return fn ? jQuery.inArray( fn, list ) > -1 : list.length > 0; }, // Remove all callbacks from the list empty: function() { if ( list ) { list = []; } return this; }, // Disable .fire and .add // Abort any current/pending executions // Clear all callbacks and values disable: function() { locked = queue = []; list = memory = ""; return this; }, disabled: function() { return !list; }, // Disable .fire // Also disable .add unless we have memory (since it would have no effect) // Abort any pending executions lock: function() { locked = queue = []; if ( !memory && !firing ) { list = memory = ""; } return this; }, locked: function() { return !!locked; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; queue.push( args ); if ( !firing ) { fire(); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; function Identity( v ) { return v; } function Thrower( ex ) { throw ex; } function adoptValue( value, resolve, reject, noValue ) { var method; try { // Check for promise aspect first to privilege synchronous behavior if ( value && isFunction( ( method = value.promise ) ) ) { method.call( value ).done( resolve ).fail( reject ); // Other thenables } else if ( value && isFunction( ( method = value.then ) ) ) { method.call( value, resolve, reject ); // Other non-thenables } else { // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: // * false: [ value ].slice( 0 ) => resolve( value ) // * true: [ value ].slice( 1 ) => resolve() resolve.apply( undefined, [ value ].slice( noValue ) ); } // For Promises/A+, convert exceptions into rejections // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in // Deferred#then to conditionally suppress rejection. } catch ( value ) { // Support: Android 4.0 only // Strict mode functions invoked without .call/.apply get global-object context reject.apply( undefined, [ value ] ); } } jQuery.extend( { Deferred: function( func ) { var tuples = [ // action, add listener, callbacks, // ... .then handlers, argument index, [final state] [ "notify", "progress", jQuery.Callbacks( "memory" ), jQuery.Callbacks( "memory" ), 2 ], [ "resolve", "done", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), 0, "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), 1, "rejected" ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, "catch": function( fn ) { return promise.then( null, fn ); }, // Keep pipe for back-compat pipe: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( _i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; // deferred.progress(function() { bind to newDefer or newDefer.notify }) // deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.fail(function() { bind to newDefer or newDefer.reject }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) .fail( newDefer.reject ); } else { newDefer[ tuple[ 0 ] + "With" ]( this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); }, then: function( onFulfilled, onRejected, onProgress ) { var maxDepth = 0; function resolve( depth, deferred, handler, special ) { return function() { var that = this, args = arguments, mightThrow = function() { var returned, then; // Support: Promises/A+ section 2.3.3.3.3 // https://promisesaplus.com/#point-59 // Ignore double-resolution attempts if ( depth < maxDepth ) { return; } returned = handler.apply( that, args ); // Support: Promises/A+ section 2.3.1 // https://promisesaplus.com/#point-48 if ( returned === deferred.promise() ) { throw new TypeError( "Thenable self-resolution" ); } // Support: Promises/A+ sections 2.3.3.1, 3.5 // https://promisesaplus.com/#point-54 // https://promisesaplus.com/#point-75 // Retrieve `then` only once then = returned && // Support: Promises/A+ section 2.3.4 // https://promisesaplus.com/#point-64 // Only check objects and functions for thenability ( typeof returned === "object" || typeof returned === "function" ) && returned.then; // Handle a returned thenable if ( isFunction( then ) ) { // Special processors (notify) just wait for resolution if ( special ) { then.call( returned, resolve( maxDepth, deferred, Identity, special ), resolve( maxDepth, deferred, Thrower, special ) ); // Normal processors (resolve) also hook into progress } else { // ...and disregard older resolution values maxDepth++; then.call( returned, resolve( maxDepth, deferred, Identity, special ), resolve( maxDepth, deferred, Thrower, special ), resolve( maxDepth, deferred, Identity, deferred.notifyWith ) ); } // Handle all other returned values } else { // Only substitute handlers pass on context // and multiple values (non-spec behavior) if ( handler !== Identity ) { that = undefined; args = [ returned ]; } // Process the value(s) // Default process is resolve ( special || deferred.resolveWith )( that, args ); } }, // Only normal processors (resolve) catch and reject exceptions process = special ? mightThrow : function() { try { mightThrow(); } catch ( e ) { if ( jQuery.Deferred.exceptionHook ) { jQuery.Deferred.exceptionHook( e, process.stackTrace ); } // Support: Promises/A+ section 2.3.3.3.4.1 // https://promisesaplus.com/#point-61 // Ignore post-resolution exceptions if ( depth + 1 >= maxDepth ) { // Only substitute handlers pass on context // and multiple values (non-spec behavior) if ( handler !== Thrower ) { that = undefined; args = [ e ]; } deferred.rejectWith( that, args ); } } }; // Support: Promises/A+ section 2.3.3.3.1 // https://promisesaplus.com/#point-57 // Re-resolve promises immediately to dodge false rejection from // subsequent errors if ( depth ) { process(); } else { // Call an optional hook to record the stack, in case of exception // since it's otherwise lost when execution goes async if ( jQuery.Deferred.getStackHook ) { process.stackTrace = jQuery.Deferred.getStackHook(); } window.setTimeout( process ); } }; } return jQuery.Deferred( function( newDefer ) { // progress_handlers.add( ... ) tuples[ 0 ][ 3 ].add( resolve( 0, newDefer, isFunction( onProgress ) ? onProgress : Identity, newDefer.notifyWith ) ); // fulfilled_handlers.add( ... ) tuples[ 1 ][ 3 ].add( resolve( 0, newDefer, isFunction( onFulfilled ) ? onFulfilled : Identity ) ); // rejected_handlers.add( ... ) tuples[ 2 ][ 3 ].add( resolve( 0, newDefer, isFunction( onRejected ) ? onRejected : Thrower ) ); } ).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 5 ]; // promise.progress = list.add // promise.done = list.add // promise.fail = list.add promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { list.add( function() { // state = "resolved" (i.e., fulfilled) // state = "rejected" state = stateString; }, // rejected_callbacks.disable // fulfilled_callbacks.disable tuples[ 3 - i ][ 2 ].disable, // rejected_handlers.disable // fulfilled_handlers.disable tuples[ 3 - i ][ 3 ].disable, // progress_callbacks.lock tuples[ 0 ][ 2 ].lock, // progress_handlers.lock tuples[ 0 ][ 3 ].lock ); } // progress_handlers.fire // fulfilled_handlers.fire // rejected_handlers.fire list.add( tuple[ 3 ].fire ); // deferred.notify = function() { deferred.notifyWith(...) } // deferred.resolve = function() { deferred.resolveWith(...) } // deferred.reject = function() { deferred.rejectWith(...) } deferred[ tuple[ 0 ] ] = function() { deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); return this; }; // deferred.notifyWith = list.fireWith // deferred.resolveWith = list.fireWith // deferred.rejectWith = list.fireWith deferred[ tuple[ 0 ] + "With" ] = list.fireWith; } ); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( singleValue ) { var // count of uncompleted subordinates remaining = arguments.length, // count of unprocessed arguments i = remaining, // subordinate fulfillment data resolveContexts = Array( i ), resolveValues = slice.call( arguments ), // the primary Deferred primary = jQuery.Deferred(), // subordinate callback factory updateFunc = function( i ) { return function( value ) { resolveContexts[ i ] = this; resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( !( --remaining ) ) { primary.resolveWith( resolveContexts, resolveValues ); } }; }; // Single- and empty arguments are adopted like Promise.resolve if ( remaining <= 1 ) { adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, !remaining ); // Use .then() to unwrap secondary thenables (cf. gh-3000) if ( primary.state() === "pending" || isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { return primary.then(); } } // Multiple arguments are aggregated like Promise.all array elements while ( i-- ) { adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } return primary.promise(); } } ); // These usually indicate a programmer mistake during development, // warn about them ASAP rather than swallowing them by default. var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; jQuery.Deferred.exceptionHook = function( error, stack ) { // Support: IE 8 - 9 only // Console exists when dev tools are open, which can happen at any time if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); } }; jQuery.readyException = function( error ) { window.setTimeout( function() { throw error; } ); }; // The deferred used on DOM ready var readyList = jQuery.Deferred(); jQuery.fn.ready = function( fn ) { readyList .then( fn ) // Wrap jQuery.readyException in a function so that the lookup // happens at the time of error handling instead of callback // registration. .catch( function( error ) { jQuery.readyException( error ); } ); return this; }; jQuery.extend( { // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See #6781 readyWait: 1, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); } } ); jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method function completed() { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); jQuery.ready(); } // Catch cases where $(document).ready() is called // after the browser event has already occurred. // Support: IE <=9 - 10 only // Older IE sometimes signals "interactive" too soon if ( document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout( jQuery.ready ); } else { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed ); } // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, len = elems.length, bulk = key == null; // Sets many values if ( toType( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; if ( !isFunction( value ) ) { raw = true; } if ( bulk ) { // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); fn = null; // ...except when executing function values } else { bulk = fn; fn = function( elem, _key, value ) { return bulk.call( jQuery( elem ), value ); }; } } if ( fn ) { for ( ; i < len; i++ ) { fn( elems[ i ], key, raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } } if ( chainable ) { return elems; } // Gets if ( bulk ) { return fn.call( elems ); } return len ? fn( elems[ 0 ], key ) : emptyGet; }; // Matches dashed string for camelizing var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace() function fcamelCase( _all, letter ) { return letter.toUpperCase(); } // Convert dashed to camelCase; used by the css and data modules // Support: IE <=9 - 11, Edge 12 - 15 // Microsoft forgot to hump their vendor prefix (#9572) function camelCase( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); } var acceptData = function( owner ) { // Accepts only: // - Node // - Node.ELEMENT_NODE // - Node.DOCUMENT_NODE // - Object // - Any return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; function Data() { this.expando = jQuery.expando + Data.uid++; } Data.uid = 1; Data.prototype = { cache: function( owner ) { // Check if the owner object already has a cache var value = owner[ this.expando ]; // If not, create one if ( !value ) { value = {}; // We can accept data for non-element nodes in modern browsers, // but we should not, see #8335. // Always return an empty object. if ( acceptData( owner ) ) { // If it is a node unlikely to be stringify-ed or looped over // use plain assignment if ( owner.nodeType ) { owner[ this.expando ] = value; // Otherwise secure it in a non-enumerable property // configurable must be true to allow the property to be // deleted when data is removed } else { Object.defineProperty( owner, this.expando, { value: value, configurable: true } ); } } } return value; }, set: function( owner, data, value ) { var prop, cache = this.cache( owner ); // Handle: [ owner, key, value ] args // Always use camelCase key (gh-2257) if ( typeof data === "string" ) { cache[ camelCase( data ) ] = value; // Handle: [ owner, { properties } ] args } else { // Copy the properties one-by-one to the cache object for ( prop in data ) { cache[ camelCase( prop ) ] = data[ prop ]; } } return cache; }, get: function( owner, key ) { return key === undefined ? this.cache( owner ) : // Always use camelCase key (gh-2257) owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; }, access: function( owner, key, value ) { // In cases where either: // // 1. No key was specified // 2. A string key was specified, but no value provided // // Take the "read" path and allow the get method to determine // which value to return, respectively either: // // 1. The entire cache object // 2. The data stored at the key // if ( key === undefined || ( ( key && typeof key === "string" ) && value === undefined ) ) { return this.get( owner, key ); } // When the key is not a string, or both a key and value // are specified, set or extend (existing objects) with either: // // 1. An object of properties // 2. A key and value // this.set( owner, key, value ); // Since the "set" path can have two possible entry points // return the expected data based on which path was taken[*] return value !== undefined ? value : key; }, remove: function( owner, key ) { var i, cache = owner[ this.expando ]; if ( cache === undefined ) { return; } if ( key !== undefined ) { // Support array or space separated string of keys if ( Array.isArray( key ) ) { // If key is an array of keys... // We always set camelCase keys, so remove that. key = key.map( camelCase ); } else { key = camelCase( key ); // If a key with the spaces exists, use it. // Otherwise, create an array by matching non-whitespace key = key in cache ? [ key ] : ( key.match( rnothtmlwhite ) || [] ); } i = key.length; while ( i-- ) { delete cache[ key[ i ] ]; } } // Remove the expando if there's no more data if ( key === undefined || jQuery.isEmptyObject( cache ) ) { // Support: Chrome <=35 - 45 // Webkit & Blink performance suffers when deleting properties // from DOM nodes, so set to undefined instead // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) if ( owner.nodeType ) { owner[ this.expando ] = undefined; } else { delete owner[ this.expando ]; } } }, hasData: function( owner ) { var cache = owner[ this.expando ]; return cache !== undefined && !jQuery.isEmptyObject( cache ); } }; var dataPriv = new Data(); var dataUser = new Data(); // Implementation Summary // // 1. Enforce API surface and semantic compatibility with 1.9.x branch // 2. Improve the module's maintainability by reducing the storage // paths to a single mechanism. // 3. Use the same single mechanism to support "private" and "user" data. // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) // 5. Avoid exposing implementation details on user objects (eg. expando properties) // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; function getData( data ) { if ( data === "true" ) { return true; } if ( data === "false" ) { return false; } if ( data === "null" ) { return null; } // Only convert to a number if it doesn't change the string if ( data === +data + "" ) { return +data; } if ( rbrace.test( data ) ) { return JSON.parse( data ); } return data; } function dataAttr( elem, key, data ) { var name; // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = getData( data ); } catch ( e ) {} // Make sure we set the data so it isn't changed later dataUser.set( elem, key, data ); } else { data = undefined; } } return data; } jQuery.extend( { hasData: function( elem ) { return dataUser.hasData( elem ) || dataPriv.hasData( elem ); }, data: function( elem, name, data ) { return dataUser.access( elem, name, data ); }, removeData: function( elem, name ) { dataUser.remove( elem, name ); }, // TODO: Now that all calls to _data and _removeData have been replaced // with direct calls to dataPriv methods, these can be deprecated. _data: function( elem, name, data ) { return dataPriv.access( elem, name, data ); }, _removeData: function( elem, name ) { dataPriv.remove( elem, name ); } } ); jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Gets all values if ( key === undefined ) { if ( this.length ) { data = dataUser.get( elem ); if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE 11 only // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } dataPriv.set( elem, "hasDataAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each( function() { dataUser.set( this, key ); } ); } return access( this, function( value ) { var data; // The calling jQuery object (element matches) is not empty // (and therefore has an element appears at this[ 0 ]) and the // `value` parameter was not undefined. An empty jQuery object // will result in `undefined` for elem = this[ 0 ] which will // throw an exception if an attempt to read a data cache is made. if ( elem && value === undefined ) { // Attempt to get data from the cache // The key will always be camelCased in Data data = dataUser.get( elem, key ); if ( data !== undefined ) { return data; } // Attempt to "discover" the data in // HTML5 custom data-* attrs data = dataAttr( elem, key ); if ( data !== undefined ) { return data; } // We tried really hard, but the data doesn't exist. return; } // Set the data... this.each( function() { // We always store the camelCased key dataUser.set( this, key, value ); } ); }, null, value, arguments.length > 1, null, true ); }, removeData: function( key ) { return this.each( function() { dataUser.remove( this, key ); } ); } } ); jQuery.extend( { queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = dataPriv.get( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || Array.isArray( data ) ) { queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // Clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // Not public - generate a queueHooks object, or return the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { empty: jQuery.Callbacks( "once memory" ).add( function() { dataPriv.remove( elem, [ type + "queue", key ] ); } ) } ); } } ); jQuery.fn.extend( { queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[ 0 ], type ); } return data === undefined ? this : this.each( function() { var queue = jQuery.queue( this, type, data ); // Ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { jQuery.dequeue( this, type ); } } ); }, dequeue: function( type ) { return this.each( function() { jQuery.dequeue( this, type ); } ); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while ( i-- ) { tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } } ); var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var documentElement = document.documentElement; var isAttached = function( elem ) { return jQuery.contains( elem.ownerDocument, elem ); }, composed = { composed: true }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only // Check attachment across shadow DOM boundaries when possible (gh-3504) // Support: iOS 10.0-10.2 only // Early iOS 10 versions support `attachShadow` but not `getRootNode`, // leading to errors. We need to check for `getRootNode`. if ( documentElement.getRootNode ) { isAttached = function( elem ) { return jQuery.contains( elem.ownerDocument, elem ) || elem.getRootNode( composed ) === elem.ownerDocument; }; } var isHiddenWithinTree = function( elem, el ) { // isHiddenWithinTree might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; // Inline style trumps all return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style // Support: Firefox <=43 - 45 // Disconnected elements can have computed display: none, so first confirm that elem is // in the document. isAttached( elem ) && jQuery.css( elem, "display" ) === "none"; }; function adjustCSS( elem, prop, valueParts, tween ) { var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { return tween.cur(); } : function() { return jQuery.css( elem, prop, "" ); }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches initialInUnit = elem.nodeType && ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { // Support: Firefox <=54 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) initial = initial / 2; // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; while ( maxIterations-- ) { // Evaluate and update our best guess (doubling guesses that zero out). // Finish if the scale equals or crosses 1 (making the old*new product non-positive). jQuery.style( elem, prop, initialInUnit + unit ); if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { maxIterations = 0; } initialInUnit = initialInUnit / scale; } initialInUnit = initialInUnit * 2; jQuery.style( elem, prop, initialInUnit + unit ); // Make sure we update the tween properties later on valueParts = valueParts || []; } if ( valueParts ) { initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified adjusted = valueParts[ 1 ] ? initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : +valueParts[ 2 ]; if ( tween ) { tween.unit = unit; tween.start = initialInUnit; tween.end = adjusted; } } return adjusted; } var defaultDisplayMap = {}; function getDefaultDisplay( elem ) { var temp, doc = elem.ownerDocument, nodeName = elem.nodeName, display = defaultDisplayMap[ nodeName ]; if ( display ) { return display; } temp = doc.body.appendChild( doc.createElement( nodeName ) ); display = jQuery.css( temp, "display" ); temp.parentNode.removeChild( temp ); if ( display === "none" ) { display = "block"; } defaultDisplayMap[ nodeName ] = display; return display; } function showHide( elements, show ) { var display, elem, values = [], index = 0, length = elements.length; // Determine new display value for elements that need to change for ( ; index < length; index++ ) { elem = elements[ index ]; if ( !elem.style ) { continue; } display = elem.style.display; if ( show ) { // Since we force visibility upon cascade-hidden elements, an immediate (and slow) // check is required in this first loop unless we have a nonempty display value (either // inline or about-to-be-restored) if ( display === "none" ) { values[ index ] = dataPriv.get( elem, "display" ) || null; if ( !values[ index ] ) { elem.style.display = ""; } } if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { values[ index ] = getDefaultDisplay( elem ); } } else { if ( display !== "none" ) { values[ index ] = "none"; // Remember what we're overwriting dataPriv.set( elem, "display", display ); } } } // Set the display of the elements in a second loop to avoid constant reflow for ( index = 0; index < length; index++ ) { if ( values[ index ] != null ) { elements[ index ].style.display = values[ index ]; } } return elements; } jQuery.fn.extend( { show: function() { return showHide( this, true ); }, hide: function() { return showHide( this ); }, toggle: function( state ) { if ( typeof state === "boolean" ) { return state ? this.show() : this.hide(); } return this.each( function() { if ( isHiddenWithinTree( this ) ) { jQuery( this ).show(); } else { jQuery( this ).hide(); } } ); } } ); var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); ( function() { var fragment = document.createDocumentFragment(), div = fragment.appendChild( document.createElement( "div" ) ), input = document.createElement( "input" ); // Support: Android 4.0 - 4.3 only // Check state lost if the name is set (#11217) // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (#14901) input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); // Support: Android <=4.1 only // Older WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE <=11 only // Make sure textarea (and checkbox) defaultValue is properly cloned div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // Support: IE <=9 only // IE <=9 replaces "; support.option = !!div.lastChild; } )(); // We have to close these tags to support XHTML (#13200) var wrapMap = { // XHTML parsers do not magically insert elements in the // same way that tag soup parsers do. So we cannot shorten // this by omitting or other required elements. thead: [ 1, "", "
" ], col: [ 2, "", "
" ], tr: [ 2, "", "
" ], td: [ 3, "", "
" ], _default: [ 0, "", "" ] }; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; // Support: IE <=9 only if ( !support.option ) { wrapMap.optgroup = wrapMap.option = [ 1, "" ]; } function getAll( context, tag ) { // Support: IE <=9 - 11 only // Use typeof to avoid zero-argument method invocation on host objects (#15151) var ret; if ( typeof context.getElementsByTagName !== "undefined" ) { ret = context.getElementsByTagName( tag || "*" ); } else if ( typeof context.querySelectorAll !== "undefined" ) { ret = context.querySelectorAll( tag || "*" ); } else { ret = []; } if ( tag === undefined || tag && nodeName( context, tag ) ) { return jQuery.merge( [ context ], ret ); } return ret; } // Mark scripts as having already been evaluated function setGlobalEval( elems, refElements ) { var i = 0, l = elems.length; for ( ; i < l; i++ ) { dataPriv.set( elems[ i ], "globalEval", !refElements || dataPriv.get( refElements[ i ], "globalEval" ) ); } } var rhtml = /<|&#?\w+;/; function buildFragment( elems, context, scripts, selection, ignored ) { var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; for ( ; i < l; i++ ) { elem = elems[ i ]; if ( elem || elem === 0 ) { // Add nodes directly if ( toType( elem ) === "object" ) { // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); // Convert non-html into a text node } else if ( !rhtml.test( elem ) ) { nodes.push( context.createTextNode( elem ) ); // Convert html into DOM nodes } else { tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); // Deserialize a standard representation tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); wrap = wrapMap[ tag ] || wrapMap._default; tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; // Descend through wrappers to the right content j = wrap[ 0 ]; while ( j-- ) { tmp = tmp.lastChild; } // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, tmp.childNodes ); // Remember the top-level container tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392) tmp.textContent = ""; } } } // Remove wrapper from fragment fragment.textContent = ""; i = 0; while ( ( elem = nodes[ i++ ] ) ) { // Skip elements already in the context collection (trac-4087) if ( selection && jQuery.inArray( elem, selection ) > -1 ) { if ( ignored ) { ignored.push( elem ); } continue; } attached = isAttached( elem ); // Append to fragment tmp = getAll( fragment.appendChild( elem ), "script" ); // Preserve script evaluation history if ( attached ) { setGlobalEval( tmp ); } // Capture executables if ( scripts ) { j = 0; while ( ( elem = tmp[ j++ ] ) ) { if ( rscriptType.test( elem.type || "" ) ) { scripts.push( elem ); } } } } return fragment; } var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; } function returnFalse() { return false; } // Support: IE <=9 - 11+ // focus() and blur() are asynchronous, except when they are no-op. // So expect focus to be synchronous when the element is already active, // and blur to be synchronous when the element is not already active. // (focus and blur are always synchronous in other supported browsers, // this just defines when we can count on it). function expectSync( elem, type ) { return ( elem === safeActiveElement() ) === ( type === "focus" ); } // Support: IE <=9 only // Accessing document.activeElement can throw unexpectedly // https://bugs.jquery.com/ticket/13393 function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } function on( elem, types, selector, data, fn, one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { on( elem, type, selector, data, types[ type ], one ); } return elem; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return elem; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return elem.each( function() { jQuery.event.add( this, types, fn, data, selector ); } ); } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get( elem ); // Only attach events to objects that accept data if ( !acceptData( elem ) ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Ensure that invalid selectors throw exceptions at attach time // Evaluate against documentElement in case elem is a non-element node (e.g., document) if ( selector ) { jQuery.find.matchesSelector( documentElement, selector ); } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { events = elemData.events = Object.create( null ); } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined; }; } // Handle multiple events separated by a space types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend( { type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[ 2 ] && new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove data and the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { dataPriv.remove( elem, "handle events" ); } }, dispatch: function( nativeEvent ) { var i, j, ret, matched, handleObj, handlerQueue, args = new Array( arguments.length ), // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( nativeEvent ), handlers = ( dataPriv.get( this, "events" ) || Object.create( null ) )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; for ( i = 1; i < arguments.length; i++ ) { args[ i ] = arguments[ i ]; } event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { // If the event is namespaced, then each handler is only invoked if it is // specially universal or its namespaces are a superset of the event's. if ( !event.rnamespace || handleObj.namespace === false || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Find delegate handlers if ( delegateCount && // Support: IE <=9 // Black-hole SVG instance trees (trac-13180) cur.nodeType && // Support: Firefox <=42 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click // Support: IE 11 only // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) !( event.type === "click" && event.button >= 1 ) ) { for ( ; cur !== this; cur = cur.parentNode || this ) { // Don't check non-elements (#13208) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { matchedHandlers = []; matchedSelectors = {}; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; if ( matchedSelectors[ sel ] === undefined ) { matchedSelectors[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matchedSelectors[ sel ] ) { matchedHandlers.push( handleObj ); } } if ( matchedHandlers.length ) { handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); } } } } // Add the remaining (directly-bound) handlers cur = this; if ( delegateCount < handlers.length ) { handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, addProp: function( name, hook ) { Object.defineProperty( jQuery.Event.prototype, name, { enumerable: true, configurable: true, get: isFunction( hook ) ? function() { if ( this.originalEvent ) { return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { return this.originalEvent[ name ]; } }, set: function( value ) { Object.defineProperty( this, name, { enumerable: true, configurable: true, writable: true, value: value } ); } } ); }, fix: function( originalEvent ) { return originalEvent[ jQuery.expando ] ? originalEvent : new jQuery.Event( originalEvent ); }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, click: { // Utilize native event to ensure correct state for checkable inputs setup: function( data ) { // For mutual compressibility with _default, replace `this` access with a local var. // `|| data` is dead code meant only to preserve the variable through minification. var el = this || data; // Claim the first handler if ( rcheckableType.test( el.type ) && el.click && nodeName( el, "input" ) ) { // dataPriv.set( el, "click", ... ) leverageNative( el, "click", returnTrue ); } // Return false to allow normal processing in the caller return false; }, trigger: function( data ) { // For mutual compressibility with _default, replace `this` access with a local var. // `|| data` is dead code meant only to preserve the variable through minification. var el = this || data; // Force setup before triggering a click if ( rcheckableType.test( el.type ) && el.click && nodeName( el, "input" ) ) { leverageNative( el, "click" ); } // Return non-false to allow normal event-path propagation return true; }, // For cross-browser consistency, suppress native .click() on links // Also prevent it if we're currently inside a leveraged native-event stack _default: function( event ) { var target = event.target; return rcheckableType.test( target.type ) && target.click && nodeName( target, "input" ) && dataPriv.get( target, "click" ) || nodeName( target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } } }; // Ensure the presence of an event listener that handles manually-triggered // synthetic events by interrupting progress until reinvoked in response to // *native* events that it fires directly, ensuring that state changes have // already occurred before other listeners are invoked. function leverageNative( el, type, expectSync ) { // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add if ( !expectSync ) { if ( dataPriv.get( el, type ) === undefined ) { jQuery.event.add( el, type, returnTrue ); } return; } // Register the controller as a special universal handler for all event namespaces dataPriv.set( el, type, false ); jQuery.event.add( el, type, { namespace: false, handler: function( event ) { var notAsync, result, saved = dataPriv.get( this, type ); if ( ( event.isTrigger & 1 ) && this[ type ] ) { // Interrupt processing of the outer synthetic .trigger()ed event // Saved data should be false in such cases, but might be a leftover capture object // from an async native handler (gh-4350) if ( !saved.length ) { // Store arguments for use when handling the inner native event // There will always be at least one argument (an event object), so this array // will not be confused with a leftover capture object. saved = slice.call( arguments ); dataPriv.set( this, type, saved ); // Trigger the native event and capture its result // Support: IE <=9 - 11+ // focus() and blur() are asynchronous notAsync = expectSync( this, type ); this[ type ](); result = dataPriv.get( this, type ); if ( saved !== result || notAsync ) { dataPriv.set( this, type, false ); } else { result = {}; } if ( saved !== result ) { // Cancel the outer synthetic event event.stopImmediatePropagation(); event.preventDefault(); // Support: Chrome 86+ // In Chrome, if an element having a focusout handler is blurred by // clicking outside of it, it invokes the handler synchronously. If // that handler calls `.remove()` on the element, the data is cleared, // leaving `result` undefined. We need to guard against this. return result && result.value; } // If this is an inner synthetic event for an event with a bubbling surrogate // (focus or blur), assume that the surrogate already propagated from triggering the // native event and prevent that from happening again here. // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the // bubbling surrogate propagates *after* the non-bubbling base), but that seems // less bad than duplication. } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { event.stopPropagation(); } // If this is a native event triggered above, everything is now in order // Fire an inner synthetic event with the original arguments } else if ( saved.length ) { // ...and capture the result dataPriv.set( this, type, { value: jQuery.event.trigger( // Support: IE <=9 - 11+ // Extend with the prototype to reset the above stopImmediatePropagation() jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), saved.slice( 1 ), this ) } ); // Abort handling of the native event event.stopImmediatePropagation(); } } } ); } jQuery.removeEvent = function( elem, type, handle ) { // This "if" is needed for plain objects if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only src.returnValue === false ? returnTrue : returnFalse; // Create target properties // Support: Safari <=6 - 7 only // Target should not be a text node (#504, #13143) this.target = ( src.target && src.target.nodeType === 3 ) ? src.target.parentNode : src.target; this.currentTarget = src.currentTarget; this.relatedTarget = src.relatedTarget; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, isSimulated: false, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( e && !this.isSimulated ) { e.preventDefault(); } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( e && !this.isSimulated ) { e.stopPropagation(); } }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && !this.isSimulated ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Includes all common event props including KeyEvent and MouseEvent specific props jQuery.each( { altKey: true, bubbles: true, cancelable: true, changedTouches: true, ctrlKey: true, detail: true, eventPhase: true, metaKey: true, pageX: true, pageY: true, shiftKey: true, view: true, "char": true, code: true, charCode: true, key: true, keyCode: true, button: true, buttons: true, clientX: true, clientY: true, offsetX: true, offsetY: true, pointerId: true, pointerType: true, screenX: true, screenY: true, targetTouches: true, toElement: true, touches: true, which: true }, jQuery.event.addProp ); jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { jQuery.event.special[ type ] = { // Utilize native event if possible so blur/focus sequence is correct setup: function() { // Claim the first handler // dataPriv.set( this, "focus", ... ) // dataPriv.set( this, "blur", ... ) leverageNative( this, type, expectSync ); // Return false to allow normal processing in the caller return false; }, trigger: function() { // Force setup before trigger leverageNative( this, type ); // Return non-false to allow normal event-path propagation return true; }, // Suppress native focus or blur as it's already being fired // in leverageNative. _default: function() { return true; }, delegateType: delegateType }; } ); // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: // https://bugs.chromium.org/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; } ); jQuery.fn.extend( { on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each( function() { jQuery.event.remove( this, types, fn, selector ); } ); } } ); var // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g; // Prefer a tbody over its parent table for containing new rows function manipulationTarget( elem, content ) { if ( nodeName( elem, "table" ) && nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { return jQuery( elem ).children( "tbody" )[ 0 ] || elem; } return elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; return elem; } function restoreScript( elem ) { if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { elem.type = elem.type.slice( 5 ); } else { elem.removeAttribute( "type" ); } return elem; } function cloneCopyEvent( src, dest ) { var i, l, type, pdataOld, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; } // 1. Copy private data: events, handlers, etc. if ( dataPriv.hasData( src ) ) { pdataOld = dataPriv.get( src ); events = pdataOld.events; if ( events ) { dataPriv.remove( dest, "handle events" ); for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } } // 2. Copy user data if ( dataUser.hasData( src ) ) { udataOld = dataUser.access( src ); udataCur = jQuery.extend( {}, udataOld ); dataUser.set( dest, udataCur ); } } // Fix IE bugs, see support tests function fixInput( src, dest ) { var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button. if ( nodeName === "input" && rcheckableType.test( src.type ) ) { dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; } } function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays args = flat( args ); var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[ 0 ], valueIsFunction = isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit if ( valueIsFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); if ( valueIsFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); } ); } if ( l ) { fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } // Require either new content or an interest in ignored elements to invoke the callback if ( first || ignored ) { scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); hasScripts = scripts.length; // Use the original fragment for the last item // instead of the first because it can end up // being emptied incorrectly in certain situations (#8070). for ( ; i < l; i++ ) { node = fragment; if ( i !== iNoClone ) { node = jQuery.clone( node, true, true ); // Keep references to cloned scripts for later restoration if ( hasScripts ) { // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( scripts, getAll( node, "script" ) ); } } callback.call( collection[ i ], node, i ); } if ( hasScripts ) { doc = scripts[ scripts.length - 1 ].ownerDocument; // Reenable scripts jQuery.map( scripts, restoreScript ); // Evaluate executable scripts on first document insertion for ( i = 0; i < hasScripts; i++ ) { node = scripts[ i ]; if ( rscriptType.test( node.type || "" ) && !dataPriv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl && !node.noModule ) { jQuery._evalUrl( node.src, { nonce: node.nonce || node.getAttribute( "nonce" ) }, doc ); } } else { DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); } } } } } } return collection; } function remove( elem, selector, keepData ) { var node, nodes = selector ? jQuery.filter( selector, elem ) : elem, i = 0; for ( ; ( node = nodes[ i ] ) != null; i++ ) { if ( !keepData && node.nodeType === 1 ) { jQuery.cleanData( getAll( node ) ); } if ( node.parentNode ) { if ( keepData && isAttached( node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); } } return elem; } jQuery.extend( { htmlPrefilter: function( html ) { return html; }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { var i, l, srcElements, destElements, clone = elem.cloneNode( true ), inPage = isAttached( elem ); // Fix IE cloning issues if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); for ( i = 0, l = srcElements.length; i < l; i++ ) { fixInput( srcElements[ i ], destElements[ i ] ); } } // Copy the events from the original to the clone if ( dataAndEvents ) { if ( deepDataAndEvents ) { srcElements = srcElements || getAll( elem ); destElements = destElements || getAll( clone ); for ( i = 0, l = srcElements.length; i < l; i++ ) { cloneCopyEvent( srcElements[ i ], destElements[ i ] ); } } else { cloneCopyEvent( elem, clone ); } } // Preserve script evaluation history destElements = getAll( clone, "script" ); if ( destElements.length > 0 ) { setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); } // Return the cloned set return clone; }, cleanData: function( elems ) { var data, elem, type, special = jQuery.event.special, i = 0; for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { if ( acceptData( elem ) ) { if ( ( data = elem[ dataPriv.expando ] ) ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } // Support: Chrome <=35 - 45+ // Assign undefined instead of using delete, see Data#remove elem[ dataPriv.expando ] = undefined; } if ( elem[ dataUser.expando ] ) { // Support: Chrome <=35 - 45+ // Assign undefined instead of using delete, see Data#remove elem[ dataUser.expando ] = undefined; } } } } } ); jQuery.fn.extend( { detach: function( selector ) { return remove( this, selector, true ); }, remove: function( selector ) { return remove( this, selector ); }, text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().each( function() { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { this.textContent = value; } } ); }, null, value, arguments.length ); }, append: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } } ); }, prepend: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } } ); }, before: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } } ); }, after: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } } ); }, empty: function() { var elem, i = 0; for ( ; ( elem = this[ i ] ) != null; i++ ) { if ( elem.nodeType === 1 ) { // Prevent memory leaks jQuery.cleanData( getAll( elem, false ) ); // Remove any remaining nodes elem.textContent = ""; } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); } ); }, html: function( value ) { return access( this, function( value ) { var elem = this[ 0 ] || {}, i = 0, l = this.length; if ( value === undefined && elem.nodeType === 1 ) { return elem.innerHTML; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { value = jQuery.htmlPrefilter( value ); try { for ( ; i < l; i++ ) { elem = this[ i ] || {}; // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch ( e ) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function() { var ignored = []; // Make the changes, replacing each non-ignored context element with the new content return domManip( this, arguments, function( elem ) { var parent = this.parentNode; if ( jQuery.inArray( this, ignored ) < 0 ) { jQuery.cleanData( getAll( this ) ); if ( parent ) { parent.replaceChild( elem, this ); } } // Force callback invocation }, ignored ); } } ); jQuery.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, ret = [], insert = jQuery( selector ), last = insert.length - 1, i = 0; for ( ; i <= last; i++ ) { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); // Support: Android <=4.0 only, PhantomJS 1 only // .get() because push.apply(_, arraylike) throws on ancient WebKit push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; } ); var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); var getStyles = function( elem ) { // Support: IE <=11 only, Firefox <=30 (#15098, #14150) // IE throws on elements created in popups // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" var view = elem.ownerDocument.defaultView; if ( !view || !view.opener ) { view = window; } return view.getComputedStyle( elem ); }; var swap = function( elem, options, callback ) { var ret, name, old = {}; // Remember the old values, and insert the new ones for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.call( elem ); // Revert the old values for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; }; var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); ( function() { // Executing both pixelPosition & boxSizingReliable tests require only one layout // so they're executed at the same time to save the second computation. function computeStyleTests() { // This is a singleton, we need to execute it only once if ( !div ) { return; } container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0"; div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%"; documentElement.appendChild( container ).appendChild( div ); var divStyle = window.getComputedStyle( div ); pixelPositionVal = divStyle.top !== "1%"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 // Some styles come back with percentage values, even though they shouldn't div.style.right = "60%"; pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; // Support: IE 9 - 11 only // Detect misreporting of content dimensions for box-sizing:border-box elements boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; // Support: IE 9 only // Detect overflow:scroll screwiness (gh-3699) // Support: Chrome <=64 // Don't get tricked when zoom affects offsetWidth (gh-4029) div.style.position = "absolute"; scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; documentElement.removeChild( container ); // Nullify the div so it wouldn't be stored in the memory and // it will also be a sign that checks already performed div = null; } function roundPixelMeasures( measure ) { return Math.round( parseFloat( measure ) ); } var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); // Finish early in limited (non-browser) environments if ( !div.style ) { return; } // Support: IE <=9 - 11 only // Style of cloned element affects source element cloned (#8908) div.style.backgroundClip = "content-box"; div.cloneNode( true ).style.backgroundClip = ""; support.clearCloneStyle = div.style.backgroundClip === "content-box"; jQuery.extend( support, { boxSizingReliable: function() { computeStyleTests(); return boxSizingReliableVal; }, pixelBoxStyles: function() { computeStyleTests(); return pixelBoxStylesVal; }, pixelPosition: function() { computeStyleTests(); return pixelPositionVal; }, reliableMarginLeft: function() { computeStyleTests(); return reliableMarginLeftVal; }, scrollboxSize: function() { computeStyleTests(); return scrollboxSizeVal; }, // Support: IE 9 - 11+, Edge 15 - 18+ // IE/Edge misreport `getComputedStyle` of table rows with width/height // set in CSS while `offset*` properties report correct values. // Behavior in IE 9 is more subtle than in newer versions & it passes // some versions of this test; make sure not to make it pass there! // // Support: Firefox 70+ // Only Firefox includes border widths // in computed dimensions. (gh-4529) reliableTrDimensions: function() { var table, tr, trChild, trStyle; if ( reliableTrDimensionsVal == null ) { table = document.createElement( "table" ); tr = document.createElement( "tr" ); trChild = document.createElement( "div" ); table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; tr.style.cssText = "border:1px solid"; // Support: Chrome 86+ // Height set through cssText does not get applied. // Computed height then comes back as 0. tr.style.height = "1px"; trChild.style.height = "9px"; // Support: Android 8 Chrome 86+ // In our bodyBackground.html iframe, // display for all div elements is set to "inline", // which causes a problem only in Android 8 Chrome 86. // Ensuring the div is display: block // gets around this issue. trChild.style.display = "block"; documentElement .appendChild( table ) .appendChild( tr ) .appendChild( trChild ); trStyle = window.getComputedStyle( tr ); reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + parseInt( trStyle.borderTopWidth, 10 ) + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; documentElement.removeChild( table ); } return reliableTrDimensionsVal; } } ); } )(); function curCSS( elem, name, computed ) { var width, minWidth, maxWidth, ret, // Support: Firefox 51+ // Retrieving style before computed somehow // fixes an issue with getting wrong values // on detached elements style = elem.style; computed = computed || getStyles( elem ); // getPropertyValue is needed for: // .css('filter') (IE 9 only, #12537) // .css('--customProperty) (#3144) if ( computed ) { ret = computed.getPropertyValue( name ) || computed[ name ]; if ( ret === "" && !isAttached( elem ) ) { ret = jQuery.style( elem, name ); } // A tribute to the "awesome hack by Dean Edwards" // Android Browser returns percentage for some values, // but width seems to be reliably pixels. // This is against the CSSOM draft spec: // https://drafts.csswg.org/cssom/#resolved-values if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { // Remember the original values width = style.width; minWidth = style.minWidth; maxWidth = style.maxWidth; // Put in the new values to get a computed value out style.minWidth = style.maxWidth = style.width = ret; ret = computed.width; // Revert the changed values style.width = width; style.minWidth = minWidth; style.maxWidth = maxWidth; } } return ret !== undefined ? // Support: IE <=9 - 11 only // IE returns zIndex value as an integer. ret + "" : ret; } function addGetHookIf( conditionFn, hookFn ) { // Define the hook, we'll check on the first run if it's really needed. return { get: function() { if ( conditionFn() ) { // Hook not needed (or it's not possible to use it due // to missing dependency), remove it. delete this.get; return; } // Hook needed; redefine it so that the support test is not executed again. return ( this.get = hookFn ).apply( this, arguments ); } }; } var cssPrefixes = [ "Webkit", "Moz", "ms" ], emptyStyle = document.createElement( "div" ).style, vendorProps = {}; // Return a vendor-prefixed property or undefined function vendorPropName( name ) { // Check for vendor prefixed names var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), i = cssPrefixes.length; while ( i-- ) { name = cssPrefixes[ i ] + capName; if ( name in emptyStyle ) { return name; } } } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property function finalPropName( name ) { var final = jQuery.cssProps[ name ] || vendorProps[ name ]; if ( final ) { return final; } if ( name in emptyStyle ) { return name; } return vendorProps[ name ] = vendorPropName( name ) || name; } var // Swappable if display is none or starts with table // except "table", "table-cell", or "table-caption" // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display rdisplayswap = /^(none|table(?!-c[ea]).+)/, rcustomProp = /^--/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { letterSpacing: "0", fontWeight: "400" }; function setPositiveNumber( _elem, value, subtract ) { // Any relative (+/-) values have already been // normalized at this point var matches = rcssNum.exec( value ); return matches ? // Guard against undefined "subtract", e.g., when used as in cssHooks Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : value; } function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0; // Adjustment may not be necessary if ( box === ( isBorderBox ? "border" : "content" ) ) { return 0; } for ( ; i < 4; i += 2 ) { // Both box models exclude margin if ( box === "margin" ) { delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); } // If we get here with a content-box, we're seeking "padding" or "border" or "margin" if ( !isBorderBox ) { // Add padding delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); // For "border" or "margin", add border if ( box !== "padding" ) { delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); // But still keep track of it otherwise } else { extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } // If we get here with a border-box (content + padding + border), we're seeking "content" or // "padding" or "margin" } else { // For "content", subtract padding if ( box === "content" ) { delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); } // For "content" or "padding", subtract border if ( box !== "margin" ) { delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } } } // Account for positive content-box scroll gutter when requested by providing computedVal if ( !isBorderBox && computedVal >= 0 ) { // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border // Assuming integer scroll gutter, subtract the rest and round down delta += Math.max( 0, Math.ceil( elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter // Use an explicit zero to avoid NaN (gh-3964) ) ) || 0; } return delta; } function getWidthOrHeight( elem, dimension, extra ) { // Start with computed style var styles = getStyles( elem ), // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). // Fake content-box until we know it's needed to know the true value. boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS( elem, dimension, styles ), offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); // Support: Firefox <=54 // Return a confounding non-pixel value or feign ignorance, as appropriate. if ( rnumnonpx.test( val ) ) { if ( !extra ) { return val; } val = "auto"; } // Support: IE 9 - 11 only // Use offsetWidth/offsetHeight for when box sizing is unreliable. // In those cases, the computed value can be trusted to be border-box. if ( ( !support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+ // IE/Edge misreport `getComputedStyle` of table rows with width/height // set in CSS while `offset*` properties report correct values. // Interestingly, in some cases IE 9 doesn't suffer from this issue. !support.reliableTrDimensions() && nodeName( elem, "tr" ) || // Fall back to offsetWidth/offsetHeight when value is "auto" // This happens for inline elements with no explicit setting (gh-3571) val === "auto" || // Support: Android <=4.1 - 4.3 only // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && // Make sure the element is visible & connected elem.getClientRects().length ) { isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; // Where available, offsetWidth/offsetHeight approximate border box dimensions. // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the // retrieved value as a content box dimension. valueIsBorderBox = offsetProp in elem; if ( valueIsBorderBox ) { val = elem[ offsetProp ]; } } // Normalize "" and auto val = parseFloat( val ) || 0; // Adjust for the element's box model return ( val + boxModelAdjustment( elem, dimension, extra || ( isBorderBox ? "border" : "content" ), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589) val ) ) + "px"; } jQuery.extend( { // Add in style property hooks for overriding the default // behavior of getting and setting a style property cssHooks: { opacity: { get: function( elem, computed ) { if ( computed ) { // We should always get a number back from opacity var ret = curCSS( elem, "opacity" ); return ret === "" ? "1" : ret; } } } }, // Don't automatically add "px" to these possibly-unitless properties cssNumber: { "animationIterationCount": true, "columnCount": true, "fillOpacity": true, "flexGrow": true, "flexShrink": true, "fontWeight": true, "gridArea": true, "gridColumn": true, "gridColumnEnd": true, "gridColumnStart": true, "gridRow": true, "gridRowEnd": true, "gridRowStart": true, "lineHeight": true, "opacity": true, "order": true, "orphans": true, "widows": true, "zIndex": true, "zoom": true }, // Add in properties whose names you wish to fix before // setting or getting the value cssProps: {}, // Get and set the style property on a DOM Node style: function( elem, name, value, extra ) { // Don't set styles on text and comment nodes if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { return; } // Make sure that we're working with the right name var ret, type, hooks, origName = camelCase( name ), isCustomProp = rcustomProp.test( name ), style = elem.style; // Make sure that we're working with the right name. We don't // want to query the value if it is a CSS custom property // since they are user-defined. if ( !isCustomProp ) { name = finalPropName( origName ); } // Gets hook for the prefixed version, then unprefixed version hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; // Check if we're setting a value if ( value !== undefined ) { type = typeof value; // Convert "+=" or "-=" to relative numbers (#7345) if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { value = adjustCSS( elem, name, ret ); // Fixes bug #9237 type = "number"; } // Make sure that null and NaN values aren't set (#7116) if ( value == null || value !== value ) { return; } // If a number was passed in, add the unit (except for certain CSS properties) // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append // "px" to a few hardcoded values. if ( type === "number" && !isCustomProp ) { value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); } // background-* props affect original clone's values if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { style[ name ] = "inherit"; } // If a hook was provided, use that value, otherwise just set the specified value if ( !hooks || !( "set" in hooks ) || ( value = hooks.set( elem, value, extra ) ) !== undefined ) { if ( isCustomProp ) { style.setProperty( name, value ); } else { style[ name ] = value; } } } else { // If a hook was provided get the non-computed value from there if ( hooks && "get" in hooks && ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { return ret; } // Otherwise just get the value from the style object return style[ name ]; } }, css: function( elem, name, extra, styles ) { var val, num, hooks, origName = camelCase( name ), isCustomProp = rcustomProp.test( name ); // Make sure that we're working with the right name. We don't // want to modify the value if it is a CSS custom property // since they are user-defined. if ( !isCustomProp ) { name = finalPropName( origName ); } // Try prefixed name followed by the unprefixed name hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; // If a hook was provided get the computed value from there if ( hooks && "get" in hooks ) { val = hooks.get( elem, true, extra ); } // Otherwise, if a way to get the computed value exists, use that if ( val === undefined ) { val = curCSS( elem, name, styles ); } // Convert "normal" to computed value if ( val === "normal" && name in cssNormalTransform ) { val = cssNormalTransform[ name ]; } // Make numeric if forced or a qualifier was provided and val looks numeric if ( extra === "" || extra ) { num = parseFloat( val ); return extra === true || isFinite( num ) ? num || 0 : val; } return val; } } ); jQuery.each( [ "height", "width" ], function( _i, dimension ) { jQuery.cssHooks[ dimension ] = { get: function( elem, computed, extra ) { if ( computed ) { // Certain elements can have dimension info if we invisibly show them // but it must have a current display style that would benefit return rdisplayswap.test( jQuery.css( elem, "display" ) ) && // Support: Safari 8+ // Table columns in Safari have non-zero offsetWidth & zero // getBoundingClientRect().width unless display is changed. // Support: IE <=11 only // Running getBoundingClientRect on a disconnected node // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? swap( elem, cssShow, function() { return getWidthOrHeight( elem, dimension, extra ); } ) : getWidthOrHeight( elem, dimension, extra ); } }, set: function( elem, value, extra ) { var matches, styles = getStyles( elem ), // Only read styles.position if the test has a chance to fail // to avoid forcing a reflow. scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", subtract = extra ? boxModelAdjustment( elem, dimension, extra, isBorderBox, styles ) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and // faking a content-box to get border and padding (gh-3699) if ( isBorderBox && scrollboxSizeBuggy ) { subtract -= Math.ceil( elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - parseFloat( styles[ dimension ] ) - boxModelAdjustment( elem, dimension, "border", false, styles ) - 0.5 ); } // Convert to pixels if value adjustment is needed if ( subtract && ( matches = rcssNum.exec( value ) ) && ( matches[ 3 ] || "px" ) !== "px" ) { elem.style[ dimension ] = value; value = jQuery.css( elem, dimension ); } return setPositiveNumber( elem, value, subtract ); } }; } ); jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, function( elem, computed ) { if ( computed ) { return ( parseFloat( curCSS( elem, "marginLeft" ) ) || elem.getBoundingClientRect().left - swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) ) + "px"; } } ); // These hooks are used by animate to expand properties jQuery.each( { margin: "", padding: "", border: "Width" }, function( prefix, suffix ) { jQuery.cssHooks[ prefix + suffix ] = { expand: function( value ) { var i = 0, expanded = {}, // Assumes a single number if not a string parts = typeof value === "string" ? value.split( " " ) : [ value ]; for ( ; i < 4; i++ ) { expanded[ prefix + cssExpand[ i ] + suffix ] = parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; } return expanded; } }; if ( prefix !== "margin" ) { jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; } } ); jQuery.fn.extend( { css: function( name, value ) { return access( this, function( elem, name, value ) { var styles, len, map = {}, i = 0; if ( Array.isArray( name ) ) { styles = getStyles( elem ); len = name.length; for ( ; i < len; i++ ) { map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); } return map; } return value !== undefined ? jQuery.style( elem, name, value ) : jQuery.css( elem, name ); }, name, value, arguments.length > 1 ); } } ); function Tween( elem, options, prop, end, easing ) { return new Tween.prototype.init( elem, options, prop, end, easing ); } jQuery.Tween = Tween; Tween.prototype = { constructor: Tween, init: function( elem, options, prop, end, easing, unit ) { this.elem = elem; this.prop = prop; this.easing = easing || jQuery.easing._default; this.options = options; this.start = this.now = this.cur(); this.end = end; this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); }, cur: function() { var hooks = Tween.propHooks[ this.prop ]; return hooks && hooks.get ? hooks.get( this ) : Tween.propHooks._default.get( this ); }, run: function( percent ) { var eased, hooks = Tween.propHooks[ this.prop ]; if ( this.options.duration ) { this.pos = eased = jQuery.easing[ this.easing ]( percent, this.options.duration * percent, 0, 1, this.options.duration ); } else { this.pos = eased = percent; } this.now = ( this.end - this.start ) * eased + this.start; if ( this.options.step ) { this.options.step.call( this.elem, this.now, this ); } if ( hooks && hooks.set ) { hooks.set( this ); } else { Tween.propHooks._default.set( this ); } return this; } }; Tween.prototype.init.prototype = Tween.prototype; Tween.propHooks = { _default: { get: function( tween ) { var result; // Use a property on the element directly when it is not a DOM element, // or when there is no matching style property that exists. if ( tween.elem.nodeType !== 1 || tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { return tween.elem[ tween.prop ]; } // Passing an empty string as a 3rd parameter to .css will automatically // attempt a parseFloat and fallback to a string if the parse fails. // Simple values such as "10px" are parsed to Float; // complex values such as "rotate(1rad)" are returned as-is. result = jQuery.css( tween.elem, tween.prop, "" ); // Empty strings, null, undefined and "auto" are converted to 0. return !result || result === "auto" ? 0 : result; }, set: function( tween ) { // Use step hook for back compat. // Use cssHook if its there. // Use .style if available and use plain properties where available. if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.nodeType === 1 && ( jQuery.cssHooks[ tween.prop ] || tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { tween.elem[ tween.prop ] = tween.now; } } } }; // Support: IE <=9 only // Panic based approach to setting things on disconnected nodes Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { set: function( tween ) { if ( tween.elem.nodeType && tween.elem.parentNode ) { tween.elem[ tween.prop ] = tween.now; } } }; jQuery.easing = { linear: function( p ) { return p; }, swing: function( p ) { return 0.5 - Math.cos( p * Math.PI ) / 2; }, _default: "swing" }; jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point jQuery.fx.step = {}; var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/; function schedule() { if ( inProgress ) { if ( document.hidden === false && window.requestAnimationFrame ) { window.requestAnimationFrame( schedule ); } else { window.setTimeout( schedule, jQuery.fx.interval ); } jQuery.fx.tick(); } } // Animations created synchronously will run synchronously function createFxNow() { window.setTimeout( function() { fxNow = undefined; } ); return ( fxNow = Date.now() ); } // Generate parameters to create a standard animation function genFx( type, includeWidth ) { var which, i = 0, attrs = { height: type }; // If we include width, step value is 1 to do all cssExpand values, // otherwise step value is 2 to skip over Left and Right includeWidth = includeWidth ? 1 : 0; for ( ; i < 4; i += 2 - includeWidth ) { which = cssExpand[ i ]; attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; } if ( includeWidth ) { attrs.opacity = attrs.width = type; } return attrs; } function createTween( value, prop, animation ) { var tween, collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), index = 0, length = collection.length; for ( ; index < length; index++ ) { if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { // We're done with this property return tween; } } } function defaultPrefilter( elem, props, opts ) { var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree( elem ), dataShow = dataPriv.get( elem, "fxshow" ); // Queue-skipping animations hijack the fx hooks if ( !opts.queue ) { hooks = jQuery._queueHooks( elem, "fx" ); if ( hooks.unqueued == null ) { hooks.unqueued = 0; oldfire = hooks.empty.fire; hooks.empty.fire = function() { if ( !hooks.unqueued ) { oldfire(); } }; } hooks.unqueued++; anim.always( function() { // Ensure the complete handler is called before this completes anim.always( function() { hooks.unqueued--; if ( !jQuery.queue( elem, "fx" ).length ) { hooks.empty.fire(); } } ); } ); } // Detect show/hide animations for ( prop in props ) { value = props[ prop ]; if ( rfxtypes.test( value ) ) { delete props[ prop ]; toggle = toggle || value === "toggle"; if ( value === ( hidden ? "hide" : "show" ) ) { // Pretend to be hidden if this is a "show" and // there is still data from a stopped show/hide if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { hidden = true; // Ignore all other no-op show/hide data } else { continue; } } orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); } } // Bail out if this is a no-op like .hide().hide() propTween = !jQuery.isEmptyObject( props ); if ( !propTween && jQuery.isEmptyObject( orig ) ) { return; } // Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { // Support: IE <=9 - 11, Edge 12 - 15 // Record all 3 overflow attributes because IE does not infer the shorthand // from identically-valued overflowX and overflowY and Edge just mirrors // the overflowX value there. opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Identify a display type, preferring old show/hide data over the CSS cascade restoreDisplay = dataShow && dataShow.display; if ( restoreDisplay == null ) { restoreDisplay = dataPriv.get( elem, "display" ); } display = jQuery.css( elem, "display" ); if ( display === "none" ) { if ( restoreDisplay ) { display = restoreDisplay; } else { // Get nonempty value(s) by temporarily forcing visibility showHide( [ elem ], true ); restoreDisplay = elem.style.display || restoreDisplay; display = jQuery.css( elem, "display" ); showHide( [ elem ] ); } } // Animate inline elements as inline-block if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { if ( jQuery.css( elem, "float" ) === "none" ) { // Restore the original display value at the end of pure show/hide animations if ( !propTween ) { anim.done( function() { style.display = restoreDisplay; } ); if ( restoreDisplay == null ) { display = style.display; restoreDisplay = display === "none" ? "" : display; } } style.display = "inline-block"; } } } if ( opts.overflow ) { style.overflow = "hidden"; anim.always( function() { style.overflow = opts.overflow[ 0 ]; style.overflowX = opts.overflow[ 1 ]; style.overflowY = opts.overflow[ 2 ]; } ); } // Implement show/hide animations propTween = false; for ( prop in orig ) { // General show/hide setup for this element animation if ( !propTween ) { if ( dataShow ) { if ( "hidden" in dataShow ) { hidden = dataShow.hidden; } } else { dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); } // Store hidden/visible for toggle so `.stop().toggle()` "reverses" if ( toggle ) { dataShow.hidden = !hidden; } // Show elements before animating them if ( hidden ) { showHide( [ elem ], true ); } /* eslint-disable no-loop-func */ anim.done( function() { /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { showHide( [ elem ] ); } dataPriv.remove( elem, "fxshow" ); for ( prop in orig ) { jQuery.style( elem, prop, orig[ prop ] ); } } ); } // Per-property setup propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); if ( !( prop in dataShow ) ) { dataShow[ prop ] = propTween.start; if ( hidden ) { propTween.end = propTween.start; propTween.start = 0; } } } } function propFilter( props, specialEasing ) { var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass for ( index in props ) { name = camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( Array.isArray( value ) ) { easing = value[ 1 ]; value = props[ index ] = value[ 0 ]; } if ( index !== name ) { props[ name ] = value; delete props[ index ]; } hooks = jQuery.cssHooks[ name ]; if ( hooks && "expand" in hooks ) { value = hooks.expand( value ); delete props[ name ]; // Not quite $.extend, this won't overwrite existing keys. // Reusing 'index' because we have the correct "name" for ( index in value ) { if ( !( index in props ) ) { props[ index ] = value[ index ]; specialEasing[ index ] = easing; } } } else { specialEasing[ name ] = easing; } } } function Animation( elem, properties, options ) { var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always( function() { // Don't match elem in the :animated selector delete tick.elem; } ), tick = function() { if ( stopped ) { return false; } var currentTime = fxNow || createFxNow(), remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), // Support: Android 2.3 only // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; for ( ; index < length; index++ ) { animation.tweens[ index ].run( percent ); } deferred.notifyWith( elem, [ animation, percent, remaining ] ); // If there's more to do, yield if ( percent < 1 && length ) { return remaining; } // If this was an empty animation, synthesize a final progress notification if ( !length ) { deferred.notifyWith( elem, [ animation, 1, 0 ] ); } // Resolve the animation and report its conclusion deferred.resolveWith( elem, [ animation ] ); return false; }, animation = deferred.promise( { elem: elem, props: jQuery.extend( {}, properties ), opts: jQuery.extend( true, { specialEasing: {}, easing: jQuery.easing._default }, options ), originalProperties: properties, originalOptions: options, startTime: fxNow || createFxNow(), duration: options.duration, tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, stop: function( gotoEnd ) { var index = 0, // If we are going to the end, we want to run all the tweens // otherwise we skip this part length = gotoEnd ? animation.tweens.length : 0; if ( stopped ) { return this; } stopped = true; for ( ; index < length; index++ ) { animation.tweens[ index ].run( 1 ); } // Resolve when we played the last frame; otherwise, reject if ( gotoEnd ) { deferred.notifyWith( elem, [ animation, 1, 0 ] ); deferred.resolveWith( elem, [ animation, gotoEnd ] ); } else { deferred.rejectWith( elem, [ animation, gotoEnd ] ); } return this; } } ), props = animation.props; propFilter( props, animation.opts.specialEasing ); for ( ; index < length; index++ ) { result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { if ( isFunction( result.stop ) ) { jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = result.stop.bind( result ); } return result; } } jQuery.map( props, createTween, animation ); if ( isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } // Attach callbacks from options animation .progress( animation.opts.progress ) .done( animation.opts.done, animation.opts.complete ) .fail( animation.opts.fail ) .always( animation.opts.always ); jQuery.fx.timer( jQuery.extend( tick, { elem: elem, anim: animation, queue: animation.opts.queue } ) ); return animation; } jQuery.Animation = jQuery.extend( Animation, { tweeners: { "*": [ function( prop, value ) { var tween = this.createTween( prop, value ); adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); return tween; } ] }, tweener: function( props, callback ) { if ( isFunction( props ) ) { callback = props; props = [ "*" ]; } else { props = props.match( rnothtmlwhite ); } var prop, index = 0, length = props.length; for ( ; index < length; index++ ) { prop = props[ index ]; Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; Animation.tweeners[ prop ].unshift( callback ); } }, prefilters: [ defaultPrefilter ], prefilter: function( callback, prepend ) { if ( prepend ) { Animation.prefilters.unshift( callback ); } else { Animation.prefilters.push( callback ); } } } ); jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || isFunction( speed ) && speed, duration: speed, easing: fn && easing || easing && !isFunction( easing ) && easing }; // Go to the end state if fx are off if ( jQuery.fx.off ) { opt.duration = 0; } else { if ( typeof opt.duration !== "number" ) { if ( opt.duration in jQuery.fx.speeds ) { opt.duration = jQuery.fx.speeds[ opt.duration ]; } else { opt.duration = jQuery.fx.speeds._default; } } } // Normalize opt.queue - true/undefined/null -> "fx" if ( opt.queue == null || opt.queue === true ) { opt.queue = "fx"; } // Queueing opt.old = opt.complete; opt.complete = function() { if ( isFunction( opt.old ) ) { opt.old.call( this ); } if ( opt.queue ) { jQuery.dequeue( this, opt.queue ); } }; return opt; }; jQuery.fn.extend( { fadeTo: function( speed, to, easing, callback ) { // Show any hidden elements after setting opacity to 0 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() // Animate to the value specified .end().animate( { opacity: to }, speed, easing, callback ); }, animate: function( prop, speed, easing, callback ) { var empty = jQuery.isEmptyObject( prop ), optall = jQuery.speed( speed, easing, callback ), doAnimation = function() { // Operate on a copy of prop so per-property easing won't be lost var anim = Animation( this, jQuery.extend( {}, prop ), optall ); // Empty animations, or finishing resolves immediately if ( empty || dataPriv.get( this, "finish" ) ) { anim.stop( true ); } }; doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : this.queue( optall.queue, doAnimation ); }, stop: function( type, clearQueue, gotoEnd ) { var stopQueue = function( hooks ) { var stop = hooks.stop; delete hooks.stop; stop( gotoEnd ); }; if ( typeof type !== "string" ) { gotoEnd = clearQueue; clearQueue = type; type = undefined; } if ( clearQueue ) { this.queue( type || "fx", [] ); } return this.each( function() { var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = dataPriv.get( this ); if ( index ) { if ( data[ index ] && data[ index ].stop ) { stopQueue( data[ index ] ); } } else { for ( index in data ) { if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { stopQueue( data[ index ] ); } } } for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && ( type == null || timers[ index ].queue === type ) ) { timers[ index ].anim.stop( gotoEnd ); dequeue = false; timers.splice( index, 1 ); } } // Start the next in the queue if the last step wasn't forced. // Timers currently will call their complete callbacks, which // will dequeue but only if they were gotoEnd. if ( dequeue || !gotoEnd ) { jQuery.dequeue( this, type ); } } ); }, finish: function( type ) { if ( type !== false ) { type = type || "fx"; } return this.each( function() { var index, data = dataPriv.get( this ), queue = data[ type + "queue" ], hooks = data[ type + "queueHooks" ], timers = jQuery.timers, length = queue ? queue.length : 0; // Enable finishing flag on private data data.finish = true; // Empty the queue first jQuery.queue( this, type, [] ); if ( hooks && hooks.stop ) { hooks.stop.call( this, true ); } // Look for any active animations, and finish them for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && timers[ index ].queue === type ) { timers[ index ].anim.stop( true ); timers.splice( index, 1 ); } } // Look for any animations in the old queue and finish them for ( index = 0; index < length; index++ ) { if ( queue[ index ] && queue[ index ].finish ) { queue[ index ].finish.call( this ); } } // Turn off finishing flag delete data.finish; } ); } } ); jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? cssFn.apply( this, arguments ) : this.animate( genFx( name, true ), speed, easing, callback ); }; } ); // Generate shortcuts for custom animations jQuery.each( { slideDown: genFx( "show" ), slideUp: genFx( "hide" ), slideToggle: genFx( "toggle" ), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function( name, props ) { jQuery.fn[ name ] = function( speed, easing, callback ) { return this.animate( props, speed, easing, callback ); }; } ); jQuery.timers = []; jQuery.fx.tick = function() { var timer, i = 0, timers = jQuery.timers; fxNow = Date.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; // Run the timer and safely remove it when done (allowing for external removal) if ( !timer() && timers[ i ] === timer ) { timers.splice( i--, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } fxNow = undefined; }; jQuery.fx.timer = function( timer ) { jQuery.timers.push( timer ); jQuery.fx.start(); }; jQuery.fx.interval = 13; jQuery.fx.start = function() { if ( inProgress ) { return; } inProgress = true; schedule(); }; jQuery.fx.stop = function() { inProgress = null; }; jQuery.fx.speeds = { slow: 600, fast: 200, // Default speed _default: 400 }; // Based off of the plugin by Clint Helfers, with permission. // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ jQuery.fn.delay = function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || "fx"; return this.queue( type, function( next, hooks ) { var timeout = window.setTimeout( next, time ); hooks.stop = function() { window.clearTimeout( timeout ); }; } ); }; ( function() { var input = document.createElement( "input" ), select = document.createElement( "select" ), opt = select.appendChild( document.createElement( "option" ) ); input.type = "checkbox"; // Support: Android <=4.3 only // Default value for a checkbox should be "on" support.checkOn = input.value !== ""; // Support: IE <=11 only // Must access selectedIndex to make default options select support.optSelected = opt.selected; // Support: IE <=11 only // An input loses its value after becoming a radio input = document.createElement( "input" ); input.value = "t"; input.type = "radio"; support.radioValue = input.value === "t"; } )(); var boolHook, attrHandle = jQuery.expr.attrHandle; jQuery.fn.extend( { attr: function( name, value ) { return access( this, jQuery.attr, name, value, arguments.length > 1 ); }, removeAttr: function( name ) { return this.each( function() { jQuery.removeAttr( this, name ); } ); } } ); jQuery.extend( { attr: function( elem, name, value ) { var ret, hooks, nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes if ( nType === 3 || nType === 8 || nType === 2 ) { return; } // Fallback to prop when attributes are not supported if ( typeof elem.getAttribute === "undefined" ) { return jQuery.prop( elem, name, value ); } // Attribute hooks are determined by the lowercase version // Grab necessary hook if one is defined if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { hooks = jQuery.attrHooks[ name.toLowerCase() ] || ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); } if ( value !== undefined ) { if ( value === null ) { jQuery.removeAttr( elem, name ); return; } if ( hooks && "set" in hooks && ( ret = hooks.set( elem, value, name ) ) !== undefined ) { return ret; } elem.setAttribute( name, value + "" ); return value; } if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { return ret; } ret = jQuery.find.attr( elem, name ); // Non-existent attributes return null, we normalize to undefined return ret == null ? undefined : ret; }, attrHooks: { type: { set: function( elem, value ) { if ( !support.radioValue && value === "radio" && nodeName( elem, "input" ) ) { var val = elem.value; elem.setAttribute( "type", value ); if ( val ) { elem.value = val; } return value; } } } }, removeAttr: function( elem, value ) { var name, i = 0, // Attribute names can contain non-HTML whitespace characters // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 attrNames = value && value.match( rnothtmlwhite ); if ( attrNames && elem.nodeType === 1 ) { while ( ( name = attrNames[ i++ ] ) ) { elem.removeAttribute( name ); } } } } ); // Hooks for boolean attributes boolHook = { set: function( elem, value, name ) { if ( value === false ) { // Remove boolean attributes when set to false jQuery.removeAttr( elem, name ); } else { elem.setAttribute( name, name ); } return name; } }; jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { var getter = attrHandle[ name ] || jQuery.find.attr; attrHandle[ name ] = function( elem, name, isXML ) { var ret, handle, lowercaseName = name.toLowerCase(); if ( !isXML ) { // Avoid an infinite loop by temporarily removing this function from the getter handle = attrHandle[ lowercaseName ]; attrHandle[ lowercaseName ] = ret; ret = getter( elem, name, isXML ) != null ? lowercaseName : null; attrHandle[ lowercaseName ] = handle; } return ret; }; } ); var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; jQuery.fn.extend( { prop: function( name, value ) { return access( this, jQuery.prop, name, value, arguments.length > 1 ); }, removeProp: function( name ) { return this.each( function() { delete this[ jQuery.propFix[ name ] || name ]; } ); } } ); jQuery.extend( { prop: function( elem, name, value ) { var ret, hooks, nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes if ( nType === 3 || nType === 8 || nType === 2 ) { return; } if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { // Fix name and attach hooks name = jQuery.propFix[ name ] || name; hooks = jQuery.propHooks[ name ]; } if ( value !== undefined ) { if ( hooks && "set" in hooks && ( ret = hooks.set( elem, value, name ) ) !== undefined ) { return ret; } return ( elem[ name ] = value ); } if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { return ret; } return elem[ name ]; }, propHooks: { tabIndex: { get: function( elem ) { // Support: IE <=9 - 11 only // elem.tabIndex doesn't always return the // correct value when it hasn't been explicitly set // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ // Use proper attribute retrieval(#12072) var tabindex = jQuery.find.attr( elem, "tabindex" ); if ( tabindex ) { return parseInt( tabindex, 10 ); } if ( rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ) { return 0; } return -1; } } }, propFix: { "for": "htmlFor", "class": "className" } } ); // Support: IE <=11 only // Accessing the selectedIndex property // forces the browser to respect setting selected // on the option // The getter ensures a default option is selected // when in an optgroup // eslint rule "no-unused-expressions" is disabled for this code // since it considers such accessions noop if ( !support.optSelected ) { jQuery.propHooks.selected = { get: function( elem ) { /* eslint no-unused-expressions: "off" */ var parent = elem.parentNode; if ( parent && parent.parentNode ) { parent.parentNode.selectedIndex; } return null; }, set: function( elem ) { /* eslint no-unused-expressions: "off" */ var parent = elem.parentNode; if ( parent ) { parent.selectedIndex; if ( parent.parentNode ) { parent.parentNode.selectedIndex; } } } }; } jQuery.each( [ "tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable" ], function() { jQuery.propFix[ this.toLowerCase() ] = this; } ); // Strip and collapse whitespace according to HTML spec // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace function stripAndCollapse( value ) { var tokens = value.match( rnothtmlwhite ) || []; return tokens.join( " " ); } function getClass( elem ) { return elem.getAttribute && elem.getAttribute( "class" ) || ""; } function classesToArray( value ) { if ( Array.isArray( value ) ) { return value; } if ( typeof value === "string" ) { return value.match( rnothtmlwhite ) || []; } return []; } jQuery.fn.extend( { addClass: function( value ) { var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; if ( isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); } ); } classes = classesToArray( value ); if ( classes.length ) { while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); if ( cur ) { j = 0; while ( ( clazz = classes[ j++ ] ) ) { if ( cur.indexOf( " " + clazz + " " ) < 0 ) { cur += clazz + " "; } } // Only assign if different to avoid unneeded rendering. finalValue = stripAndCollapse( cur ); if ( curValue !== finalValue ) { elem.setAttribute( "class", finalValue ); } } } } return this; }, removeClass: function( value ) { var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; if ( isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); } ); } if ( !arguments.length ) { return this.attr( "class", "" ); } classes = classesToArray( value ); if ( classes.length ) { while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); // This expression is here for better compressibility (see addClass) cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); if ( cur ) { j = 0; while ( ( clazz = classes[ j++ ] ) ) { // Remove *all* instances while ( cur.indexOf( " " + clazz + " " ) > -1 ) { cur = cur.replace( " " + clazz + " ", " " ); } } // Only assign if different to avoid unneeded rendering. finalValue = stripAndCollapse( cur ); if ( curValue !== finalValue ) { elem.setAttribute( "class", finalValue ); } } } } return this; }, toggleClass: function( value, stateVal ) { var type = typeof value, isValidValue = type === "string" || Array.isArray( value ); if ( typeof stateVal === "boolean" && isValidValue ) { return stateVal ? this.addClass( value ) : this.removeClass( value ); } if ( isFunction( value ) ) { return this.each( function( i ) { jQuery( this ).toggleClass( value.call( this, i, getClass( this ), stateVal ), stateVal ); } ); } return this.each( function() { var className, i, self, classNames; if ( isValidValue ) { // Toggle individual class names i = 0; self = jQuery( this ); classNames = classesToArray( value ); while ( ( className = classNames[ i++ ] ) ) { // Check each className given, space separated list if ( self.hasClass( className ) ) { self.removeClass( className ); } else { self.addClass( className ); } } // Toggle whole class name } else if ( value === undefined || type === "boolean" ) { className = getClass( this ); if ( className ) { // Store className if set dataPriv.set( this, "__className__", className ); } // If the element has a class name or if we're passed `false`, // then remove the whole classname (if there was one, the above saved it). // Otherwise bring back whatever was previously saved (if anything), // falling back to the empty string if nothing was stored. if ( this.setAttribute ) { this.setAttribute( "class", className || value === false ? "" : dataPriv.get( this, "__className__" ) || "" ); } } } ); }, hasClass: function( selector ) { var className, elem, i = 0; className = " " + selector + " "; while ( ( elem = this[ i++ ] ) ) { if ( elem.nodeType === 1 && ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { return true; } } return false; } } ); var rreturn = /\r/g; jQuery.fn.extend( { val: function( value ) { var hooks, ret, valueIsFunction, elem = this[ 0 ]; if ( !arguments.length ) { if ( elem ) { hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; if ( hooks && "get" in hooks && ( ret = hooks.get( elem, "value" ) ) !== undefined ) { return ret; } ret = elem.value; // Handle most common string cases if ( typeof ret === "string" ) { return ret.replace( rreturn, "" ); } // Handle cases where value is null/undef or number return ret == null ? "" : ret; } return; } valueIsFunction = isFunction( value ); return this.each( function( i ) { var val; if ( this.nodeType !== 1 ) { return; } if ( valueIsFunction ) { val = value.call( this, i, jQuery( this ).val() ); } else { val = value; } // Treat null/undefined as ""; convert numbers to string if ( val == null ) { val = ""; } else if ( typeof val === "number" ) { val += ""; } else if ( Array.isArray( val ) ) { val = jQuery.map( val, function( value ) { return value == null ? "" : value + ""; } ); } hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; // If set returns undefined, fall back to normal setting if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { this.value = val; } } ); } } ); jQuery.extend( { valHooks: { option: { get: function( elem ) { var val = jQuery.find.attr( elem, "value" ); return val != null ? val : // Support: IE <=10 - 11 only // option.text throws exceptions (#14686, #14858) // Strip and collapse whitespace // https://html.spec.whatwg.org/#strip-and-collapse-whitespace stripAndCollapse( jQuery.text( elem ) ); } }, select: { get: function( elem ) { var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length; if ( index < 0 ) { i = max; } else { i = one ? index : 0; } // Loop through all the selected options for ( ; i < max; i++ ) { option = options[ i ]; // Support: IE <=9 only // IE8-9 doesn't update selected after form reset (#2551) if ( ( option.selected || i === index ) && // Don't return options that are disabled or in a disabled optgroup !option.disabled && ( !option.parentNode.disabled || !nodeName( option.parentNode, "optgroup" ) ) ) { // Get the specific value for the option value = jQuery( option ).val(); // We don't need an array for one selects if ( one ) { return value; } // Multi-Selects return an array values.push( value ); } } return values; }, set: function( elem, value ) { var optionSet, option, options = elem.options, values = jQuery.makeArray( value ), i = options.length; while ( i-- ) { option = options[ i ]; /* eslint-disable no-cond-assign */ if ( option.selected = jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 ) { optionSet = true; } /* eslint-enable no-cond-assign */ } // Force browsers to behave consistently when non-matching value is set if ( !optionSet ) { elem.selectedIndex = -1; } return values; } } } } ); // Radios and checkboxes getter/setter jQuery.each( [ "radio", "checkbox" ], function() { jQuery.valHooks[ this ] = { set: function( elem, value ) { if ( Array.isArray( value ) ) { return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); } } }; if ( !support.checkOn ) { jQuery.valHooks[ this ].get = function( elem ) { return elem.getAttribute( "value" ) === null ? "on" : elem.value; }; } } ); // Return jQuery for attributes-only inclusion support.focusin = "onfocusin" in window; var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function( e ) { e.stopPropagation(); }; jQuery.extend( jQuery.event, { trigger: function( event, data, elem, onlyHandlers ) { var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf( "." ) > -1 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split( "." ); type = namespaces.shift(); namespaces.sort(); } ontype = type.indexOf( ":" ) < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string event = event[ jQuery.expando ] ? event : new jQuery.Event( type, typeof event === "object" && event ); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) event.isTrigger = onlyHandlers ? 2 : 3; event.namespace = namespaces.join( "." ); event.rnamespace = event.namespace ? new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : null; // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data == null ? [ event ] : jQuery.makeArray( data, [ event ] ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { cur = cur.parentNode; } for ( ; cur; cur = cur.parentNode ) { eventPath.push( cur ); tmp = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( tmp === ( elem.ownerDocument || document ) ) { eventPath.push( tmp.defaultView || tmp.parentWindow || window ); } } // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { lastElement = cur; event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Native handler handle = ontype && cur[ ontype ]; if ( handle && handle.apply && acceptData( cur ) ) { event.result = handle.apply( cur, data ); if ( event.result === false ) { event.preventDefault(); } } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( ( !special._default || special._default.apply( eventPath.pop(), data ) === false ) && acceptData( elem ) ) { // Call a native DOM method on the target with the same name as the event. // Don't do default actions on window, that's where global variables be (#6170) if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; if ( tmp ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; if ( event.isPropagationStopped() ) { lastElement.addEventListener( type, stopPropagationCallback ); } elem[ type ](); if ( event.isPropagationStopped() ) { lastElement.removeEventListener( type, stopPropagationCallback ); } jQuery.event.triggered = undefined; if ( tmp ) { elem[ ontype ] = tmp; } } } } return event.result; }, // Piggyback on a donor event to simulate a different one // Used only for `focus(in | out)` events simulate: function( type, elem, event ) { var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true } ); jQuery.event.trigger( e, null, elem ); } } ); jQuery.fn.extend( { trigger: function( type, data ) { return this.each( function() { jQuery.event.trigger( type, data, this ); } ); }, triggerHandler: function( type, data ) { var elem = this[ 0 ]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } } } ); // Support: Firefox <=44 // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 // // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 // focus(in | out) events fire after focus & blur events, // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 if ( !support.focusin ) { jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { // Attach a single capturing handler on the document while someone wants focusin/focusout var handler = function( event ) { jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); }; jQuery.event.special[ fix ] = { setup: function() { // Handle: regular nodes (via `this.ownerDocument`), window // (via `this.document`) & document (via `this`). var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ); if ( !attaches ) { doc.addEventListener( orig, handler, true ); } dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ) - 1; if ( !attaches ) { doc.removeEventListener( orig, handler, true ); dataPriv.remove( doc, fix ); } else { dataPriv.access( doc, fix, attaches ); } } }; } ); } var location = window.location; var nonce = { guid: Date.now() }; var rquery = ( /\?/ ); // Cross-browser xml parsing jQuery.parseXML = function( data ) { var xml, parserErrorElem; if ( !data || typeof data !== "string" ) { return null; } // Support: IE 9 - 11 only // IE throws on parseFromString with invalid input. try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); } catch ( e ) {} parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; if ( !xml || parserErrorElem ) { jQuery.error( "Invalid XML: " + ( parserErrorElem ? jQuery.map( parserErrorElem.childNodes, function( el ) { return el.textContent; } ).join( "\n" ) : data ) ); } return xml; }; var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; function buildParams( prefix, obj, traditional, add ) { var name; if ( Array.isArray( obj ) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { if ( traditional || rbracket.test( prefix ) ) { // Treat each array item as a scalar. add( prefix, v ); } else { // Item is non-scalar (array or object), encode its numeric index. buildParams( prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", v, traditional, add ); } } ); } else if ( !traditional && toType( obj ) === "object" ) { // Serialize object item. for ( name in obj ) { buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); } } else { // Serialize scalar item. add( prefix, obj ); } } // Serialize an array of form elements or a set of // key/values into a query string jQuery.param = function( a, traditional ) { var prefix, s = [], add = function( key, valueOrFunction ) { // If value is a function, invoke it and use its return value var value = isFunction( valueOrFunction ) ? valueOrFunction() : valueOrFunction; s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value == null ? "" : value ); }; if ( a == null ) { return ""; } // If an array was passed in, assume that it is an array of form elements. if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); } ); } else { // If traditional, encode the "old" way (the way 1.3.2 or older // did it), otherwise encode params recursively. for ( prefix in a ) { buildParams( prefix, a[ prefix ], traditional, add ); } } // Return the resulting serialization return s.join( "&" ); }; jQuery.fn.extend( { serialize: function() { return jQuery.param( this.serializeArray() ); }, serializeArray: function() { return this.map( function() { // Can add propHook for "elements" to filter or add form elements var elements = jQuery.prop( this, "elements" ); return elements ? jQuery.makeArray( elements ) : this; } ).filter( function() { var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works return this.name && !jQuery( this ).is( ":disabled" ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); } ).map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { return null; } if ( Array.isArray( val ) ) { return jQuery.map( val, function( val ) { return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; } ); } return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; } ).get(); } } ); var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, // #7653, #8125, #8152: local protocol detection rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, /* Prefilters * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) * 2) These are called: * - BEFORE asking for a transport * - AFTER param serialization (s.data is a string if s.processData is true) * 3) key is the dataType * 4) the catchall symbol "*" can be used * 5) execution will start with transport dataType and THEN continue down to "*" if needed */ prefilters = {}, /* Transports bindings * 1) key is the dataType * 2) the catchall symbol "*" can be used * 3) selection will start with transport dataType and THEN go to "*" if needed */ transports = {}, // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression allTypes = "*/".concat( "*" ), // Anchor tag for parsing the document origin originAnchor = document.createElement( "a" ); originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { // dataTypeExpression is optional and defaults to "*" return function( dataTypeExpression, func ) { if ( typeof dataTypeExpression !== "string" ) { func = dataTypeExpression; dataTypeExpression = "*"; } var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; if ( isFunction( func ) ) { // For each dataType in the dataTypeExpression while ( ( dataType = dataTypes[ i++ ] ) ) { // Prepend if requested if ( dataType[ 0 ] === "+" ) { dataType = dataType.slice( 1 ) || "*"; ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); // Otherwise append } else { ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); } } } }; } // Base inspection function for prefilters and transports function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { var inspected = {}, seekingTransport = ( structure === transports ); function inspect( dataType ) { var selected; inspected[ dataType ] = true; jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { options.dataTypes.unshift( dataTypeOrTransport ); inspect( dataTypeOrTransport ); return false; } else if ( seekingTransport ) { return !( selected = dataTypeOrTransport ); } } ); return selected; } return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); } // A special extend for ajax options // that takes "flat" options (not to be deep extended) // Fixes #9887 function ajaxExtend( target, src ) { var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; for ( key in src ) { if ( src[ key ] !== undefined ) { ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; } } if ( deep ) { jQuery.extend( true, target, deep ); } return target; } /* Handles responses to an ajax request: * - finds the right dataType (mediates between content-type and expected dataType) * - returns the corresponding response */ function ajaxHandleResponses( s, jqXHR, responses ) { var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process while ( dataTypes[ 0 ] === "*" ) { dataTypes.shift(); if ( ct === undefined ) { ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); } } // Check if we're dealing with a known content-type if ( ct ) { for ( type in contents ) { if ( contents[ type ] && contents[ type ].test( ct ) ) { dataTypes.unshift( type ); break; } } } // Check to see if we have a response for the expected dataType if ( dataTypes[ 0 ] in responses ) { finalDataType = dataTypes[ 0 ]; } else { // Try convertible dataTypes for ( type in responses ) { if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { finalDataType = type; break; } if ( !firstDataType ) { firstDataType = type; } } // Or just use first one finalDataType = finalDataType || firstDataType; } // If we found a dataType // We add the dataType to the list if needed // and return the corresponding response if ( finalDataType ) { if ( finalDataType !== dataTypes[ 0 ] ) { dataTypes.unshift( finalDataType ); } return responses[ finalDataType ]; } } /* Chain conversions given the request and the original response * Also sets the responseXXX fields on the jqXHR instance */ function ajaxConvert( s, response, jqXHR, isSuccess ) { var conv2, current, conv, tmp, prev, converters = {}, // Work with a copy of dataTypes in case we need to modify it for conversion dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys if ( dataTypes[ 1 ] ) { for ( conv in s.converters ) { converters[ conv.toLowerCase() ] = s.converters[ conv ]; } } current = dataTypes.shift(); // Convert to each sequential dataType while ( current ) { if ( s.responseFields[ current ] ) { jqXHR[ s.responseFields[ current ] ] = response; } // Apply the dataFilter if provided if ( !prev && isSuccess && s.dataFilter ) { response = s.dataFilter( response, s.dataType ); } prev = current; current = dataTypes.shift(); if ( current ) { // There's only work to do if current dataType is non-auto if ( current === "*" ) { current = prev; // Convert response if prev dataType is non-auto and differs from current } else if ( prev !== "*" && prev !== current ) { // Seek a direct converter conv = converters[ prev + " " + current ] || converters[ "* " + current ]; // If none found, seek a pair if ( !conv ) { for ( conv2 in converters ) { // If conv2 outputs current tmp = conv2.split( " " ); if ( tmp[ 1 ] === current ) { // If prev can be converted to accepted input conv = converters[ prev + " " + tmp[ 0 ] ] || converters[ "* " + tmp[ 0 ] ]; if ( conv ) { // Condense equivalence converters if ( conv === true ) { conv = converters[ conv2 ]; // Otherwise, insert the intermediate dataType } else if ( converters[ conv2 ] !== true ) { current = tmp[ 0 ]; dataTypes.unshift( tmp[ 1 ] ); } break; } } } } // Apply converter (if not an equivalence) if ( conv !== true ) { // Unless errors are allowed to bubble, catch and return them if ( conv && s.throws ) { response = conv( response ); } else { try { response = conv( response ); } catch ( e ) { return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; } } } } } } return { state: "success", data: response }; } jQuery.extend( { // Counter for holding the number of active queries active: 0, // Last-Modified header cache for next request lastModified: {}, etag: {}, ajaxSettings: { url: location.href, type: "GET", isLocal: rlocalProtocol.test( location.protocol ), global: true, processData: true, async: true, contentType: "application/x-www-form-urlencoded; charset=UTF-8", /* timeout: 0, data: null, dataType: null, username: null, password: null, cache: null, throws: false, traditional: false, headers: {}, */ accepts: { "*": allTypes, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, // Data converters // Keys separate source (or catchall "*") and destination types with a single space converters: { // Convert anything to text "* text": String, // Text to html (true = no transformation) "text html": true, // Evaluate text as a json expression "text json": JSON.parse, // Parse text as xml "text xml": jQuery.parseXML }, // For options that shouldn't be deep extended: // you can add your own custom options here if // and when you create one that shouldn't be // deep extended (see ajaxExtend) flatOptions: { url: true, context: true } }, // Creates a full fledged settings object into target // with both ajaxSettings and settings fields. // If target is omitted, writes into ajaxSettings. ajaxSetup: function( target, settings ) { return settings ? // Building a settings object ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : // Extending ajaxSettings ajaxExtend( jQuery.ajaxSettings, target ); }, ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), ajaxTransport: addToPrefiltersOrTransports( transports ), // Main method ajax: function( url, options ) { // If url is an object, simulate pre-1.5 signature if ( typeof url === "object" ) { options = url; url = undefined; } // Force options to be an object options = options || {}; var transport, // URL without anti-cache param cacheURL, // Response headers responseHeadersString, responseHeaders, // timeout handle timeoutTimer, // Url cleanup var urlAnchor, // Request state (becomes false upon send and true upon completion) completed, // To know if global events are to be dispatched fireGlobals, // Loop variable i, // uncached part of the url uncached, // Create the final options object s = jQuery.ajaxSetup( {}, options ), // Callbacks context callbackContext = s.context || s, // Context for global events is callbackContext if it is a DOM node or jQuery collection globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? jQuery( callbackContext ) : jQuery.event, // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks( "once memory" ), // Status-dependent callbacks statusCode = s.statusCode || {}, // Headers (they are sent all at once) requestHeaders = {}, requestHeadersNames = {}, // Default abort message strAbort = "canceled", // Fake xhr jqXHR = { readyState: 0, // Builds headers hashtable if needed getResponseHeader: function( key ) { var match; if ( completed ) { if ( !responseHeaders ) { responseHeaders = {}; while ( ( match = rheaders.exec( responseHeadersString ) ) ) { responseHeaders[ match[ 1 ].toLowerCase() + " " ] = ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) .concat( match[ 2 ] ); } } match = responseHeaders[ key.toLowerCase() + " " ]; } return match == null ? null : match.join( ", " ); }, // Raw string getAllResponseHeaders: function() { return completed ? responseHeadersString : null; }, // Caches the header setRequestHeader: function( name, value ) { if ( completed == null ) { name = requestHeadersNames[ name.toLowerCase() ] = requestHeadersNames[ name.toLowerCase() ] || name; requestHeaders[ name ] = value; } return this; }, // Overrides response content-type header overrideMimeType: function( type ) { if ( completed == null ) { s.mimeType = type; } return this; }, // Status-dependent callbacks statusCode: function( map ) { var code; if ( map ) { if ( completed ) { // Execute the appropriate callbacks jqXHR.always( map[ jqXHR.status ] ); } else { // Lazy-add the new callbacks in a way that preserves old ones for ( code in map ) { statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; } } } return this; }, // Cancel the request abort: function( statusText ) { var finalText = statusText || strAbort; if ( transport ) { transport.abort( finalText ); } done( 0, finalText ); return this; } }; // Attach deferreds deferred.promise( jqXHR ); // Add protocol if not provided (prefilters might expect it) // Handle falsy url in the settings object (#10093: consistency with old signature) // We also use the url parameter if available s.url = ( ( url || s.url || location.href ) + "" ) .replace( rprotocol, location.protocol + "//" ); // Alias method option to type as per ticket #12004 s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; // A cross-domain request is in order when the origin doesn't match the current origin. if ( s.crossDomain == null ) { urlAnchor = document.createElement( "a" ); // Support: IE <=8 - 11, Edge 12 - 15 // IE throws exception on accessing the href property if url is malformed, // e.g. http://example.com:80x/ try { urlAnchor.href = s.url; // Support: IE <=8 - 11 only // Anchor's host property isn't correctly set when s.url is relative urlAnchor.href = urlAnchor.href; s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host; } catch ( e ) { // If there is an error parsing the URL, assume it is crossDomain, // it can be rejected by the transport if it is invalid s.crossDomain = true; } } // Convert data if not already a string if ( s.data && s.processData && typeof s.data !== "string" ) { s.data = jQuery.param( s.data, s.traditional ); } // Apply prefilters inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); // If request was aborted inside a prefilter, stop there if ( completed ) { return jqXHR; } // We can fire global events as of now if asked to // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) fireGlobals = jQuery.event && s.global; // Watch for a new set of requests if ( fireGlobals && jQuery.active++ === 0 ) { jQuery.event.trigger( "ajaxStart" ); } // Uppercase the type s.type = s.type.toUpperCase(); // Determine if request has content s.hasContent = !rnoContent.test( s.type ); // Save the URL in case we're toying with the If-Modified-Since // and/or If-None-Match header later on // Remove hash to simplify url manipulation cacheURL = s.url.replace( rhash, "" ); // More options handling for requests with no content if ( !s.hasContent ) { // Remember the hash so we can put it back uncached = s.url.slice( cacheURL.length ); // If data is available and should be processed, append data to url if ( s.data && ( s.processData || typeof s.data === "string" ) ) { cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; // #9682: remove data so that it's not used in an eventual retry delete s.data; } // Add or update anti-cache param if needed if ( s.cache === false ) { cacheURL = cacheURL.replace( rantiCache, "$1" ); uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + uncached; } // Put hash and anti-cache on the URL that will be requested (gh-1732) s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658) } else if ( s.data && s.processData && ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { s.data = s.data.replace( r20, "+" ); } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { if ( jQuery.lastModified[ cacheURL ] ) { jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); } if ( jQuery.etag[ cacheURL ] ) { jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); } } // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { jqXHR.setRequestHeader( "Content-Type", s.contentType ); } // Set the Accepts header for the server, depending on the dataType jqXHR.setRequestHeader( "Accept", s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? s.accepts[ s.dataTypes[ 0 ] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : s.accepts[ "*" ] ); // Check for headers option for ( i in s.headers ) { jqXHR.setRequestHeader( i, s.headers[ i ] ); } // Allow custom headers/mimetypes and early abort if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { // Abort if not done already and return return jqXHR.abort(); } // Aborting is no longer a cancellation strAbort = "abort"; // Install callbacks on deferreds completeDeferred.add( s.complete ); jqXHR.done( s.success ); jqXHR.fail( s.error ); // Get transport transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); // If no transport, we auto-abort if ( !transport ) { done( -1, "No Transport" ); } else { jqXHR.readyState = 1; // Send global event if ( fireGlobals ) { globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); } // If request was aborted inside ajaxSend, stop there if ( completed ) { return jqXHR; } // Timeout if ( s.async && s.timeout > 0 ) { timeoutTimer = window.setTimeout( function() { jqXHR.abort( "timeout" ); }, s.timeout ); } try { completed = false; transport.send( requestHeaders, done ); } catch ( e ) { // Rethrow post-completion exceptions if ( completed ) { throw e; } // Propagate others as results done( -1, e ); } } // Callback for when everything is done function done( status, nativeStatusText, responses, headers ) { var isSuccess, success, error, response, modified, statusText = nativeStatusText; // Ignore repeat invocations if ( completed ) { return; } completed = true; // Clear timeout if it exists if ( timeoutTimer ) { window.clearTimeout( timeoutTimer ); } // Dereference transport for early garbage collection // (no matter how long the jqXHR object will be used) transport = undefined; // Cache response headers responseHeadersString = headers || ""; // Set readyState jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful isSuccess = status >= 200 && status < 300 || status === 304; // Get response data if ( responses ) { response = ajaxHandleResponses( s, jqXHR, responses ); } // Use a noop converter for missing script but not if jsonp if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 && jQuery.inArray( "json", s.dataTypes ) < 0 ) { s.converters[ "text script" ] = function() {}; } // Convert no matter what (that way responseXXX fields are always set) response = ajaxConvert( s, response, jqXHR, isSuccess ); // If successful, handle type chaining if ( isSuccess ) { // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { modified = jqXHR.getResponseHeader( "Last-Modified" ); if ( modified ) { jQuery.lastModified[ cacheURL ] = modified; } modified = jqXHR.getResponseHeader( "etag" ); if ( modified ) { jQuery.etag[ cacheURL ] = modified; } } // if no content if ( status === 204 || s.type === "HEAD" ) { statusText = "nocontent"; // if not modified } else if ( status === 304 ) { statusText = "notmodified"; // If we have data, let's convert it } else { statusText = response.state; success = response.data; error = response.error; isSuccess = !error; } } else { // Extract error from statusText and normalize for non-aborts error = statusText; if ( status || !statusText ) { statusText = "error"; if ( status < 0 ) { status = 0; } } } // Set data for the fake xhr object jqXHR.status = status; jqXHR.statusText = ( nativeStatusText || statusText ) + ""; // Success/Error if ( isSuccess ) { deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); } else { deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); } // Status-dependent callbacks jqXHR.statusCode( statusCode ); statusCode = undefined; if ( fireGlobals ) { globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", [ jqXHR, s, isSuccess ? success : error ] ); } // Complete completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); if ( fireGlobals ) { globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); // Handle the global AJAX counter if ( !( --jQuery.active ) ) { jQuery.event.trigger( "ajaxStop" ); } } } return jqXHR; }, getJSON: function( url, data, callback ) { return jQuery.get( url, data, callback, "json" ); }, getScript: function( url, callback ) { return jQuery.get( url, undefined, callback, "script" ); } } ); jQuery.each( [ "get", "post" ], function( _i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted if ( isFunction( data ) ) { type = type || callback; callback = data; data = undefined; } // The url can be an options object (which then must have .url) return jQuery.ajax( jQuery.extend( { url: url, type: method, dataType: type, data: data, success: callback }, jQuery.isPlainObject( url ) && url ) ); }; } ); jQuery.ajaxPrefilter( function( s ) { var i; for ( i in s.headers ) { if ( i.toLowerCase() === "content-type" ) { s.contentType = s.headers[ i ] || ""; } } } ); jQuery._evalUrl = function( url, options, doc ) { return jQuery.ajax( { url: url, // Make this explicit, since user can override this through ajaxSetup (#11264) type: "GET", dataType: "script", cache: true, async: false, global: false, // Only evaluate the response if it is successful (gh-4126) // dataFilter is not invoked for failure responses, so using it instead // of the default converter is kludgy but it works. converters: { "text script": function() {} }, dataFilter: function( response ) { jQuery.globalEval( response, options, doc ); } } ); }; jQuery.fn.extend( { wrapAll: function( html ) { var wrap; if ( this[ 0 ] ) { if ( isFunction( html ) ) { html = html.call( this[ 0 ] ); } // The elements to wrap the target around wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); if ( this[ 0 ].parentNode ) { wrap.insertBefore( this[ 0 ] ); } wrap.map( function() { var elem = this; while ( elem.firstElementChild ) { elem = elem.firstElementChild; } return elem; } ).append( this ); } return this; }, wrapInner: function( html ) { if ( isFunction( html ) ) { return this.each( function( i ) { jQuery( this ).wrapInner( html.call( this, i ) ); } ); } return this.each( function() { var self = jQuery( this ), contents = self.contents(); if ( contents.length ) { contents.wrapAll( html ); } else { self.append( html ); } } ); }, wrap: function( html ) { var htmlIsFunction = isFunction( html ); return this.each( function( i ) { jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); } ); }, unwrap: function( selector ) { this.parent( selector ).not( "body" ).each( function() { jQuery( this ).replaceWith( this.childNodes ); } ); return this; } } ); jQuery.expr.pseudos.hidden = function( elem ) { return !jQuery.expr.pseudos.visible( elem ); }; jQuery.expr.pseudos.visible = function( elem ) { return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); }; jQuery.ajaxSettings.xhr = function() { try { return new window.XMLHttpRequest(); } catch ( e ) {} }; var xhrSuccessStatus = { // File protocol always yields status code 0, assume 200 0: 200, // Support: IE <=9 only // #1450: sometimes IE returns 1223 when it should be 204 1223: 204 }, xhrSupported = jQuery.ajaxSettings.xhr(); support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); support.ajax = xhrSupported = !!xhrSupported; jQuery.ajaxTransport( function( options ) { var callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest if ( support.cors || xhrSupported && !options.crossDomain ) { return { send: function( headers, complete ) { var i, xhr = options.xhr(); xhr.open( options.type, options.url, options.async, options.username, options.password ); // Apply custom fields if provided if ( options.xhrFields ) { for ( i in options.xhrFields ) { xhr[ i ] = options.xhrFields[ i ]; } } // Override mime type if needed if ( options.mimeType && xhr.overrideMimeType ) { xhr.overrideMimeType( options.mimeType ); } // X-Requested-With header // For cross-domain requests, seeing as conditions for a preflight are // akin to a jigsaw puzzle, we simply never set it to be sure. // (it can always be set on a per-request basis or even using ajaxSetup) // For same-domain requests, won't change header if already provided. if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { headers[ "X-Requested-With" ] = "XMLHttpRequest"; } // Set headers for ( i in headers ) { xhr.setRequestHeader( i, headers[ i ] ); } // Callback callback = function( type ) { return function() { if ( callback ) { callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null; if ( type === "abort" ) { xhr.abort(); } else if ( type === "error" ) { // Support: IE <=9 only // On a manual native abort, IE9 throws // errors on any property access that is not readyState if ( typeof xhr.status !== "number" ) { complete( 0, "error" ); } else { complete( // File: protocol always yields status 0; see #8605, #14207 xhr.status, xhr.statusText ); } } else { complete( xhrSuccessStatus[ xhr.status ] || xhr.status, xhr.statusText, // Support: IE <=9 only // IE9 has no XHR2 but throws on binary (trac-11426) // For XHR2 non-text, let the caller handle it (gh-2498) ( xhr.responseType || "text" ) !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders() ); } } }; }; // Listen to events xhr.onload = callback(); errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); // Support: IE 9 only // Use onreadystatechange to replace onabort // to handle uncaught aborts if ( xhr.onabort !== undefined ) { xhr.onabort = errorCallback; } else { xhr.onreadystatechange = function() { // Check readyState before timeout as it changes if ( xhr.readyState === 4 ) { // Allow onerror to be called first, // but that will not handle a native abort // Also, save errorCallback to a variable // as xhr.onerror cannot be accessed window.setTimeout( function() { if ( callback ) { errorCallback(); } } ); } }; } // Create the abort callback callback = callback( "abort" ); try { // Do send the request (this may raise an exception) xhr.send( options.hasContent && options.data || null ); } catch ( e ) { // #14683: Only rethrow if this hasn't been notified as an error yet if ( callback ) { throw e; } } }, abort: function() { if ( callback ) { callback(); } } }; } } ); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) jQuery.ajaxPrefilter( function( s ) { if ( s.crossDomain ) { s.contents.script = false; } } ); // Install script dataType jQuery.ajaxSetup( { accepts: { script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function( text ) { jQuery.globalEval( text ); return text; } } } ); // Handle cache's special case and crossDomain jQuery.ajaxPrefilter( "script", function( s ) { if ( s.cache === undefined ) { s.cache = false; } if ( s.crossDomain ) { s.type = "GET"; } } ); // Bind script tag hack transport jQuery.ajaxTransport( "script", function( s ) { // This transport only deals with cross domain or forced-by-attrs requests if ( s.crossDomain || s.scriptAttrs ) { var script, callback; return { send: function( _, complete ) { script = jQuery( "

About

pyfuse3 is a set of Python 3 bindings for libfuse 3. It provides an asynchronous API compatible with Trio and asyncio, and enables you to easily write a full-featured Linux filesystem in Python.

pyfuse3 releases can be downloaded from PyPi. The documentation can be read online and is also included in the doc/html directory of the pyfuse3 tarball.

Getting Help

Please report any bugs on the issue tracker. For discussion and questions, please use the general FUSE mailing list. A searchable mailing list archive is kindly provided by Gmane.

Development Status

pyfuse3 is in beta. Bugs are likely.

pyfuse3 uses semantic versioning. This means backwards incompatible changes in the API will be reflected in an increase of the major version number.

Contributing

The pyfuse3 source code is available on GitHub.

pyfuse3-3.4.0/doc/html/asyncio.html0000644000175000017500000001463314663707216017161 0ustar useruser00000000000000 asyncio Support — pyfuse3 3.4.0 documentation

asyncio Support

By default, pyfuse3 uses asynchronous I/O using Trio (and most of the documentation assumes that you are using Trio). If you’d rather use asyncio, import the pyfuse3.asyncio module (pyfuse3_asyncio in 3.3.0 and earlier) and call its enable() function before using pyfuse3. For example:

import pyfuse3
import pyfuse3.asyncio

pyfuse3.asyncio.enable()

# Use pyfuse3 as usual from here on.
pyfuse3-3.4.0/doc/html/changes.html0000644000175000017500000003630514663707216017124 0ustar useruser00000000000000 Changelog — pyfuse3 3.4.0 documentation

Changelog

Release 3.4.0 (2024-08-28)

  • Cythonized with latest Cython 3.0.11 to support Python 3.13.

  • CI: also test python 3.13, run mypy.

  • Move _pyfuse3 to pyfuse3._pyfuse3 and add a compatibility wrapper for the old name.

  • Move pyfuse3_asyncio to pyfuse3.asyncio and add a compatibility wrapper for the old name.

  • Add bytes subclass XAttrNameT as the type of extended attribute names.

  • Various fixes to type annotations.

  • Add py.typed marker to enable external use of type annotations.

Release 3.3.0 (2023-08-06)

  • Note: This is the first pyfuse3 release compatible with Cython 3.0.0 release. Cython 0.29.x is also still supported.

  • Cythonized with latest Cython 3.0.0.

  • Drop Python 3.6 and 3.7 support and testing, #71.

  • CI: also test python 3.12. test on cython 0.29 and cython 3.0.

  • Tell Cython that callbacks may raise exceptions, #80.

  • Fix lookup in examples/hello.py, similar to #16.

  • Misc. CI, testing, build and sphinx related fixes.

Release 3.2.3 (2023-05-09)

  • cythonize with latest Cython 0.29.34 (brings Python 3.12 support)

  • add a minimal pyproject.toml, require setuptools

  • tests: fix integer overflow on 32-bit arches, fixes #47

  • test: Use shutil.which() instead of external which(1) program

  • setup.py: catch more generic OSError when searching Cython, fixes #63

  • setup.py: require Cython >= 0.29

  • fix basedir computation in setup.py (fix pip install -e .)

  • use sphinx < 6.0 due to compatibility issues with more recent versions

Release 3.2.2 (2022-09-28)

  • remove support for python 3.5 (broken, out of support by python devs)

  • cythonize with latest Cython 0.29.x (brings Python 3.11 support)

  • use github actions for CI, remove travis-ci

  • update README: minimal maintenance, not developed

  • update setup.py with tested python versions

  • examples/tmpfs.py: work around strange kernel behaviour (calling SETATTR after UNLINK of a (not open) file): respond with ENOENT instead of crashing.

Release 3.2.1 (2021-09-17)

  • Add type annotations

  • Passing a XATTR_CREATE or XATTR_REPLACE to setxattr is now working correctly.

Release 3.2.0 (2020-12-30)

  • Fix long-standing rounding error in file date handling when the nanosecond part of file dates were > 999999500.

  • There is a new pyfuse3.terminate() function to gracefully end the main loop.

Release 3.1.1 (2020-10-06)

  • No source changes. Regenerated Cython files with Cython 0.29.21 for Python 3.9 compatibility.

Release 3.1.0 (2020-05-31)

  • Made compatible with newest Trio module.

Release 3.0.0 (2020-05-08)

  • Changed create handler to return a FileInfo struct to allow for modification of certain kernel file attributes, e.g. direct_io.

    Note that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed.

Release 2.0.0

  • Changed open handler to return the new FileInfo struct to allow for modification of certain kernel file attributes, e.g. direct_io.

    Note that this change breaks backwards compatibility, code that depends on the old behavior needs to be changed.

Release 1.3.1 (2019-07-17)

  • Fixed a bug in the hello_asyncio.py example.

Release 1.3 (2019-06-02)

  • Fixed a bug in the tmpfs.py and passthroughfs.py example file systems (so rename operations no longer fail).

Release 1.2 (2018-12-22)

  • Clarified that invalidate_inode may block in some circumstances.

  • Added support for using the asyncio module instead of Trio.

Release 1.1 (2018-11-02)

  • Fixed examples/passthroughfs.py - was not handling readdir() correctly.

  • invalidate_entry_async now accepts an additional ignore_enoent parameter. When this is set, no errors are logged if the kernel is not actually aware of the entry that should have been removed.

Release 1.0 (2018-10-08)

  • Added a new syncfs function.

Release 0.9 (2018-09-27)

  • First release

  • pyfuse3 was forked from python-llfuse - thanks for all the work!

  • If you need compatibility with Python 2.x or libfuse 2.x, you may want to take a look at python-llfuse instead.

pyfuse3-3.4.0/doc/html/data.html0000644000175000017500000010543114663711064016416 0ustar useruser00000000000000 Data Structures — pyfuse3 3.4.0 documentation

Data Structures

pyfuse3.ENOATTR

This errorcode is unfortunately missing in the errno module, so it is provided by pyfuse3 instead.

pyfuse3.ROOT_INODE

The inode of the root directory, i.e. the mount point of the file system.

pyfuse3.RENAME_EXCHANGE

A flag that may be passed to the rename handler. When passed, the handler must atomically exchange the two paths (which must both exist).

pyfuse3.RENAME_NOREPLACE

A flag that may be passed to the rename handler. When passed, the handler must not replace an existing target.

pyfuse3.default_options

This is a recommended set of options that should be passed to pyfuse3.init to get reasonable behavior and performance. pyfuse3 is compatible with any other combination of options as well, but you should only deviate from the defaults with good reason.

(The fsname=<foo> option is guaranteed never to be included in the default options, so you can always safely add it to the set).

The default options are:

  • default_permissions enables permission checking by kernel. Without this any umask (or uid/gid) would not have an effect.

exception pyfuse3.FUSEError

This exception may be raised by request handlers to indicate that the requested operation could not be carried out. The system call that resulted in the request (if any) will then fail with error code errno_.

class pyfuse3.FileHandleT

A subclass of int, representing an integer file handle produced by a create, open, or opendir call.

class pyfuse3.FileNameT

A subclass of bytes, representing a file name, with no embedded zero-bytes (\0).

class pyfuse3.FlagT

A subclass of int, representing flags modifying the behavior of an operation.

class pyfuse3.InodeT

A subclass of int, representing an inode number.

class pyfuse3.ModeT

A subclass of int, representing a file mode.

class pyfuse3.XAttrNameT

A subclass of bytes, representing an extended attribute name, with no embedded zero-bytes (\0).

class pyfuse3.RequestContext

Instances of this class are passed to some Operations methods to provide information about the caller of the syscall that initiated the request.

pid
uid
gid
umask
class pyfuse3.StatvfsData

Instances of this class store information about the file system. The attributes correspond to the elements of the statvfs struct, see statvfs(2) for details.

f_bsize
f_frsize
f_blocks
f_bfree
f_bavail
f_files
f_ffree
f_favail
f_namemax
class pyfuse3.EntryAttributes

Instances of this class store attributes of directory entries. Most of the attributes correspond to the elements of the stat C struct as returned by e.g. fstat and should be self-explanatory.

st_ino
generation

The inode generation number

entry_timeout

Validity timeout for the name/existence of the directory entry

Floating point numbers may be used. Units are seconds.

attr_timeout

Validity timeout for the attributes of the directory entry

Floating point numbers may be used. Units are seconds.

st_mode
st_uid
st_gid
st_rdev
st_size
st_blksize
st_blocks
st_atime_ns

Time of last access in (integer) nanoseconds

st_ctime_ns

Time of last inode modification in (integer) nanoseconds

st_mtime_ns

Time of last modification in (integer) nanoseconds

class pyfuse3.FileInfo

Instances of this class store options and data that Operations.open returns. The attributes correspond to the elements of the fuse_file_info struct that are relevant to the Operations.open function.

fh

fh: ‘uint64_t’

This attribute must be set to the file handle to be returned from Operations.open.

direct_io

direct_io: ‘bool’

If true, signals to the kernel that this file should not be cached or buffered.

keep_cache

keep_cache: ‘bool’

If true, signals to the kernel that previously cached data for this inode is still valid, and should not be invalidated.

nonseekable

nonseekable: ‘bool’

If true, indicates that the file does not support seeking.

class pyfuse3.SetattrFields

SetattrFields instances are passed to the setattr handler to specify which attributes should be updated.

update_atime

If this attribute is true, it signals the Operations.setattr method that the st_atime_ns field contains an updated value.

update_mtime

If this attribute is true, it signals the Operations.setattr method that the st_mtime_ns field contains an updated value.

update_mode

If this attribute is true, it signals the Operations.setattr method that the st_mode field contains an updated value.

update_uid

If this attribute is true, it signals the Operations.setattr method that the st_uid field contains an updated value.

update_gid

If this attribute is true, it signals the Operations.setattr method that the st_gid field contains an updated value.

update_size

If this attribute is true, it signals the Operations.setattr method that the st_size field contains an updated value.

class pyfuse3.ReaddirToken

An identifier for a particular readdir invocation.

pyfuse3-3.4.0/doc/html/example.html0000644000175000017500000066165014663707216017156 0ustar useruser00000000000000 Example File Systems — pyfuse3 3.4.0 documentation

Example File Systems

pyfuse3 comes with several example file systems in the examples directory of the release tarball. For completeness, these examples are also included here.

Single-file, Read-only File System

(shipped as examples/lltest.py)

  1#!/usr/bin/env python3
  2# -*- coding: utf-8 -*-
  3'''
  4hello.py - Example file system for pyfuse3.
  5
  6This program presents a static file system containing a single file.
  7
  8Copyright © 2015 Nikolaus Rath <Nikolaus.org>
  9Copyright © 2015 Gerion Entrup.
 10
 11Permission is hereby granted, free of charge, to any person obtaining a copy of
 12this software and associated documentation files (the "Software"), to deal in
 13the Software without restriction, including without limitation the rights to
 14use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 15the Software, and to permit persons to whom the Software is furnished to do so.
 16
 17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 19FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 20COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 21IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 22CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 23'''
 24
 25import os
 26import sys
 27
 28# If we are running from the pyfuse3 source directory, try
 29# to load the module from there first.
 30basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
 31if (os.path.exists(os.path.join(basedir, 'setup.py')) and
 32    os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))):
 33    sys.path.insert(0, os.path.join(basedir, 'src'))
 34
 35from argparse import ArgumentParser
 36import stat
 37import logging
 38import errno
 39import pyfuse3
 40import trio
 41
 42try:
 43    import faulthandler
 44except ImportError:
 45    pass
 46else:
 47    faulthandler.enable()
 48
 49log = logging.getLogger(__name__)
 50
 51class TestFs(pyfuse3.Operations):
 52    def __init__(self):
 53        super(TestFs, self).__init__()
 54        self.hello_name = b"message"
 55        self.hello_inode = pyfuse3.ROOT_INODE+1
 56        self.hello_data = b"hello world\n"
 57
 58    async def getattr(self, inode, ctx=None):
 59        entry = pyfuse3.EntryAttributes()
 60        if inode == pyfuse3.ROOT_INODE:
 61            entry.st_mode = (stat.S_IFDIR | 0o755)
 62            entry.st_size = 0
 63        elif inode == self.hello_inode:
 64            entry.st_mode = (stat.S_IFREG | 0o644)
 65            entry.st_size = len(self.hello_data)
 66        else:
 67            raise pyfuse3.FUSEError(errno.ENOENT)
 68
 69        stamp = int(1438467123.985654 * 1e9)
 70        entry.st_atime_ns = stamp
 71        entry.st_ctime_ns = stamp
 72        entry.st_mtime_ns = stamp
 73        entry.st_gid = os.getgid()
 74        entry.st_uid = os.getuid()
 75        entry.st_ino = inode
 76
 77        return entry
 78
 79    async def lookup(self, parent_inode, name, ctx=None):
 80        if parent_inode != pyfuse3.ROOT_INODE or name != self.hello_name:
 81            raise pyfuse3.FUSEError(errno.ENOENT)
 82        return await self.getattr(self.hello_inode)
 83
 84    async def opendir(self, inode, ctx):
 85        if inode != pyfuse3.ROOT_INODE:
 86            raise pyfuse3.FUSEError(errno.ENOENT)
 87        return inode
 88
 89    async def readdir(self, fh, start_id, token):
 90        assert fh == pyfuse3.ROOT_INODE
 91
 92        # only one entry
 93        if start_id == 0:
 94            pyfuse3.readdir_reply(
 95                token, self.hello_name, await self.getattr(self.hello_inode), 1)
 96        return
 97
 98    async def open(self, inode, flags, ctx):
 99        if inode != self.hello_inode:
100            raise pyfuse3.FUSEError(errno.ENOENT)
101        if flags & os.O_RDWR or flags & os.O_WRONLY:
102            raise pyfuse3.FUSEError(errno.EACCES)
103        return pyfuse3.FileInfo(fh=inode)
104
105    async def read(self, fh, off, size):
106        assert fh == self.hello_inode
107        return self.hello_data[off:off+size]
108
109def init_logging(debug=False):
110    formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: '
111                                  '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
112    handler = logging.StreamHandler()
113    handler.setFormatter(formatter)
114    root_logger = logging.getLogger()
115    if debug:
116        handler.setLevel(logging.DEBUG)
117        root_logger.setLevel(logging.DEBUG)
118    else:
119        handler.setLevel(logging.INFO)
120        root_logger.setLevel(logging.INFO)
121    root_logger.addHandler(handler)
122
123def parse_args():
124    '''Parse command line'''
125
126    parser = ArgumentParser()
127
128    parser.add_argument('mountpoint', type=str,
129                        help='Where to mount the file system')
130    parser.add_argument('--debug', action='store_true', default=False,
131                        help='Enable debugging output')
132    parser.add_argument('--debug-fuse', action='store_true', default=False,
133                        help='Enable FUSE debugging output')
134    return parser.parse_args()
135
136
137def main():
138    options = parse_args()
139    init_logging(options.debug)
140
141    testfs = TestFs()
142    fuse_options = set(pyfuse3.default_options)
143    fuse_options.add('fsname=hello')
144    if options.debug_fuse:
145        fuse_options.add('debug')
146    pyfuse3.init(testfs, options.mountpoint, fuse_options)
147    try:
148        trio.run(pyfuse3.main)
149    except:
150        pyfuse3.close(unmount=False)
151        raise
152
153    pyfuse3.close()
154
155
156if __name__ == '__main__':
157    main()

In-memory File System

(shipped as examples/tmpfs.py)

  1#!/usr/bin/env python3
  2# -*- coding: utf-8 -*-
  3'''
  4tmpfs.py - Example file system for pyfuse3.
  5
  6This file system stores all data in memory.
  7
  8Copyright © 2013 Nikolaus Rath <Nikolaus.org>
  9
 10Permission is hereby granted, free of charge, to any person obtaining a copy of
 11this software and associated documentation files (the "Software"), to deal in
 12the Software without restriction, including without limitation the rights to
 13use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 14the Software, and to permit persons to whom the Software is furnished to do so.
 15
 16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 18FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 19COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 20IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 21CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 22'''
 23
 24import os
 25import sys
 26
 27# If we are running from the pyfuse3 source directory, try
 28# to load the module from there first.
 29basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
 30if (os.path.exists(os.path.join(basedir, 'setup.py')) and
 31    os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))):
 32    sys.path.insert(0, os.path.join(basedir, 'src'))
 33
 34import pyfuse3
 35import errno
 36import stat
 37from time import time
 38import sqlite3
 39import logging
 40from collections import defaultdict
 41from pyfuse3 import FUSEError
 42from argparse import ArgumentParser
 43import trio
 44
 45try:
 46    import faulthandler
 47except ImportError:
 48    pass
 49else:
 50    faulthandler.enable()
 51
 52log = logging.getLogger()
 53
 54class Operations(pyfuse3.Operations):
 55    '''An example filesystem that stores all data in memory
 56
 57    This is a very simple implementation with terrible performance.
 58    Don't try to store significant amounts of data. Also, there are
 59    some other flaws that have not been fixed to keep the code easier
 60    to understand:
 61
 62    * atime, mtime and ctime are not updated
 63    * generation numbers are not supported
 64    * lookup counts are not maintained
 65    '''
 66
 67    enable_writeback_cache = True
 68
 69    def __init__(self):
 70        super(Operations, self).__init__()
 71        self.db = sqlite3.connect(':memory:')
 72        self.db.text_factory = str
 73        self.db.row_factory = sqlite3.Row
 74        self.cursor = self.db.cursor()
 75        self.inode_open_count = defaultdict(int)
 76        self.init_tables()
 77
 78    def init_tables(self):
 79        '''Initialize file system tables'''
 80
 81        self.cursor.execute("""
 82        CREATE TABLE inodes (
 83            id        INTEGER PRIMARY KEY,
 84            uid       INT NOT NULL,
 85            gid       INT NOT NULL,
 86            mode      INT NOT NULL,
 87            mtime_ns  INT NOT NULL,
 88            atime_ns  INT NOT NULL,
 89            ctime_ns  INT NOT NULL,
 90            target    BLOB(256) ,
 91            size      INT NOT NULL DEFAULT 0,
 92            rdev      INT NOT NULL DEFAULT 0,
 93            data      BLOB
 94        )
 95        """)
 96
 97        self.cursor.execute("""
 98        CREATE TABLE contents (
 99            rowid     INTEGER PRIMARY KEY AUTOINCREMENT,
100            name      BLOB(256) NOT NULL,
101            inode     INT NOT NULL REFERENCES inodes(id),
102            parent_inode INT NOT NULL REFERENCES inodes(id),
103
104            UNIQUE (name, parent_inode)
105        )""")
106
107        # Insert root directory
108        now_ns = int(time() * 1e9)
109        self.cursor.execute("INSERT INTO inodes (id,mode,uid,gid,mtime_ns,atime_ns,ctime_ns) "
110                            "VALUES (?,?,?,?,?,?,?)",
111                            (pyfuse3.ROOT_INODE, stat.S_IFDIR | stat.S_IRUSR | stat.S_IWUSR
112                              | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH
113                              | stat.S_IXOTH, os.getuid(), os.getgid(), now_ns, now_ns, now_ns))
114        self.cursor.execute("INSERT INTO contents (name, parent_inode, inode) VALUES (?,?,?)",
115                            (b'..', pyfuse3.ROOT_INODE, pyfuse3.ROOT_INODE))
116
117
118    def get_row(self, *a, **kw):
119        self.cursor.execute(*a, **kw)
120        try:
121            row = next(self.cursor)
122        except StopIteration:
123            raise NoSuchRowError()
124        try:
125            next(self.cursor)
126        except StopIteration:
127            pass
128        else:
129            raise NoUniqueValueError()
130
131        return row
132
133    async def lookup(self, inode_p, name, ctx=None):
134        if name == '.':
135            inode = inode_p
136        elif name == '..':
137            inode = self.get_row("SELECT * FROM contents WHERE inode=?",
138                                 (inode_p,))['parent_inode']
139        else:
140            try:
141                inode = self.get_row("SELECT * FROM contents WHERE name=? AND parent_inode=?",
142                                     (name, inode_p))['inode']
143            except NoSuchRowError:
144                raise(pyfuse3.FUSEError(errno.ENOENT))
145
146        return await self.getattr(inode, ctx)
147
148
149    async def getattr(self, inode, ctx=None):
150        try:
151            row = self.get_row("SELECT * FROM inodes WHERE id=?", (inode,))
152        except NoSuchRowError:
153            raise(pyfuse3.FUSEError(errno.ENOENT))
154
155        entry = pyfuse3.EntryAttributes()
156        entry.st_ino = inode
157        entry.generation = 0
158        entry.entry_timeout = 300
159        entry.attr_timeout = 300
160        entry.st_mode = row['mode']
161        entry.st_nlink = self.get_row("SELECT COUNT(inode) FROM contents WHERE inode=?",
162                                     (inode,))[0]
163        entry.st_uid = row['uid']
164        entry.st_gid = row['gid']
165        entry.st_rdev = row['rdev']
166        entry.st_size = row['size']
167
168        entry.st_blksize = 512
169        entry.st_blocks = 1
170        entry.st_atime_ns = row['atime_ns']
171        entry.st_mtime_ns = row['mtime_ns']
172        entry.st_ctime_ns = row['ctime_ns']
173
174        return entry
175
176    async def readlink(self, inode, ctx):
177        return self.get_row('SELECT * FROM inodes WHERE id=?', (inode,))['target']
178
179    async def opendir(self, inode, ctx):
180        return inode
181
182    async def readdir(self, inode, off, token):
183        if off == 0:
184            off = -1
185
186        cursor2 = self.db.cursor()
187        cursor2.execute("SELECT * FROM contents WHERE parent_inode=? "
188                        'AND rowid > ? ORDER BY rowid', (inode, off))
189
190        for row in cursor2:
191            pyfuse3.readdir_reply(
192                token, row['name'], await self.getattr(row['inode']), row['rowid'])
193
194    async def unlink(self, inode_p, name,ctx):
195        entry = await self.lookup(inode_p, name)
196
197        if stat.S_ISDIR(entry.st_mode):
198            raise pyfuse3.FUSEError(errno.EISDIR)
199
200        self._remove(inode_p, name, entry)
201
202    async def rmdir(self, inode_p, name, ctx):
203        entry = await self.lookup(inode_p, name)
204
205        if not stat.S_ISDIR(entry.st_mode):
206            raise pyfuse3.FUSEError(errno.ENOTDIR)
207
208        self._remove(inode_p, name, entry)
209
210    def _remove(self, inode_p, name, entry):
211        if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?",
212                        (entry.st_ino,))[0] > 0:
213            raise pyfuse3.FUSEError(errno.ENOTEMPTY)
214
215        self.cursor.execute("DELETE FROM contents WHERE name=? AND parent_inode=?",
216                        (name, inode_p))
217
218        if entry.st_nlink == 1 and entry.st_ino not in self.inode_open_count:
219            self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry.st_ino,))
220
221    async def symlink(self, inode_p, name, target, ctx):
222        mode = (stat.S_IFLNK | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
223                stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
224                stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH)
225        return await self._create(inode_p, name, mode, ctx, target=target)
226
227    async def rename(self, inode_p_old, name_old, inode_p_new, name_new,
228                     flags, ctx):
229        if flags != 0:
230            raise FUSEError(errno.EINVAL)
231
232        entry_old = await self.lookup(inode_p_old, name_old)
233
234        try:
235            entry_new = await self.lookup(inode_p_new, name_new)
236        except pyfuse3.FUSEError as exc:
237            if exc.errno != errno.ENOENT:
238                raise
239            target_exists = False
240        else:
241            target_exists = True
242
243        if target_exists:
244            self._replace(inode_p_old, name_old, inode_p_new, name_new,
245                          entry_old, entry_new)
246        else:
247            self.cursor.execute("UPDATE contents SET name=?, parent_inode=? WHERE name=? "
248                                "AND parent_inode=?", (name_new, inode_p_new,
249                                                       name_old, inode_p_old))
250
251    def _replace(self, inode_p_old, name_old, inode_p_new, name_new,
252                 entry_old, entry_new):
253
254        if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?",
255                        (entry_new.st_ino,))[0] > 0:
256            raise pyfuse3.FUSEError(errno.ENOTEMPTY)
257
258        self.cursor.execute("UPDATE contents SET inode=? WHERE name=? AND parent_inode=?",
259                            (entry_old.st_ino, name_new, inode_p_new))
260        self.db.execute('DELETE FROM contents WHERE name=? AND parent_inode=?',
261                        (name_old, inode_p_old))
262
263        if entry_new.st_nlink == 1 and entry_new.st_ino not in self.inode_open_count:
264            self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry_new.st_ino,))
265
266
267    async def link(self, inode, new_inode_p, new_name, ctx):
268        entry_p = await self.getattr(new_inode_p)
269        if entry_p.st_nlink == 0:
270            log.warning('Attempted to create entry %s with unlinked parent %d',
271                        new_name, new_inode_p)
272            raise FUSEError(errno.EINVAL)
273
274        self.cursor.execute("INSERT INTO contents (name, inode, parent_inode) VALUES(?,?,?)",
275                            (new_name, inode, new_inode_p))
276
277        return await self.getattr(inode)
278
279    async def setattr(self, inode, attr, fields, fh, ctx):
280
281        if fields.update_size:
282            data = self.get_row('SELECT data FROM inodes WHERE id=?', (inode,))[0]
283            if data is None:
284                data = b''
285            if len(data) < attr.st_size:
286                data = data + b'\0' * (attr.st_size - len(data))
287            else:
288                data = data[:attr.st_size]
289            self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?',
290                                (memoryview(data), attr.st_size, inode))
291        if fields.update_mode:
292            self.cursor.execute('UPDATE inodes SET mode=? WHERE id=?',
293                                (attr.st_mode, inode))
294
295        if fields.update_uid:
296            self.cursor.execute('UPDATE inodes SET uid=? WHERE id=?',
297                                (attr.st_uid, inode))
298
299        if fields.update_gid:
300            self.cursor.execute('UPDATE inodes SET gid=? WHERE id=?',
301                                (attr.st_gid, inode))
302
303        if fields.update_atime:
304            self.cursor.execute('UPDATE inodes SET atime_ns=? WHERE id=?',
305                                (attr.st_atime_ns, inode))
306
307        if fields.update_mtime:
308            self.cursor.execute('UPDATE inodes SET mtime_ns=? WHERE id=?',
309                                (attr.st_mtime_ns, inode))
310
311        if fields.update_ctime:
312            self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?',
313                                (attr.st_ctime_ns, inode))
314        else:
315            self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?',
316                                (int(time()*1e9), inode))
317
318        return await self.getattr(inode)
319
320    async def mknod(self, inode_p, name, mode, rdev, ctx):
321        return await self._create(inode_p, name, mode, ctx, rdev=rdev)
322
323    async def mkdir(self, inode_p, name, mode, ctx):
324        return await self._create(inode_p, name, mode, ctx)
325
326    async def statfs(self, ctx):
327        stat_ = pyfuse3.StatvfsData()
328
329        stat_.f_bsize = 512
330        stat_.f_frsize = 512
331
332        size = self.get_row('SELECT SUM(size) FROM inodes')[0]
333        stat_.f_blocks = size // stat_.f_frsize
334        stat_.f_bfree = max(size // stat_.f_frsize, 1024)
335        stat_.f_bavail = stat_.f_bfree
336
337        inodes = self.get_row('SELECT COUNT(id) FROM inodes')[0]
338        stat_.f_files = inodes
339        stat_.f_ffree = max(inodes , 100)
340        stat_.f_favail = stat_.f_ffree
341
342        return stat_
343
344    async def open(self, inode, flags, ctx):
345        # Yeah, unused arguments
346        #pylint: disable=W0613
347        self.inode_open_count[inode] += 1
348
349        # Use inodes as a file handles
350        return pyfuse3.FileInfo(fh=inode)
351
352    async def access(self, inode, mode, ctx):
353        # Yeah, could be a function and has unused arguments
354        #pylint: disable=R0201,W0613
355        return True
356
357    async def create(self, inode_parent, name, mode, flags, ctx):
358        #pylint: disable=W0612
359        entry = await self._create(inode_parent, name, mode, ctx)
360        self.inode_open_count[entry.st_ino] += 1
361        return (pyfuse3.FileInfo(fh=entry.st_ino), entry)
362
363    async def _create(self, inode_p, name, mode, ctx, rdev=0, target=None):
364        if (await self.getattr(inode_p)).st_nlink == 0:
365            log.warning('Attempted to create entry %s with unlinked parent %d',
366                        name, inode_p)
367            raise FUSEError(errno.EINVAL)
368
369        now_ns = int(time() * 1e9)
370        self.cursor.execute('INSERT INTO inodes (uid, gid, mode, mtime_ns, atime_ns, '
371                            'ctime_ns, target, rdev) VALUES(?, ?, ?, ?, ?, ?, ?, ?)',
372                            (ctx.uid, ctx.gid, mode, now_ns, now_ns, now_ns, target, rdev))
373
374        inode = self.cursor.lastrowid
375        self.db.execute("INSERT INTO contents(name, inode, parent_inode) VALUES(?,?,?)",
376                        (name, inode, inode_p))
377        return await self.getattr(inode)
378
379    async def read(self, fh, offset, length):
380        data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0]
381        if data is None:
382            data = b''
383        return data[offset:offset+length]
384
385    async def write(self, fh, offset, buf):
386        data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0]
387        if data is None:
388            data = b''
389        data = data[:offset] + buf + data[offset+len(buf):]
390
391        self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?',
392                            (memoryview(data), len(data), fh))
393        return len(buf)
394
395    async def release(self, fh):
396        self.inode_open_count[fh] -= 1
397
398        if self.inode_open_count[fh] == 0:
399            del self.inode_open_count[fh]
400            if (await self.getattr(fh)).st_nlink == 0:
401                self.cursor.execute("DELETE FROM inodes WHERE id=?", (fh,))
402
403class NoUniqueValueError(Exception):
404    def __str__(self):
405        return 'Query generated more than 1 result row'
406
407
408class NoSuchRowError(Exception):
409    def __str__(self):
410        return 'Query produced 0 result rows'
411
412def init_logging(debug=False):
413    formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: '
414                                  '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
415    handler = logging.StreamHandler()
416    handler.setFormatter(formatter)
417    root_logger = logging.getLogger()
418    if debug:
419        handler.setLevel(logging.DEBUG)
420        root_logger.setLevel(logging.DEBUG)
421    else:
422        handler.setLevel(logging.INFO)
423        root_logger.setLevel(logging.INFO)
424    root_logger.addHandler(handler)
425
426def parse_args():
427    '''Parse command line'''
428
429    parser = ArgumentParser()
430
431    parser.add_argument('mountpoint', type=str,
432                        help='Where to mount the file system')
433    parser.add_argument('--debug', action='store_true', default=False,
434                        help='Enable debugging output')
435    parser.add_argument('--debug-fuse', action='store_true', default=False,
436                        help='Enable FUSE debugging output')
437
438    return parser.parse_args()
439
440if __name__ == '__main__':
441
442    options = parse_args()
443    init_logging(options.debug)
444    operations = Operations()
445
446    fuse_options = set(pyfuse3.default_options)
447    fuse_options.add('fsname=tmpfs')
448    fuse_options.discard('default_permissions')
449    if options.debug_fuse:
450        fuse_options.add('debug')
451    pyfuse3.init(operations, options.mountpoint, fuse_options)
452
453    try:
454        trio.run(pyfuse3.main)
455    except:
456        pyfuse3.close(unmount=False)
457        raise
458
459    pyfuse3.close()

Passthrough / Overlay File System

(shipped as examples/passthroughfs.py)

  1#!/usr/bin/env python3
  2'''
  3passthroughfs.py - Example file system for pyfuse3
  4
  5This file system mirrors the contents of a specified directory tree.
  6
  7Caveats:
  8
  9 * Inode generation numbers are not passed through but set to zero.
 10
 11 * Block size (st_blksize) and number of allocated blocks (st_blocks) are not
 12   passed through.
 13
 14 * Performance for large directories is not good, because the directory
 15   is always read completely.
 16
 17 * There may be a way to break-out of the directory tree.
 18
 19 * The readdir implementation is not fully POSIX compliant. If a directory
 20   contains hardlinks and is modified during a readdir call, readdir()
 21   may return some of the hardlinked files twice or omit them completely.
 22
 23 * If you delete or rename files in the underlying file system, the
 24   passthrough file system will get confused.
 25
 26Copyright ©  Nikolaus Rath <Nikolaus.org>
 27
 28Permission is hereby granted, free of charge, to any person obtaining a copy of
 29this software and associated documentation files (the "Software"), to deal in
 30the Software without restriction, including without limitation the rights to
 31use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 32the Software, and to permit persons to whom the Software is furnished to do so.
 33
 34THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 35IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 36FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 37COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 38IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 39CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 40'''
 41
 42import os
 43import sys
 44
 45# If we are running from the pyfuse3 source directory, try
 46# to load the module from there first.
 47basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
 48if (os.path.exists(os.path.join(basedir, 'setup.py')) and
 49    os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))):
 50    sys.path.insert(0, os.path.join(basedir, 'src'))
 51
 52import pyfuse3
 53from argparse import ArgumentParser
 54import errno
 55import logging
 56import stat as stat_m
 57from pyfuse3 import FUSEError
 58from os import fsencode, fsdecode
 59from collections import defaultdict
 60import trio
 61
 62import faulthandler
 63faulthandler.enable()
 64
 65log = logging.getLogger(__name__)
 66
 67class Operations(pyfuse3.Operations):
 68
 69    enable_writeback_cache = True
 70
 71    def __init__(self, source):
 72        super().__init__()
 73        self._inode_path_map = { pyfuse3.ROOT_INODE: source }
 74        self._lookup_cnt = defaultdict(lambda : 0)
 75        self._fd_inode_map = dict()
 76        self._inode_fd_map = dict()
 77        self._fd_open_count = dict()
 78
 79    def _inode_to_path(self, inode):
 80        try:
 81            val = self._inode_path_map[inode]
 82        except KeyError:
 83            raise FUSEError(errno.ENOENT)
 84
 85        if isinstance(val, set):
 86            # In case of hardlinks, pick any path
 87            val = next(iter(val))
 88        return val
 89
 90    def _add_path(self, inode, path):
 91        log.debug('_add_path for %d, %s', inode, path)
 92        self._lookup_cnt[inode] += 1
 93
 94        # With hardlinks, one inode may map to multiple paths.
 95        if inode not in self._inode_path_map:
 96            self._inode_path_map[inode] = path
 97            return
 98
 99        val = self._inode_path_map[inode]
100        if isinstance(val, set):
101            val.add(path)
102        elif val != path:
103            self._inode_path_map[inode] = { path, val }
104
105    async def forget(self, inode_list):
106        for (inode, nlookup) in inode_list:
107            if self._lookup_cnt[inode] > nlookup:
108                self._lookup_cnt[inode] -= nlookup
109                continue
110            log.debug('forgetting about inode %d', inode)
111            assert inode not in self._inode_fd_map
112            del self._lookup_cnt[inode]
113            try:
114                del self._inode_path_map[inode]
115            except KeyError: # may have been deleted
116                pass
117
118    async def lookup(self, inode_p, name, ctx=None):
119        name = fsdecode(name)
120        log.debug('lookup for %s in %d', name, inode_p)
121        path = os.path.join(self._inode_to_path(inode_p), name)
122        attr = self._getattr(path=path)
123        if name != '.' and name != '..':
124            self._add_path(attr.st_ino, path)
125        return attr
126
127    async def getattr(self, inode, ctx=None):
128        if inode in self._inode_fd_map:
129            return self._getattr(fd=self._inode_fd_map[inode])
130        else:
131            return self._getattr(path=self._inode_to_path(inode))
132
133    def _getattr(self, path=None, fd=None):
134        assert fd is None or path is None
135        assert not(fd is None and path is None)
136        try:
137            if fd is None:
138                stat = os.lstat(path)
139            else:
140                stat = os.fstat(fd)
141        except OSError as exc:
142            raise FUSEError(exc.errno)
143
144        entry = pyfuse3.EntryAttributes()
145        for attr in ('st_ino', 'st_mode', 'st_nlink', 'st_uid', 'st_gid',
146                     'st_rdev', 'st_size', 'st_atime_ns', 'st_mtime_ns',
147                     'st_ctime_ns'):
148            setattr(entry, attr, getattr(stat, attr))
149        entry.generation = 0
150        entry.entry_timeout = 0
151        entry.attr_timeout = 0
152        entry.st_blksize = 512
153        entry.st_blocks = ((entry.st_size+entry.st_blksize-1) // entry.st_blksize)
154
155        return entry
156
157    async def readlink(self, inode, ctx):
158        path = self._inode_to_path(inode)
159        try:
160            target = os.readlink(path)
161        except OSError as exc:
162            raise FUSEError(exc.errno)
163        return fsencode(target)
164
165    async def opendir(self, inode, ctx):
166        return inode
167
168    async def readdir(self, inode, off, token):
169        path = self._inode_to_path(inode)
170        log.debug('reading %s', path)
171        entries = []
172        for name in os.listdir(path):
173            if name == '.' or name == '..':
174                continue
175            attr = self._getattr(path=os.path.join(path, name))
176            entries.append((attr.st_ino, name, attr))
177
178        log.debug('read %d entries, starting at %d', len(entries), off)
179
180        # This is not fully posix compatible. If there are hardlinks
181        # (two names with the same inode), we don't have a unique
182        # offset to start in between them. Note that we cannot simply
183        # count entries, because then we would skip over entries
184        # (or return them more than once) if the number of directory
185        # entries changes between two calls to readdir().
186        for (ino, name, attr) in sorted(entries):
187            if ino <= off:
188                continue
189            if not pyfuse3.readdir_reply(
190                token, fsencode(name), attr, ino):
191                break
192            self._add_path(attr.st_ino, os.path.join(path, name))
193
194    async def unlink(self, inode_p, name, ctx):
195        name = fsdecode(name)
196        parent = self._inode_to_path(inode_p)
197        path = os.path.join(parent, name)
198        try:
199            inode = os.lstat(path).st_ino
200            os.unlink(path)
201        except OSError as exc:
202            raise FUSEError(exc.errno)
203        if inode in self._lookup_cnt:
204            self._forget_path(inode, path)
205
206    async def rmdir(self, inode_p, name, ctx):
207        name = fsdecode(name)
208        parent = self._inode_to_path(inode_p)
209        path = os.path.join(parent, name)
210        try:
211            inode = os.lstat(path).st_ino
212            os.rmdir(path)
213        except OSError as exc:
214            raise FUSEError(exc.errno)
215        if inode in self._lookup_cnt:
216            self._forget_path(inode, path)
217
218    def _forget_path(self, inode, path):
219        log.debug('forget %s for %d', path, inode)
220        val = self._inode_path_map[inode]
221        if isinstance(val, set):
222            val.remove(path)
223            if len(val) == 1:
224                self._inode_path_map[inode] = next(iter(val))
225        else:
226            del self._inode_path_map[inode]
227
228    async def symlink(self, inode_p, name, target, ctx):
229        name = fsdecode(name)
230        target = fsdecode(target)
231        parent = self._inode_to_path(inode_p)
232        path = os.path.join(parent, name)
233        try:
234            os.symlink(target, path)
235            os.chown(path, ctx.uid, ctx.gid, follow_symlinks=False)
236        except OSError as exc:
237            raise FUSEError(exc.errno)
238        stat = os.lstat(path)
239        self._add_path(stat.st_ino, path)
240        return await self.getattr(stat.st_ino)
241
242    async def rename(self, inode_p_old, name_old, inode_p_new, name_new,
243                     flags, ctx):
244        if flags != 0:
245            raise FUSEError(errno.EINVAL)
246
247        name_old = fsdecode(name_old)
248        name_new = fsdecode(name_new)
249        parent_old = self._inode_to_path(inode_p_old)
250        parent_new = self._inode_to_path(inode_p_new)
251        path_old = os.path.join(parent_old, name_old)
252        path_new = os.path.join(parent_new, name_new)
253        try:
254            os.rename(path_old, path_new)
255            inode = os.lstat(path_new).st_ino
256        except OSError as exc:
257            raise FUSEError(exc.errno)
258        if inode not in self._lookup_cnt:
259            return
260
261        val = self._inode_path_map[inode]
262        if isinstance(val, set):
263            assert len(val) > 1
264            val.add(path_new)
265            val.remove(path_old)
266        else:
267            assert val == path_old
268            self._inode_path_map[inode] = path_new
269
270    async def link(self, inode, new_inode_p, new_name, ctx):
271        new_name = fsdecode(new_name)
272        parent = self._inode_to_path(new_inode_p)
273        path = os.path.join(parent, new_name)
274        try:
275            os.link(self._inode_to_path(inode), path, follow_symlinks=False)
276        except OSError as exc:
277            raise FUSEError(exc.errno)
278        self._add_path(inode, path)
279        return await self.getattr(inode)
280
281    async def setattr(self, inode, attr, fields, fh, ctx):
282        # We use the f* functions if possible so that we can handle
283        # a setattr() call for an inode without associated directory
284        # handle.
285        if fh is None:
286            path_or_fh = self._inode_to_path(inode)
287            truncate = os.truncate
288            chmod = os.chmod
289            chown = os.chown
290            stat = os.lstat
291        else:
292            path_or_fh = fh
293            truncate = os.ftruncate
294            chmod = os.fchmod
295            chown = os.fchown
296            stat = os.fstat
297
298        try:
299            if fields.update_size:
300                truncate(path_or_fh, attr.st_size)
301
302            if fields.update_mode:
303                # Under Linux, chmod always resolves symlinks so we should
304                # actually never get a setattr() request for a symbolic
305                # link.
306                assert not stat_m.S_ISLNK(attr.st_mode)
307                chmod(path_or_fh, stat_m.S_IMODE(attr.st_mode))
308
309            if fields.update_uid:
310                chown(path_or_fh, attr.st_uid, -1, follow_symlinks=False)
311
312            if fields.update_gid:
313                chown(path_or_fh, -1, attr.st_gid, follow_symlinks=False)
314
315            if fields.update_atime and fields.update_mtime:
316                if fh is None:
317                    os.utime(path_or_fh, None, follow_symlinks=False,
318                             ns=(attr.st_atime_ns, attr.st_mtime_ns))
319                else:
320                    os.utime(path_or_fh, None,
321                             ns=(attr.st_atime_ns, attr.st_mtime_ns))
322            elif fields.update_atime or fields.update_mtime:
323                # We can only set both values, so we first need to retrieve the
324                # one that we shouldn't be changing.
325                oldstat = stat(path_or_fh)
326                if not fields.update_atime:
327                    attr.st_atime_ns = oldstat.st_atime_ns
328                else:
329                    attr.st_mtime_ns = oldstat.st_mtime_ns
330                if fh is None:
331                    os.utime(path_or_fh, None, follow_symlinks=False,
332                             ns=(attr.st_atime_ns, attr.st_mtime_ns))
333                else:
334                    os.utime(path_or_fh, None,
335                             ns=(attr.st_atime_ns, attr.st_mtime_ns))
336
337        except OSError as exc:
338            raise FUSEError(exc.errno)
339
340        return await self.getattr(inode)
341
342    async def mknod(self, inode_p, name, mode, rdev, ctx):
343        path = os.path.join(self._inode_to_path(inode_p), fsdecode(name))
344        try:
345            os.mknod(path, mode=(mode & ~ctx.umask), device=rdev)
346            os.chown(path, ctx.uid, ctx.gid)
347        except OSError as exc:
348            raise FUSEError(exc.errno)
349        attr = self._getattr(path=path)
350        self._add_path(attr.st_ino, path)
351        return attr
352
353    async def mkdir(self, inode_p, name, mode, ctx):
354        path = os.path.join(self._inode_to_path(inode_p), fsdecode(name))
355        try:
356            os.mkdir(path, mode=(mode & ~ctx.umask))
357            os.chown(path, ctx.uid, ctx.gid)
358        except OSError as exc:
359            raise FUSEError(exc.errno)
360        attr = self._getattr(path=path)
361        self._add_path(attr.st_ino, path)
362        return attr
363
364    async def statfs(self, ctx):
365        root = self._inode_path_map[pyfuse3.ROOT_INODE]
366        stat_ = pyfuse3.StatvfsData()
367        try:
368            statfs = os.statvfs(root)
369        except OSError as exc:
370            raise FUSEError(exc.errno)
371        for attr in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', 'f_bavail',
372                     'f_files', 'f_ffree', 'f_favail'):
373            setattr(stat_, attr, getattr(statfs, attr))
374        stat_.f_namemax = statfs.f_namemax - (len(root)+1)
375        return stat_
376
377    async def open(self, inode, flags, ctx):
378        if inode in self._inode_fd_map:
379            fd = self._inode_fd_map[inode]
380            self._fd_open_count[fd] += 1
381            return pyfuse3.FileInfo(fh=fd)
382        assert flags & os.O_CREAT == 0
383        try:
384            fd = os.open(self._inode_to_path(inode), flags)
385        except OSError as exc:
386            raise FUSEError(exc.errno)
387        self._inode_fd_map[inode] = fd
388        self._fd_inode_map[fd] = inode
389        self._fd_open_count[fd] = 1
390        return pyfuse3.FileInfo(fh=fd)
391
392    async def create(self, inode_p, name, mode, flags, ctx):
393        path = os.path.join(self._inode_to_path(inode_p), fsdecode(name))
394        try:
395            fd = os.open(path, flags | os.O_CREAT | os.O_TRUNC)
396        except OSError as exc:
397            raise FUSEError(exc.errno)
398        attr = self._getattr(fd=fd)
399        self._add_path(attr.st_ino, path)
400        self._inode_fd_map[attr.st_ino] = fd
401        self._fd_inode_map[fd] = attr.st_ino
402        self._fd_open_count[fd] = 1
403        return (pyfuse3.FileInfo(fh=fd), attr)
404
405    async def read(self, fd, offset, length):
406        os.lseek(fd, offset, os.SEEK_SET)
407        return os.read(fd, length)
408
409    async def write(self, fd, offset, buf):
410        os.lseek(fd, offset, os.SEEK_SET)
411        return os.write(fd, buf)
412
413    async def release(self, fd):
414        if self._fd_open_count[fd] > 1:
415            self._fd_open_count[fd] -= 1
416            return
417
418        del self._fd_open_count[fd]
419        inode = self._fd_inode_map[fd]
420        del self._inode_fd_map[inode]
421        del self._fd_inode_map[fd]
422        try:
423            os.close(fd)
424        except OSError as exc:
425            raise FUSEError(exc.errno)
426
427def init_logging(debug=False):
428    formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: '
429                                  '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
430    handler = logging.StreamHandler()
431    handler.setFormatter(formatter)
432    root_logger = logging.getLogger()
433    if debug:
434        handler.setLevel(logging.DEBUG)
435        root_logger.setLevel(logging.DEBUG)
436    else:
437        handler.setLevel(logging.INFO)
438        root_logger.setLevel(logging.INFO)
439    root_logger.addHandler(handler)
440
441
442def parse_args(args):
443    '''Parse command line'''
444
445    parser = ArgumentParser()
446
447    parser.add_argument('source', type=str,
448                        help='Directory tree to mirror')
449    parser.add_argument('mountpoint', type=str,
450                        help='Where to mount the file system')
451    parser.add_argument('--debug', action='store_true', default=False,
452                        help='Enable debugging output')
453    parser.add_argument('--debug-fuse', action='store_true', default=False,
454                        help='Enable FUSE debugging output')
455
456    return parser.parse_args(args)
457
458def main():
459    options = parse_args(sys.argv[1:])
460    init_logging(options.debug)
461    operations = Operations(options.source)
462
463    log.debug('Mounting...')
464    fuse_options = set(pyfuse3.default_options)
465    fuse_options.add('fsname=passthroughfs')
466    if options.debug_fuse:
467        fuse_options.add('debug')
468    pyfuse3.init(operations, options.mountpoint, fuse_options)
469
470    try:
471        log.debug('Entering main loop..')
472        trio.run(pyfuse3.main)
473    except:
474        pyfuse3.close(unmount=False)
475        raise
476
477    log.debug('Unmounting..')
478    pyfuse3.close()
479
480if __name__ == '__main__':
481    main()
pyfuse3-3.4.0/doc/html/fuse_api.html0000644000175000017500000006650714663711065017313 0ustar useruser00000000000000 FUSE API Functions — pyfuse3 3.4.0 documentation

FUSE API Functions

pyfuse3.init(ops, mountpoint, options=default_options)

Initialize and mount FUSE file system

ops has to be an instance of the Operations class (or another class defining the same methods).

args has to be a set of strings. default_options provides some reasonable defaults. It is recommended to use these options as a basis and add or remove options as necessary. For example:

my_opts = set(pyfuse3.default_options)
my_opts.add('allow_other')
my_opts.discard('default_permissions')
pyfuse3.init(ops, mountpoint, my_opts)

Valid options are listed under struct fuse_opt fuse_mount_opts[] (in mount.c) and struct fuse_opt fuse_ll_opts[] (in fuse_lowlevel_c).

async pyfuse3.main(min_tasks=1, max_tasks=99)

Run FUSE main loop

pyfuse3.terminate()

Terminate FUSE main loop.

This function gracefully terminates the FUSE main loop (resulting in the call to main() to return).

When called by a thread different from the one that runs the main loop, the call must be wrapped with trio.from_thread.run_sync. The necessary trio_token argument can (for convience) be retrieved from the trio_token module attribute.

pyfuse3.close(unmount=True)

Clean up and ensure filesystem is unmounted

If unmount is False, only clean up operations are peformed, but the file system is not explicitly unmounted.

Normally, the filesystem is unmounted by the user calling umount(8) or fusermount(1), which then terminates the FUSE main loop. However, the loop may also terminate as a result of an exception or a signal. In this case the filesystem remains mounted, but any attempt to access it will block (while the filesystem process is still running) or (after the filesystem process has terminated) return an error. If unmount is True, this function will ensure that the filesystem is properly unmounted.

Note: if the connection to the kernel is terminated via the /sys/fs/fuse/connections/ interface, this function will not unmount the filesystem even if unmount is True.

pyfuse3.invalidate_inode(fuse_ino_t inode, attr_only=False)

Invalidate cache for inode

Instructs the FUSE kernel module to forget cached attributes and data (unless attr_only is True) for inode.

This operation may block if writeback caching is active and there is dirty data for the inode that is to be invalidated. Unfortunately there is no way to return control to the event loop until writeback is complete (leading to a deadlock if the necessary write() requests cannot be processed by the filesystem). Unless writeback caching is disabled, this function should therefore be called from a separate thread.

If the operation is not supported by the kernel, raises OSError with errno ENOSYS.

pyfuse3.invalidate_entry(fuse_ino_t inode_p, name, fuse_ino_t deleted=0)

Invalidate directory entry

Instructs the FUSE kernel module to forget about the directory entry name in the directory with inode inode_p.

If the inode passed as deleted matches the inode that is currently associated with name by the kernel, any inotify watchers of this inode are informed that the entry has been deleted.

If there is a pending filesystem operation that is related to the parent directory or directory entry, this function will block until that operation has completed. Therefore, to avoid a deadlock this function must not be called while handling a related request, nor while holding a lock that could be needed for handling such a request.

As for kernel 4.18, a “related operation” is a lookup, symlink, mknod, mkdir, unlink, rename, link or create request for the parent, and a setattr, unlink, rmdir, rename, setxattr, removexattr or readdir request for the inode itself.

For technical reasons, this function can also not return control to the main event loop but will actually block. To return control to the event loop while this function is running, call it in a separate thread using trio.run_sync_in_worker_thread. A less complicated alternative is to use the invalidate_entry_async function instead.

pyfuse3.invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False)

Asynchronously invalidate directory entry

This function performs the same operation as invalidate_entry, but does so asynchronously in a separate thread. This avoids the deadlocks that may occur when using invalidate_entry from within a request handler, but means that the function generally returns before the kernel has actually invalidated the entry, and that no errors can be reported (they will be logged though).

The directory entries that are to be invalidated are put in an unbounded queue which is processed by a single thread. This means that if the entry at the beginning of the queue cannot be invalidated yet because a related file system operation is still in progress, none of the other entries will be processed and repeated calls to this function will result in continued growth of the queue.

If there are errors, an exception is logged using the logging module.

If ignore_enoent is True, ignore ENOENT errors (which occur if the kernel doesn’t actually have knowledge of the entry that is to be removed).

pyfuse3.notify_store(inode, offset, data)

Store data in kernel page cache

Sends data for the kernel to store it in the page cache for inode at offset. If this provides data beyond the current file size, the file is automatically extended.

If this function raises an exception, the store may still have completed partially.

If the operation is not supported by the kernel, raises OSError with errno ENOSYS.

pyfuse3.readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id)

Report a directory entry in response to a readdir request.

This function should be called by the readdir handler to provide the list of directory entries. The function should be called once for each directory entry, until it returns False.

token must be the token received by the readdir handler.

name and must be the name of the directory entry and attr an

EntryAttributes instance holding its attributes.

next_id must be a 64-bit integer value that uniquely identifies the current position in the list of directory entries. It may be passed back to a later readdir call to start another listing at the right position. This value should be robust in the presence of file removals and creations, i.e. if files are created or removed after a call to readdir and readdir is called again with start_id set to any previously supplied next_id values, under no circumstances must any file be reported twice or skipped over.

pyfuse3.trio_token

Set to the value returned by trio.lowlevel.current_trio_token while main is running. Can be used by other threads to run code in the main loop through trio.from_thread.run.

pyfuse3-3.4.0/doc/html/general.html0000644000175000017500000003233014663707216017123 0ustar useruser00000000000000 General Information — pyfuse3 3.4.0 documentation

General Information

Getting started

A file system is implemented by subclassing the pyfuse3.Operations class and implementing the various request handlers. The handlers respond to requests received from the FUSE kernel module and perform functions like looking up the inode given a file name, looking up attributes of an inode, opening a (file) inode for reading or writing or listing the contents of a (directory) inode.

By default, pyfuse3 uses asynchronous I/O using Trio, and most of the documentation assumes that you are using Trio. If you’d rather use asyncio, take a look at asyncio Support. If you would like to use Trio (which is recommended) but you have not yet used Trio before, please read the Trio tutorial first.

An instance of the operations class is passed to pyfuse3.init to mount the file system. To enter the request handling loop, run pyfuse3.main in a trio event loop. This function will return when the file system should be unmounted again, which is done by calling pyfuse3.close.

All character data (directory entry names, extended attribute names and values, symbolic link targets etc) are passed as bytes and must be returned as bytes.

For easier debugging, it is strongly recommended that applications using pyfuse3 also make use of the faulthandler module.

Lookup Counts

Most file systems need to keep track which inodes are currently known to the kernel. This is, for example, necessary to correctly implement the unlink system call: when unlinking a directory entry whose associated inode is currently opened, the file system must defer removal of the inode (and thus the file contents) until it is no longer in use by any process.

FUSE file systems achieve this by using “lookup counts”. A lookup count is a number that’s associated with an inode. An inode with a lookup count of zero is currently not known to the kernel. This means that if there are no directory entries referring to such an inode it can be safely removed, or (if a file system implements dynamic inode numbers), the inode number can be safely recycled.

The lookup count of an inode is increased by every operation that could make the inode “known” to the kernel. This includes e.g. lookup, create and readdir (to determine if a given request handler affects the lookup count, please refer to its description in the Operations class). The lookup count is decreased by calls to the forget handler.

FUSE and VFS Locking

FUSE and the kernel’s VFS layer provide some basic locking that FUSE file systems automatically take advantage of. Specifically:

  • Calls to rename, create, symlink, mknod, link and mkdir acquire a write-lock on the inode of the directory in which the respective operation takes place (two in case of rename).

  • Calls to lookup acquire a read-lock on the inode of the parent directory (meaning that lookups in the same directory may run concurrently, but never at the same time as e.g. a rename or mkdir operation).

  • Unless writeback caching is enabled, calls to write for the same inode are automatically serialized (i.e., there are never concurrent calls for the same inode even when multithreading is enabled).

pyfuse3-3.4.0/doc/html/genindex.html0000644000175000017500000004775214663711065017322 0ustar useruser00000000000000 Index — pyfuse3 3.4.0 documentation

Index

A | C | D | E | F | G | I | K | L | M | N | O | P | R | S | T | U | W | X

A

C

D

E

F

G

I

K

L

M

N

O

P

R

S

T

U

W

X

pyfuse3-3.4.0/doc/html/gotchas.html0000644000175000017500000002143514663707216017142 0ustar useruser00000000000000 Common Gotchas — pyfuse3 3.4.0 documentation

Common Gotchas

This chapter lists some common gotchas that should be avoided.

pyfuse3-3.4.0/doc/html/index.html0000644000175000017500000001523014663711065016612 0ustar useruser00000000000000 pyfuse3 Documentation — pyfuse3 3.4.0 documentation pyfuse3-3.4.0/doc/html/install.html0000644000175000017500000002237714663707216017166 0ustar useruser00000000000000 Installation — pyfuse3 3.4.0 documentation

Installation

Dependencies

In order to build and run pyfuse3 you need the following software:

  • Linux kernel 3.9 or newer.

  • Version 3.3.0 or newer of the libfuse library, including development headers (typically distributions provide them in a libfuse3-devel or libfuse3-dev package).

  • Python 3.8 or newer installed with development headers

  • The Trio Python module, version 0.7 or newer.

  • The setuptools Python module, version 1.0 or newer.

  • the pkg-config tool

  • the attr library

  • A C compiler (only for building)

To run the unit tests, you will need

  • The py.test Python module, version 3.3.0 or newer

Stable releases

To install a stable pyfuse3 release:

  1. Download and unpack the release tarball from https://pypi.python.org/pypi/pyfuse3/

  2. Run python3 setup.py build_ext --inplace to build the C extension

  3. Run python3 -m pytest test/ to run a self-test. If this fails, ask for help on the FUSE mailing list or report a bug in the issue tracker.

  4. To install system-wide for all users, run sudo python setup.py install. To install into ~/.local, run python3 setup.py install --user.

Development Version

If you have checked out the unstable development version, a bit more effort is required. You need to also have Cython (0.29 or newer) and Sphinx installed, and the necessary commands are:

python3 setup.py build_cython
python3 setup.py build_ext --inplace
python3 -m pytest test/
sphinx-build -b html rst doc/html
python3 setup.py install
pyfuse3-3.4.0/doc/html/objects.inv0000644000175000017500000000236614663711065016772 0ustar useruser00000000000000# Sphinx inventory version 2 # Project: pyfuse3 # Version: 3.4.0 # The remainder of this file is compressed using zlib. xڥMs8 WeP;Q IR!S57۠B^IΆ+Y2D9aKj}Ԧ>T˲aQQlg8e?b:$d2007FMc@;}֩P1&]Up﷙؂E k@.45ne7_h fׂQGӪw4|jiRgǯbTN6( ~Q2x IT2]9+.rH`P)v0Rh=ٰcd {vO$d:Axү) -dN  YFPT[0(RDưWƨ 9wIoj i{0 ,$v)(`@4܀ЫPEr AR" iSN }E,#NrΗU/W j?-W RއoOKaÌϒS3Fr D'^~wʄw 5UOu|F)|zœxmJ?p}NYo;lt3 ğ#tV^V^V6AuR^㗓4˕Sk1EK0k.IũaRp/:PlXHCCTބd,WPc kL (NEt䉍27]l l~;KY=N٧rE^կjgd윰3Ŏؽ6Bo}ar;i;ғ7bֆQMazbK^3C/B NLÎM܅SO:j3a_arL(cwmsLsO*bkwQOvGV;Y Ea$v>ɿ o ;Em!uj_^##P]g_v~,NGH% f?+=bبeY }׎A"e9e%pyfuse3-3.4.0/doc/html/operations.html0000644000175000017500000023355414663707216017704 0ustar useruser00000000000000 Request Handlers — pyfuse3 3.4.0 documentation

Request Handlers

(You can use the Index to directly jump to a specific handler).

class pyfuse3.Operations

This class defines the request handler methods that an pyfuse3 file system may implement. If a particular request handler has not been implemented, it must raise FUSEError with an errorcode of errno.ENOSYS. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again.

The only exception that request handlers are allowed to raise is FUSEError. This will cause the specified errno to be returned by the syscall that is being handled.

It is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise FUSEError(ENOSYS) or do nothing).

supports_dot_lookup = True

If set, indicates that the filesystem supports lookup of the . and .. entries. This is required if the file system will be shared over NFS.

enable_writeback_cache = True

Enables write-caching in the kernel if available. This means that individual write request may be buffered and merged in the kernel before they are send to the filesystem.

enable_acl = False

Enable ACL support. When enabled, the kernel will cache and have responsibility for enforcing ACLs. ACL will be stored as xattrs and passed to userspace, which is responsible for updating the ACLs in the filesystem, keeping the file mode in sync with the ACL, and ensuring inheritance of default ACLs when new filesystem nodes are created. Note that this requires that the file system is able to parse and interpret the xattr representation of ACLs.

Enabling this feature implicitly turns on the default_permissions option.

async access(inode: ~pyfuse3.NewType.<locals>.new_type, mode: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) bool

Check if requesting process has mode rights on inode.

ctx will be a RequestContext instance.

The method must return a boolean value.

If the default_permissions mount option is given, this method is not called.

When implementing this method, the get_sup_groups function may be useful.

async create(parent_inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, mode: ~pyfuse3.NewType.<locals>.new_type, flags: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) Tuple[FileInfo, EntryAttributes]

Create a file with permissions mode and open it with flags.

ctx will be a RequestContext instance.

The method must return a tuple of the form (fi, attr), where fi is a FileInfo instance handle like the one returned by open and attr is an EntryAttributes instance with the attributes of the newly created directory entry.

(Successful) execution of this handler increases the lookup count for the returned inode by one.

async flush(fh: ~pyfuse3.NewType.<locals>.new_type) None

Handle close() syscall.

fh will be an integer filehandle returned by a prior open or create call.

This method is called whenever a file descriptor is closed. It may be called multiple times for the same open file (e.g. if the file handle has been duplicated).

async forget(inode_list: ~typing.Sequence[~typing.Tuple[~pyfuse3.NewType.<locals>.new_type, int]]) None

Decrease lookup counts for inodes in inode_list.

inode_list is a list of (inode, nlookup) tuples. This method should reduce the lookup count for each inode by nlookup.

If the lookup count reaches zero, the inode is currently not known to the kernel. In this case, the file system will typically check if there are still directory entries referring to this inode and, if not, remove the inode.

If the file system is unmounted, it may not have received forget calls to bring all lookup counts to zero. The filesystem needs to take care to clean up inodes that at that point still have non-zero lookup count (e.g. by explicitly calling forget with the current lookup count for every such inode after main has returned).

This method must not raise any exceptions (not even FUSEError), since it is not handling a particular client request.

async fsync(fh: ~pyfuse3.NewType.<locals>.new_type, datasync: bool) None

Flush buffers for open file fh.

If datasync is true, only the file contents should be flushed (in contrast to the metadata about the file).

fh will be an integer filehandle returned by a prior open or create call.

async fsyncdir(fh: ~pyfuse3.NewType.<locals>.new_type, datasync: bool) None

Flush buffers for open directory fh.

If datasync is true, only the directory contents should be flushed (in contrast to metadata about the directory itself).

async getattr(inode: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) EntryAttributes

Get attributes for inode.

ctx will be a RequestContext instance.

This method should return an EntryAttributes instance with the attributes of inode. The entry_timeout attribute is ignored in this context.

async getxattr(inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) bytes

Return extended attribute name of inode.

ctx will be a RequestContext instance.

If the attribute does not exist, the method must raise FUSEError with an error code of ENOATTR. name will be of type bytes, but is guaranteed not to contain zero-bytes (\0).

init() None

Initialize operations.

This method will be called just before the file system starts handling requests. It must not raise any exceptions (not even FUSEError), since it is not handling a particular client request.

Create directory entry name in parent_inode refering to inode.

ctx will be a RequestContext instance.

The method must return an EntryAttributes instance with the attributes of the newly created directory entry.

(Successful) execution of this handler increases the lookup count for the returned inode by one.

async listxattr(inode: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) new_type]

Get list of extended attributes for inode.

ctx will be a RequestContext instance.

This method must return a sequence of bytes objects. The objects must not include zero-bytes (\0).

async lookup(parent_inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) EntryAttributes

Look up a directory entry by name and get its attributes.

This method should return an EntryAttributes instance for the directory entry name in the directory with inode parent_inode.

If there is no such entry, the method should either return an EntryAttributes instance with zero st_ino value (in which case the negative lookup will be cached as specified by entry_timeout), or it should raise FUSEError with an errno of errno.ENOENT (in this case the negative result will not be cached).

ctx will be a RequestContext instance.

The file system must be able to handle lookups for . and .., no matter if these entries are returned by readdir or not.

(Successful) execution of this handler increases the lookup count for the returned inode by one.

async mkdir(parent_inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, mode: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) EntryAttributes

Create a directory.

This method must create a new directory name with mode mode in the directory with inode parent_inode. ctx will be a RequestContext instance.

This method must return an EntryAttributes instance with the attributes of the newly created directory entry.

(Successful) execution of this handler increases the lookup count for the returned inode by one.

async mknod(parent_inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, mode: ~pyfuse3.NewType.<locals>.new_type, rdev: int, ctx: RequestContext) EntryAttributes

Create (possibly special) file.

This method must create a (special or regular) file name in the directory with inode parent_inode. Whether the file is special or regular is determined by its mode. If the file is neither a block nor character device, rdev can be ignored. ctx will be a RequestContext instance.

The method must return an EntryAttributes instance with the attributes of the newly created directory entry.

(Successful) execution of this handler increases the lookup count for the returned inode by one.

async open(inode: ~pyfuse3.NewType.<locals>.new_type, flags: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) FileInfo

Open a inode inode with flags.

ctx will be a RequestContext instance.

flags will be a bitwise or of the open flags described in the open(2) manpage and defined in the os module (with the exception of O_CREAT, O_EXCL, O_NOCTTY and O_TRUNC)

This method must return a FileInfo instance. The FileInfo.fh field must contain an integer file handle, which will be passed to the read, write, flush, fsync and release methods to identify the open file. The FileInfo instance may also have relevant configuration attributes set; see the FileInfo documentation for more information.

async opendir(inode: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) new_type

Open the directory with inode inode.

ctx will be a RequestContext instance.

This method should return an integer file handle. The file handle will be passed to the readdir, fsyncdir and releasedir methods to identify the directory.

async read(fh: ~pyfuse3.NewType.<locals>.new_type, off: int, size: int) bytes

Read size bytes from fh at position off.

fh will be an integer filehandle returned by a prior open or create call.

This function should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes.

async readdir(fh: ~pyfuse3.NewType.<locals>.new_type, start_id: int, token: ReaddirToken) None

Read entries in open directory fh.

This method should list the contents of directory fh (as returned by a prior opendir call), starting at the entry identified by start_id.

Instead of returning the directory entries directly, the method must call readdir_reply for each directory entry. If readdir_reply returns True, the file system must increase the lookup count for the provided directory entry by one and call readdir_reply again for the next entry (if any). If readdir_reply returns False, the lookup count must not be increased and the method should return without further calls to readdir_reply.

The start_id parameter will be either zero (in which case listing should begin with the first entry) or it will correspond to a value that was previously passed by the file system to the readdir_reply function in the next_id parameter.

If entries are added or removed during a readdir cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once.

. and .. entries may be included but are not required. However, if they are reported the filesystem must not increase the lookup count for the corresponding inodes (even if readdir_reply returns True).

Return target of symbolic link inode.

ctx will be a RequestContext instance.

async release(fh: ~pyfuse3.NewType.<locals>.new_type) None

Release open file.

This method will be called when the last file descriptor of fh has been closed, i.e. when the file is no longer opened by any client process.

fh will be an integer filehandle returned by a prior open or create call. Once release has been called, no future requests for fh will be received (until the value is re-used in the return value of another open or create call).

This method may return an error by raising FUSEError, but the error will be discarded because there is no corresponding client request.

async releasedir(fh: ~pyfuse3.NewType.<locals>.new_type) None

Release open directory.

This method will be called exactly once for each opendir call. After fh has been released, no further readdir requests will be received for it (until it is opened again with opendir).

async removexattr(inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) None

Remove extended attribute name of inode.

ctx will be a RequestContext instance.

If the attribute does not exist, the method must raise FUSEError with an error code of ENOATTR. name will be of type bytes, but is guaranteed not to contain zero-bytes (\0).

async rename(parent_inode_old: ~pyfuse3.NewType.<locals>.new_type, name_old: str, parent_inode_new: ~pyfuse3.NewType.<locals>.new_type, name_new: str, flags: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) None

Rename a directory entry.

This method must rename name_old in the directory with inode parent_inode_old to name_new in the directory with inode parent_inode_new. If name_new already exists, it should be overwritten.

flags may be RENAME_EXCHANGE or RENAME_NOREPLACE. If RENAME_NOREPLACE is specified, the filesystem must not overwrite name_new if it exists and return an error instead. If RENAME_EXCHANGE is specified, the filesystem must atomically exchange the two files, i.e. both must exist and neither may be deleted.

ctx will be a RequestContext instance.

Let the inode associated with name_old in parent_inode_old be inode_moved, and the inode associated with name_new in parent_inode_new (if it exists) be called inode_deref.

If inode_deref exists and has a non-zero lookup count, or if there are other directory entries referring to inode_deref), the file system must update only the directory entry for name_new to point to inode_moved instead of inode_deref. (Potential) removal of inode_deref (containing the previous contents of name_new) must be deferred to the forget method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with inode_deref either).

async rmdir(parent_inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, ctx: RequestContext) None

Remove directory name.

This method must remove the directory name from the direcory with inode parent_inode. ctx will be a RequestContext instance. If there are still entries in the directory, the method should raise FUSEError(errno.ENOTEMPTY).

If the inode associated with name (i.e., not the parent_inode) has a non-zero lookup count, the file system must remove only the directory entry (so that future calls to readdir for parent_inode will no longer include name, but e.g. calls to getattr for file’s inode still succeed). Removal of the associated inode holding the directory contents and metadata must be deferred to the forget method to be carried out when the lookup count reaches zero.

(Since hard links to directories are not allowed by POSIX, this method is not required to check if there are still other directory entries refering to the same inode. This conveniently avoids the ambigiouties associated with the . and .. entries).

async setattr(inode: ~pyfuse3.NewType.<locals>.new_type, attr: EntryAttributes, fields: SetattrFields, fh: ~typing.Optional[~pyfuse3.NewType.<locals>.new_type], ctx: RequestContext) EntryAttributes

Change attributes of inode.

fields will be an SetattrFields instance that specifies which attributes are to be updated. attr will be an EntryAttributes instance for inode that contains the new values for changed attributes, and undefined values for all other attributes.

Most file systems will additionally set the st_ctime_ns attribute to the current time (to indicate that the inode metadata was changed).

If the syscall that is being processed received a file descriptor argument (like e.g. ftruncate(2) or fchmod(2)), fh will be the file handle returned by the corresponding call to the open handler. If the syscall was path based (like e.g. truncate(2) or chmod(2)), fh will be None.

ctx will be a RequestContext instance.

The method should return an EntryAttributes instance (containing both the changed and unchanged values).

async setxattr(inode: ~pyfuse3.NewType.<locals>.new_type, name: ~pyfuse3.NewType.<locals>.new_type, value: bytes, ctx: RequestContext) None

Set extended attribute name of inode to value.

ctx will be a RequestContext instance.

The attribute may or may not exist already. Both name and value will be of type bytes. name is guaranteed not to contain zero-bytes (\0).

stacktrace() None

Asynchronous debugging.

This method will be called when the fuse_stacktrace extended attribute is set on the mountpoint. The default implementation logs the current stack trace of every running Python thread. This can be quite useful to debug file system deadlocks.

async statfs(ctx: RequestContext) StatvfsData

Get file system statistics.

ctx will be a RequestContext instance.

The method must return an appropriately filled StatvfsData instance.

Create a symbolic link.

This method must create a symbolink link named name in the directory with inode parent_inode, pointing to target. ctx will be a RequestContext instance.

The method must return an EntryAttributes instance with the attributes of the newly created directory entry.

(Successful) execution of this handler increases the lookup count for the returned inode by one.

Remove a (possibly special) file.

This method must remove the (special or regular) file name from the direcory with inode parent_inode. ctx will be a RequestContext instance.

If the inode associated with file (i.e., not the parent_inode) has a non-zero lookup count, or if there are still other directory entries referring to this inode (due to hardlinks), the file system must remove only the directory entry (so that future calls to readdir for parent_inode will no longer include name, but e.g. calls to getattr for file’s inode still succeed). (Potential) removal of the associated inode with the file contents and metadata must be deferred to the forget method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with the inode either).

async write(fh: ~pyfuse3.NewType.<locals>.new_type, off: int, buf: bytes) int

Write buf into fh at off.

fh will be an integer filehandle returned by a prior open or create call.

This method must return the number of bytes written. However, unless the file system has been mounted with the direct_io option, the file system must always write all the provided data (i.e., return len(buf)).

pyfuse3-3.4.0/doc/html/py-modindex.html0000644000175000017500000001154214663711065017742 0ustar useruser00000000000000 Python Module Index — pyfuse3 3.4.0 documentation pyfuse3-3.4.0/doc/html/search.html0000644000175000017500000001115514663711065016752 0ustar useruser00000000000000 Search — pyfuse3 3.4.0 documentation

Search

Searching for multiple words only shows matches that contain all words.

pyfuse3-3.4.0/doc/html/searchindex.js0000644000175000017500000010063114663711065017450 0ustar useruser00000000000000Search.setIndex({"docnames": ["about", "asyncio", "changes", "data", "example", "fuse_api", "general", "gotchas", "index", "install", "operations", "util"], "filenames": ["about.rst", "asyncio.rst", "changes.rst", "data.rst", "example.rst", "fuse_api.rst", "general.rst", "gotchas.rst", "index.rst", "install.rst", "operations.rst", "util.rst"], "titles": ["About", "asyncio Support", "Changelog", "Data Structures", "Example File Systems", "FUSE API Functions", "General Information", "Common Gotchas", "pyfuse3 Documentation", "Installation", "Request Handlers", "Utility Functions"], "terms": {"pyfuse3": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11], "i": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "set": [0, 2, 3, 4, 5, 10, 11], "python": [0, 2, 9, 10, 11], "3": [0, 1, 9, 11], "bind": 0, "libfus": [0, 2, 9, 11], "It": [0, 5, 10], "provid": [0, 3, 4, 5, 6, 9, 10, 11], "an": [0, 2, 3, 4, 5, 6, 7, 10, 11], "asynchron": [0, 1, 5, 6, 10], "api": [0, 8], "compat": [0, 2, 3, 4], "trio": [0, 1, 2, 4, 5, 6, 9], "asyncio": [0, 2, 6, 8], "enabl": [0, 1, 2, 3, 4, 6, 10], "you": [0, 1, 2, 3, 4, 6, 7, 9, 10], "easili": 0, "write": [0, 4, 5, 6, 7, 10], "full": 0, "featur": [0, 10], "linux": [0, 4, 9, 11], "filesystem": [0, 4, 5, 10, 11], "releas": [0, 4, 10, 11], "can": [0, 3, 4, 5, 6, 10], "download": [0, 9], "from": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11], "pypi": [0, 9], "The": [0, 3, 4, 5, 6, 9, 10, 11], "document": [0, 1, 4, 6, 10], "read": [0, 6, 7, 10, 11], "onlin": 0, "also": [0, 2, 4, 5, 6, 9, 10, 11], "includ": [0, 3, 4, 6, 9, 10], "doc": [0, 9], "html": [0, 9], "directori": [0, 3, 4, 5, 6, 10, 11], "tarbal": [0, 4, 9], "pleas": [0, 6], "report": [0, 5, 9, 10], "ani": [0, 3, 4, 5, 6, 10], "bug": [0, 2, 9], "issu": [0, 2, 9], "tracker": [0, 9], "For": [0, 1, 4, 5, 6, 11], "discuss": 0, "question": 0, "us": [0, 1, 2, 3, 4, 5, 6, 10, 11], "gener": [0, 2, 3, 4, 5, 8], "fuse": [0, 4, 8, 9, 10, 11], "mail": [0, 9], "list": [0, 5, 6, 7, 9, 10], "A": [0, 3, 4, 5, 6, 9], "searchabl": 0, "archiv": 0, "kindli": 0, "gmane": 0, "beta": 0, "ar": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "like": [0, 6, 10, 11], "semant": 0, "version": [0, 2], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "mean": [0, 5, 6, 10], "backward": [0, 2], "incompat": 0, "chang": [0, 2, 4, 10], "reflect": 0, "increas": [0, 6, 10], "major": 0, "number": [0, 3, 4, 6, 10], "sourc": [0, 2, 4], "code": [0, 2, 3, 4, 5, 7, 10, 11], "avail": [0, 10, 11], "github": [0, 2], "By": [1, 6], "default": [1, 3, 4, 5, 6, 10], "o": [1, 4, 6, 7, 10, 11], "most": [1, 3, 6, 10], "assum": [1, 6], "If": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "d": [1, 4, 6], "rather": [1, 6], "import": [1, 4], "pyfuse3_asyncio": [1, 2], "modul": [1, 2, 3, 4, 5, 6, 9, 10], "call": [1, 2, 3, 4, 5, 6, 10, 11], "its": [1, 5, 6, 10], "function": [1, 2, 3, 4, 6, 8, 10], "befor": [1, 5, 6, 10], "exampl": [1, 2, 5, 6, 8], "usual": 1, "here": [1, 4], "remov": [2, 4, 5, 6, 10], "support": [2, 3, 4, 5, 6, 8, 10], "5": 2, "broken": 2, "out": [2, 3, 4, 9, 10, 11], "dev": [2, 9], "cython": [2, 9], "latest": 2, "29": [2, 9], "x": [2, 11], "bring": [2, 10], "action": [2, 4], "ci": 2, "travi": 2, "updat": [2, 3, 4, 10], "readm": 2, "minim": 2, "mainten": 2, "develop": 2, "setup": [2, 4, 9], "py": [2, 4, 9], "test": [2, 9], "tmpf": [2, 4], "work": [2, 11], "around": 2, "strang": 2, "kernel": [2, 3, 5, 6, 9, 10], "behaviour": 2, "setattr": [2, 3, 4, 5, 10], "after": [2, 5, 10], "unlink": [2, 4, 5, 6, 10], "open": [2, 3, 4, 6, 7, 10], "file": [2, 3, 5, 6, 7, 8, 10, 11], "respond": [2, 6], "enoent": [2, 4, 5, 10], "instead": [2, 3, 5, 10], "crash": 2, "add": [2, 3, 4, 5], "type": [2, 4, 10, 11], "annot": 2, "pass": [2, 3, 4, 5, 6, 10], "xattr_creat": 2, "xattr_replac": 2, "setxattr": [2, 5, 10, 11], "now": 2, "correctli": [2, 6], "fix": [2, 4], "long": 2, "stand": 2, "round": 2, "error": [2, 3, 5, 7, 10], "date": 2, "handl": [2, 3, 4, 5, 6, 10], "when": [2, 3, 5, 6, 7, 10, 11], "nanosecond": [2, 3], "part": 2, "were": 2, "999999500": 2, "There": [2, 4, 11], "new": [2, 10], "termin": [2, 5], "gracefulli": [2, 5], "end": 2, "main": [2, 4, 5, 6, 10], "loop": [2, 4, 5, 6], "No": 2, "regener": 2, "21": 2, "made": 2, "newest": 2, "creat": [2, 3, 4, 5, 6, 10], "handler": [2, 3, 4, 5, 6, 8], "return": [2, 3, 4, 5, 6, 10, 11], "fileinfo": [2, 3, 4, 10], "struct": [2, 3, 5], "allow": [2, 10], "modif": [2, 3], "certain": 2, "attribut": [2, 3, 5, 6, 10, 11], "e": [2, 3, 5, 6, 10], "g": [2, 3, 6, 10], "direct_io": [2, 3, 10], "note": [2, 4, 5, 10], "break": [2, 4], "depend": 2, "old": 2, "behavior": [2, 3], "need": [2, 4, 5, 6, 9, 10], "hello_asyncio": 2, "passthroughf": [2, 4], "system": [2, 3, 5, 6, 7, 8, 9, 10, 11], "so": [2, 3, 4, 5, 10], "renam": [2, 3, 4, 5, 6, 10], "oper": [2, 3, 4, 5, 6, 10], "longer": [2, 6, 10], "fail": [2, 3, 9, 11], "clarifi": 2, "invalidate_inod": [2, 5], "mai": [2, 3, 4, 5, 6, 10, 11], "block": [2, 4, 5, 10], "some": [2, 3, 4, 5, 6, 7], "circumst": [2, 5], "ad": [2, 10], "wa": [2, 10], "readdir": [2, 3, 4, 5, 6, 10], "invalidate_entry_async": [2, 5], "accept": 2, "addit": 2, "ignore_eno": [2, 5], "paramet": [2, 10, 11], "log": [2, 4, 5, 10], "actual": [2, 4, 5, 10], "awar": 2, "entri": [2, 3, 4, 5, 6, 10, 11], "should": [2, 3, 4, 5, 6, 7, 10, 11], "have": [2, 3, 4, 5, 6, 9, 10, 11], "been": [2, 4, 5, 10], "syncf": [2, 11], "first": [2, 4, 6, 10, 11], "fork": 2, "llfuse": 2, "thank": 2, "all": [2, 4, 6, 9, 10], "want": 2, "take": [2, 6, 10], "look": [2, 6, 10], "enoattr": [3, 10], "errorcod": [3, 10], "unfortun": [3, 5], "miss": 3, "errno": [3, 4, 5, 10], "root_inod": [3, 4], "inod": [3, 4, 5, 6, 10], "root": [3, 4], "mount": [3, 4, 5, 6, 7, 10, 11], "point": [3, 10], "rename_exchang": [3, 10], "flag": [3, 4, 10], "must": [3, 5, 6, 10], "atom": [3, 10], "exchang": [3, 10], "two": [3, 4, 6, 10], "path": [3, 4, 10, 11], "which": [2, 3, 5, 6, 10], "both": [3, 4, 10], "exist": [3, 4, 10], "rename_noreplac": [3, 10], "replac": 3, "target": [3, 4, 6, 10], "default_opt": [3, 4, 5], "recommend": [3, 5, 6, 10], "option": [3, 4, 5, 10], "init": [3, 4, 5, 6, 10], "get": [3, 4, 7, 10, 11], "reason": [3, 5, 11], "perform": [3, 4, 5, 6], "other": [3, 4, 5, 10, 11], "combin": 3, "well": 3, "onli": [3, 5, 9, 10], "deviat": 3, "good": [3, 4], "fsname": [3, 4], "foo": [3, 7], "guarante": [3, 10], "never": [3, 4, 6], "alwai": [3, 4, 10], "safe": [3, 6], "default_permiss": [3, 4, 5, 10], "permiss": [3, 4, 10], "check": [3, 9, 10], "without": [3, 4, 7, 10], "umask": [3, 4], "uid": [3, 4], "gid": [3, 4], "would": [3, 4, 6], "effect": 3, "except": [2, 3, 4, 5, 10], "fuseerror": [3, 4, 10], "rais": [2, 3, 4, 5, 10], "request": [3, 4, 5, 6, 8], "indic": [3, 10], "could": [3, 4, 5, 6], "carri": [3, 10, 11], "result": [3, 4, 5, 10], "errno_": 3, "class": [3, 4, 5, 6, 10], "requestcontext": [3, 10], "instanc": [3, 5, 6, 10], "method": [3, 5, 10, 11], "inform": [3, 5, 8, 10], "about": [3, 4, 5, 8, 10], "caller": [3, 11], "syscal": [3, 10], "initi": [3, 4, 5, 10], "pid": [3, 11], "statvfsdata": [3, 4, 10], "store": [3, 4, 5, 10], "correspond": [3, 10], "element": 3, "statvf": [3, 4], "see": [3, 10], "2": [3, 10, 11], "detail": 3, "f_bsize": [3, 4], "f_frsize": [3, 4], "f_block": [3, 4], "f_bfree": [3, 4], "f_bavail": [3, 4], "f_file": [3, 4], "f_ffree": [3, 4], "f_favail": [3, 4], "f_namemax": [3, 4], "entryattribut": [3, 4, 5, 10], "stat": [3, 4], "c": [3, 5, 9], "fstat": [3, 4], "self": [3, 4, 9], "explanatori": 3, "st_ino": [3, 4, 10], "entry_timeout": [3, 4, 10], "valid": [3, 5], "timeout": 3, "name": [2, 3, 4, 5, 6, 10, 11], "float": 3, "unit": [3, 9], "second": [3, 11], "attr_timeout": [3, 4], "st_mode": [3, 4], "st_nlink": [3, 4], "st_uid": [3, 4], "st_gid": [3, 4], "st_rdev": [3, 4], "st_size": [3, 4], "st_blksize": [3, 4], "st_block": [3, 4], "st_atime_n": [3, 4], "time": [3, 4, 6, 10, 11], "last": [3, 10], "access": [3, 4, 5, 10], "integ": [2, 3, 4, 5, 10], "st_ctime_n": [3, 4, 10], "st_mtime_n": [3, 4], "fuse_file_info": 3, "relev": [3, 10], "fh": [3, 4, 10], "uint64_t": 3, "bool": [3, 10], "true": [3, 4, 5, 10], "signal": [3, 5], "cach": [3, 5, 6, 10], "buffer": [3, 10], "keep_cach": 3, "previous": [3, 5, 10], "still": [2, 3, 5, 10], "invalid": [3, 5], "nonseek": 3, "doe": [3, 5, 10], "seek": [3, 7], "setattrfield": [3, 10], "specifi": [3, 4, 10], "update_atim": [3, 4], "field": [3, 4, 10], "contain": [3, 4, 10, 11], "valu": [3, 4, 5, 6, 10, 11], "update_mtim": [3, 4], "update_mod": [3, 4], "update_uid": [3, 4], "update_gid": [3, 4], "update_s": [3, 4], "come": 4, "sever": 4, "complet": [4, 5, 7], "ship": 4, "lltest": 4, "usr": 4, "bin": 4, "env": 4, "python3": [4, 9], "utf": 4, "8": [4, 5, 9], "hello": [2, 4], "program": [2, 4], "present": 4, "static": 4, "copyright": 4, "2015": 4, "nikolau": 4, "rath": 4, "org": [4, 9], "gerion": 4, "entrup": 4, "herebi": 4, "grant": 4, "free": 4, "charg": 4, "person": 4, "obtain": 4, "copi": 4, "softwar": [4, 9], "associ": [4, 5, 6, 10], "deal": 4, "restrict": 4, "limit": 4, "right": [4, 5, 10], "modifi": [3, 4], "merg": [4, 10], "publish": 4, "distribut": [4, 9], "sublicens": 4, "sell": 4, "permit": 4, "whom": 4, "furnish": 4, "do": [4, 10, 11], "THE": 4, "AS": 4, "warranti": 4, "OF": 4, "kind": 4, "express": 4, "OR": 4, "impli": 4, "BUT": 4, "NOT": 4, "TO": 4, "merchant": 4, "fit": 4, "FOR": 4, "particular": [3, 4, 10, 11], "purpos": 4, "AND": 4, "noninfring": 4, "IN": 4, "NO": 4, "event": [4, 5, 6], "shall": 4, "author": 4, "holder": 4, "BE": 4, "liabl": 4, "claim": 4, "damag": 4, "liabil": 4, "whether": [4, 10], "contract": 4, "tort": 4, "otherwis": [4, 10], "aris": 4, "connect": [4, 5], "WITH": 4, "sy": [4, 5], "we": 4, "run": [2, 4, 5, 6, 9, 10], "try": 4, "load": 4, "basedir": [2, 4], "abspath": 4, "join": 4, "dirnam": 4, "argv": 4, "0": [1, 3, 4, 5, 7, 9, 10], "src": 4, "pyx": 4, "insert": 4, "argpars": 4, "argumentpars": 4, "faulthandl": [4, 6], "importerror": 4, "els": 4, "getlogg": 4, "__name__": 4, "testf": 4, "def": 4, "__init__": 4, "super": 4, "hello_nam": 4, "b": [4, 9], "messag": 4, "hello_inod": 4, "1": [4, 5, 9], "hello_data": 4, "world": 4, "n": 4, "async": [4, 5, 10], "getattr": [4, 10], "ctx": [4, 10], "none": [4, 5, 10], "s_ifdir": 4, "0o755": 4, "elif": 4, "s_ifreg": 4, "0o644": 4, "len": [4, 10], "stamp": 4, "int": [3, 4, 10], "1438467123": 4, "985654": 4, "1e9": 4, "getgid": 4, "getuid": 4, "lookup": [2, 4, 5, 10], "parent_inod": [4, 10], "opendir": [3, 4, 10], "start_id": [4, 5, 10], "token": [4, 5, 10], "assert": [4, 7], "one": [4, 5, 10], "readdir_repli": [4, 5, 10], "await": 4, "o_rdwr": 4, "o_wronli": 4, "eacc": 4, "off": [4, 10], "size": [4, 5, 10, 11], "init_log": 4, "debug": [4, 6, 10], "fals": [4, 5, 10], "formatt": 4, "asctim": 4, "": [4, 6, 10], "msec": 4, "03d": 4, "threadnam": 4, "datefmt": 4, "y": 4, "m": [4, 9], "h": 4, "streamhandl": 4, "setformatt": 4, "root_logg": 4, "setlevel": 4, "info": 4, "addhandl": 4, "parse_arg": 4, "pars": [4, 10], "command": [4, 9], "line": 4, "parser": 4, "add_argu": 4, "mountpoint": [4, 5, 10], "str": [4, 10, 11], "help": [4, 9], "where": [4, 10], "store_tru": 4, "output": 4, "fuse_opt": [4, 5], "debug_fus": 4, "close": [4, 5, 6, 7, 10], "unmount": [4, 5, 6, 10], "__main__": 4, "data": [4, 5, 6, 8, 10], "2013": 4, "sqlite3": 4, "collect": 4, "defaultdict": 4, "veri": 4, "simpl": 4, "implement": [4, 6, 7, 10, 11], "terribl": 4, "don": 4, "t": [4, 5], "signific": 4, "amount": 4, "flaw": 4, "keep": [4, 6, 10], "easier": [4, 6], "understand": 4, "atim": 4, "mtime": 4, "ctime": 4, "count": [4, 10], "maintain": 4, "enable_writeback_cach": [4, 10], "db": 4, "text_factori": 4, "row_factori": 4, "row": 4, "cursor": 4, "inode_open_count": 4, "init_t": 4, "tabl": 4, "execut": [4, 10], "id": [4, 11], "primari": 4, "kei": 4, "null": 4, "mode": [3, 4, 10], "mtime_n": 4, "atime_n": 4, "ctime_n": 4, "blob": 4, "256": 4, "rdev": [4, 10], "content": [4, 6, 7, 10], "rowid": 4, "autoincr": 4, "refer": [4, 6, 10], "uniqu": [4, 5], "now_n": 4, "INTO": 4, "s_irusr": 4, "s_iwusr": 4, "s_ixusr": 4, "s_irgrp": 4, "s_ixgrp": 4, "s_iroth": 4, "s_ixoth": 4, "get_row": 4, "kw": 4, "next": [4, 10], "stopiter": 4, "nosuchrowerror": 4, "nouniquevalueerror": 4, "inode_p": [4, 5], "select": [4, 11], "300": 4, "512": 4, "readlink": [4, 10], "cursor2": 4, "order": [4, 9], "BY": 4, "s_isdir": 4, "eisdir": 4, "_remov": 4, "rmdir": [4, 5, 10], "enotdir": 4, "enotempti": [4, 10], "delet": [4, 5, 10], "symlink": [4, 5, 6, 10], "s_iflnk": 4, "s_iwgrp": 4, "s_iwoth": 4, "_creat": 4, "inode_p_old": 4, "name_old": [4, 10], "inode_p_new": 4, "name_new": [4, 10], "einval": 4, "entry_old": 4, "entry_new": 4, "exc": 4, "target_exist": 4, "_replac": 4, "link": [4, 5, 6, 10], "new_inode_p": 4, "new_nam": [4, 10], "entry_p": 4, "warn": 4, "attempt": [4, 5], "parent": [4, 5, 6], "attr": [4, 5, 9, 10], "memoryview": 4, "update_ctim": 4, "mknod": [4, 5, 6, 10], "mkdir": [4, 5, 6, 10], "statf": [4, 10], "stat_": 4, "sum": 4, "max": 4, "1024": 4, "100": 4, "yeah": 4, "unus": 4, "argument": [4, 5, 10], "pylint": 4, "disabl": [4, 5], "w0613": 4, "ha": [4, 5, 10, 11], "r0201": 4, "inode_par": 4, "w0612": 4, "lastrowid": 4, "offset": [4, 5], "length": 4, "buf": [4, 10], "del": 4, "__str__": 4, "queri": 4, "more": [2, 4, 9, 10], "than": [4, 10], "produc": [3, 4], "discard": [4, 5, 10], "mirror": 4, "tree": 4, "caveat": 4, "through": [4, 5], "zero": [3, 4, 6, 10], "alloc": 4, "larg": 4, "becaus": [4, 5, 10, 11], "wai": [4, 5], "fulli": 4, "posix": [4, 10], "compliant": 4, "hardlink": [4, 10], "dure": [4, 10], "twice": [4, 5], "omit": 4, "them": [4, 9], "underli": 4, "confus": 4, "stat_m": 4, "fsencod": 4, "fsdecod": 4, "_inode_path_map": 4, "_lookup_cnt": 4, "lambda": 4, "_fd_inode_map": 4, "dict": 4, "_inode_fd_map": 4, "_fd_open_count": 4, "_inode_to_path": 4, "val": 4, "keyerror": 4, "isinst": 4, "case": [4, 5, 6, 10], "pick": 4, "iter": [4, 11], "_add_path": 4, "With": 4, "map": 4, "multipl": [4, 10], "forget": [4, 5, 6, 7, 10], "inode_list": [4, 10], "nlookup": [4, 10], "continu": [4, 5], "_getattr": 4, "fd": 4, "lstat": 4, "oserror": [2, 4, 5], "listdir": [4, 7, 11], "append": 4, "start": [4, 5, 10], "same": [4, 5, 6, 10, 11], "between": 4, "cannot": [4, 5], "simpli": 4, "skip": [4, 5, 10], "over": [4, 5, 10, 11], "onc": [4, 5, 10], "ino": 4, "sort": 4, "_forget_path": 4, "chown": 4, "follow_symlink": 4, "parent_old": 4, "parent_new": 4, "path_old": 4, "path_new": 4, "f": [4, 5], "possibl": 4, "path_or_fh": 4, "truncat": [4, 10], "chmod": [4, 10], "ftruncat": [4, 10], "fchmod": [4, 10], "fchown": 4, "under": [4, 5, 11], "resolv": 4, "symbol": [4, 6, 10], "s_islnk": 4, "s_imod": 4, "utim": 4, "retriev": [4, 5], "shouldn": 4, "oldstat": 4, "devic": [4, 10], "o_creat": [4, 10], "o_trunc": [4, 10], "lseek": 4, "seek_set": 4, "arg": [4, 5], "enter": [4, 6], "op": 5, "anoth": [5, 10], "defin": [5, 10], "string": [5, 11], "basi": 5, "necessari": [5, 6, 9], "my_opt": 5, "allow_oth": 5, "fuse_mount_opt": 5, "fuse_ll_opt": 5, "fuse_lowlevel_c": 5, "coroutin": [], "min_task": 5, "max_task": 5, "99": 5, "thread": [5, 10], "differ": 5, "wrap": 5, "from_thread": 5, "run_sync": 5, "trio_token": 5, "convienc": [5, 11], "clean": [5, 10], "up": [5, 6, 10], "ensur": [5, 10], "peform": 5, "explicitli": [5, 10], "normal": 5, "user": [5, 9, 11], "umount": 5, "fusermount": 5, "howev": [5, 10], "In": [5, 9, 10, 11], "remain": 5, "while": 5, "process": [5, 6, 10], "properli": 5, "via": 5, "interfac": [5, 11], "even": [5, 6, 10], "fuse_ino_t": 5, "attr_onli": 5, "instruct": 5, "unless": [5, 6, 10], "writeback": [5, 6], "activ": 5, "dirti": 5, "control": 5, "until": [5, 6, 10], "lead": 5, "deadlock": [5, 10], "therefor": 5, "separ": 5, "enosi": [5, 10], "invalidate_entri": 5, "match": 5, "current": [5, 6, 10], "inotifi": 5, "watcher": 5, "pend": 5, "relat": [2, 5, 11], "avoid": [5, 7, 10], "nor": [5, 10], "hold": [5, 10], "lock": 5, "As": 5, "4": 5, "18": 5, "removexattr": [5, 10], "itself": [5, 10], "technic": 5, "To": [5, 6, 9], "run_sync_in_worker_thread": 5, "less": 5, "complic": 5, "altern": 5, "occur": 5, "within": 5, "thei": [5, 10, 11], "though": 5, "put": 5, "unbound": 5, "queue": 5, "singl": 5, "begin": [5, 10], "yet": [5, 6], "progress": 5, "repeat": 5, "growth": 5, "ignor": [5, 10, 11], "doesn": 5, "knowledg": 5, "notify_stor": 5, "page": [5, 8], "send": [5, 10], "beyond": 5, "automat": [5, 6], "extend": [2, 3, 5, 6, 10, 11], "partial": 5, "readdirtoken": [3, 5, 10], "off_t": 5, "next_id": [5, 10], "respons": [5, 10], "each": [5, 10], "receiv": [5, 6, 10], "64": 5, "bit": [2, 5, 9], "identifi": [3, 5, 10], "posit": [5, 10], "back": 5, "later": 5, "robust": 5, "presenc": 5, "creation": 5, "again": [5, 6, 10], "suppli": [5, 11], "lowlevel": 5, "current_trio_token": 5, "subclass": [2, 3, 6], "variou": [2, 6], "given": [6, 10], "tutori": 6, "done": 6, "charact": [6, 10], "etc": 6, "byte": [2, 3, 6, 10, 11], "strongli": 6, "applic": 6, "make": 6, "track": 6, "known": [6, 10], "whose": 6, "defer": [6, 7, 10], "thu": 6, "achiev": 6, "dynam": 6, "recycl": 6, "everi": [6, 10], "determin": [6, 10, 11], "affect": 6, "descript": 6, "decreas": [6, 10], "layer": 6, "basic": 6, "advantag": 6, "specif": [6, 10], "acquir": 6, "respect": 6, "place": 6, "concurr": 6, "serial": 6, "multithread": 6, "chapter": 7, "your": 7, "mnt": 7, "follow": [7, 9, 11], "file_on": 7, "w": 7, "fh1": 7, "flush": [7, 10], "fh2": 7, "bar": 7, "dup": 7, "fileno": 7, "foobar": 7, "re": [7, 10, 11], "probabl": 7, "did": 7, "mistak": 7, "instal": [2, 8], "structur": 8, "util": 8, "common": 8, "gotcha": 8, "changelog": 8, "index": [8, 10], "search": [2, 8], "build": [2, 9], "9": 9, "newer": 9, "librari": [9, 11], "header": 9, "typic": [9, 10], "libfuse3": 9, "devel": 9, "packag": 9, "7": [2, 9], "setuptool": [2, 9], "pkg": 9, "config": 9, "tool": 9, "compil": 9, "unpack": 9, "http": 9, "build_ext": 9, "inplac": 9, "extens": 9, "pytest": 9, "ask": 9, "wide": 9, "sudo": 9, "local": [9, 10], "unstabl": 9, "effort": 9, "requir": [2, 9, 10], "28": [], "sphinx": [2, 9], "build_cython": 9, "build_sphinx": [], "directli": 10, "jump": 10, "further": 10, "caus": 10, "being": 10, "deriv": 10, "overwrit": 10, "just": 10, "noth": 10, "supports_dot_lookup": 10, "share": 10, "nf": 10, "individu": 10, "enable_acl": 10, "acl": 10, "enforc": 10, "xattr": 10, "userspac": 10, "sync": [10, 11], "inherit": 10, "node": 10, "abl": 10, "interpret": 10, "represent": [10, 11], "implicitli": 10, "turn": [10, 11], "inodet": 3, "modet": 3, "boolean": 10, "get_sup_group": [10, 11], "filenamet": 3, "flagt": 3, "tupl": 10, "form": 10, "fi": 10, "newli": 10, "success": 10, "filehandlet": 3, "filehandl": 10, "prior": 10, "whenev": 10, "descriptor": 10, "duplic": 10, "sequenc": 10, "reduc": 10, "reach": 10, "care": 10, "non": [10, 11], "sinc": 10, "client": 10, "fsync": 10, "datasync": 10, "contrast": [10, 11], "metadata": 10, "fsyncdir": 10, "context": 10, "getxattr": [10, 11], "new_parent_inod": 10, "listxattr": 10, "object": 10, "either": 10, "neg": 10, "matter": 10, "possibli": 10, "special": 10, "regular": 10, "neither": 10, "bitwis": 10, "describ": 10, "manpag": 10, "o_excl": 10, "o_noctti": 10, "configur": 10, "releasedir": 10, "exactli": 10, "eof": 10, "rest": 10, "substitut": 10, "cycl": 10, "futur": 10, "parent_inode_old": 10, "parent_inode_new": 10, "alreadi": 10, "overwritten": 10, "let": 10, "inode_mov": 10, "inode_deref": 10, "potenti": [10, 11], "previou": 10, "cours": 10, "direcori": 10, "succe": 10, "hard": 10, "conveni": 10, "ambigiouti": 10, "undefin": 10, "addition": 10, "base": 10, "unchang": 10, "stacktrac": 10, "fuse_stacktrac": 10, "stack": 10, "trace": 10, "quit": 10, "statist": 10, "appropri": 10, "fill": 10, "symbolink": 10, "due": [2, 10], "written": 10, "necessarili": 11, "translat": 11, "namespac": 11, "surrog": 11, "freebsd": 11, "platform": 11, "standard": 11, "size_t": 11, "size_guess": 11, "128": 11, "u": 11, "know": 11, "approxim": 11, "guess": 11, "wrong": 11, "three": 11, "third": 11, "final": 11, "gil": 11, "escap": 11, "cf": 11, "pep": 11, "383": 11, "supplementari": 11, "group": 11, "rel": 11, "expens": 11, "proc": 11, "statu": 11, "34": 2, "pyproject": 2, "toml": 2, "overflow": 2, "32": 2, "arch": 2, "47": 2, "shutil": 2, "extern": 2, "catch": 2, "63": 2, "comput": 2, "pip": 2, "6": 2, "recent": 2, "earlier": 1, "13": 2, "mypi": 2, "move": 2, "_pyfuse3": 2, "wrapper": 2, "xattrnamet": [2, 3], "marker": 2, "drop": 2, "71": 2, "tell": 2, "callback": 2, "80": 2, "similar": 2, "16": 2, "misc": 2, "repres": 3, "embed": 3, "invoc": 3, "rst": 9, "newtyp": 10, "new_typ": 10}, "objects": {"": [[8, 0, 0, "-", "pyfuse3"]], "pyfuse3": [[3, 1, 1, "", "ENOATTR"], [3, 2, 1, "", "EntryAttributes"], [3, 4, 1, "", "FUSEError"], [3, 2, 1, "", "FileHandleT"], [3, 2, 1, "", "FileInfo"], [3, 2, 1, "", "FileNameT"], [3, 2, 1, "", "FlagT"], [3, 2, 1, "", "InodeT"], [3, 2, 1, "", "ModeT"], [10, 2, 1, "", "Operations"], [3, 1, 1, "", "RENAME_EXCHANGE"], [3, 1, 1, "", "RENAME_NOREPLACE"], [3, 1, 1, "", "ROOT_INODE"], [3, 2, 1, "", "ReaddirToken"], [3, 2, 1, "", "RequestContext"], [3, 2, 1, "", "SetattrFields"], [3, 2, 1, "", "StatvfsData"], [3, 2, 1, "", "XAttrNameT"], [5, 6, 1, "", "close"], [3, 1, 1, "", "default_options"], [11, 6, 1, "", "get_sup_groups"], [11, 6, 1, "", "getxattr"], [5, 6, 1, "", "init"], [5, 6, 1, "", "invalidate_entry"], [5, 6, 1, "", "invalidate_entry_async"], [5, 6, 1, "", "invalidate_inode"], [11, 6, 1, "", "listdir"], [5, 6, 1, "", "main"], [5, 6, 1, "", "notify_store"], [5, 6, 1, "", "readdir_reply"], [11, 6, 1, "", "setxattr"], [11, 6, 1, "", "syncfs"], [5, 6, 1, "", "terminate"], [5, 1, 1, "", "trio_token"]], "pyfuse3.EntryAttributes": [[3, 3, 1, "", "attr_timeout"], [3, 3, 1, "", "entry_timeout"], [3, 3, 1, "", "generation"], [3, 3, 1, "", "st_atime_ns"], [3, 3, 1, "", "st_blksize"], [3, 3, 1, "", "st_blocks"], [3, 3, 1, "", "st_ctime_ns"], [3, 3, 1, "", "st_gid"], [3, 3, 1, "", "st_ino"], [3, 3, 1, "", "st_mode"], [3, 3, 1, "", "st_mtime_ns"], [3, 3, 1, "", "st_nlink"], [3, 3, 1, "", "st_rdev"], [3, 3, 1, "", "st_size"], [3, 3, 1, "", "st_uid"]], "pyfuse3.FileInfo": [[3, 3, 1, "", "direct_io"], [3, 3, 1, "", "fh"], [3, 3, 1, "", "keep_cache"], [3, 3, 1, "", "nonseekable"]], "pyfuse3.Operations": [[10, 5, 1, "", "access"], [10, 5, 1, "", "create"], [10, 5, 1, "", "flush"], [10, 5, 1, "", "forget"], [10, 5, 1, "", "fsync"], [10, 5, 1, "", "fsyncdir"], [10, 5, 1, "", "getattr"], [10, 5, 1, "", "getxattr"], [10, 5, 1, "", "init"], [10, 5, 1, "", "link"], [10, 5, 1, "", "listxattr"], [10, 5, 1, "", "lookup"], [10, 5, 1, "", "mkdir"], [10, 5, 1, "", "mknod"], [10, 5, 1, "", "open"], [10, 5, 1, "", "opendir"], [10, 5, 1, "", "read"], [10, 5, 1, "", "readdir"], [10, 5, 1, "", "readlink"], [10, 5, 1, "", "release"], [10, 5, 1, "", "releasedir"], [10, 5, 1, "", "removexattr"], [10, 5, 1, "", "rename"], [10, 5, 1, "", "rmdir"], [10, 5, 1, "", "setattr"], [10, 5, 1, "", "setxattr"], [10, 5, 1, "", "stacktrace"], [10, 5, 1, "", "statfs"], [10, 5, 1, "", "symlink"], [10, 5, 1, "", "unlink"], [10, 5, 1, "", "write"]], "pyfuse3.RequestContext": [[3, 3, 1, "", "gid"], [3, 3, 1, "", "pid"], [3, 3, 1, "", "uid"], [3, 3, 1, "", "umask"]], "pyfuse3.SetattrFields": [[3, 3, 1, "", "update_atime"], [3, 3, 1, "", "update_gid"], [3, 3, 1, "", "update_mode"], [3, 3, 1, "", "update_mtime"], [3, 3, 1, "", "update_size"], [3, 3, 1, "", "update_uid"]], "pyfuse3.StatvfsData": [[3, 3, 1, "", "f_bavail"], [3, 3, 1, "", "f_bfree"], [3, 3, 1, "", "f_blocks"], [3, 3, 1, "", "f_bsize"], [3, 3, 1, "", "f_favail"], [3, 3, 1, "", "f_ffree"], [3, 3, 1, "", "f_files"], [3, 3, 1, "", "f_frsize"], [3, 3, 1, "", "f_namemax"]]}, "objtypes": {"0": "py:module", "1": "py:data", "2": "py:class", "3": "py:attribute", "4": "py:exception", "5": "py:method", "6": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "data", "Python data"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"], "5": ["py", "method", "Python method"], "6": ["py", "function", "Python function"]}, "titleterms": {"about": 0, "get": [0, 6], "help": 0, "develop": [0, 9], "statu": 0, "contribut": 0, "asyncio": 1, "support": 1, "changelog": 2, "releas": [2, 9], "3": 2, "2": 2, "2022": 2, "09": 2, "28": 2, "1": 2, "2021": 2, "17": 2, "0": 2, "2020": 2, "12": 2, "30": 2, "10": 2, "06": 2, "05": 2, "31": 2, "08": 2, "2019": 2, "07": 2, "02": 2, "2018": 2, "22": 2, "11": 2, "9": 2, "27": 2, "data": 3, "structur": 3, "exampl": 4, "file": 4, "system": 4, "singl": 4, "read": 4, "onli": 4, "In": 4, "memori": 4, "passthrough": 4, "overlai": 4, "fuse": [5, 6], "api": 5, "function": [5, 11], "gener": 6, "inform": 6, "start": 6, "lookup": 6, "count": 6, "vf": 6, "lock": 6, "common": 7, "gotcha": 7, "remov": 7, "inod": 7, "unlink": 7, "handler": [7, 10], "pyfuse3": 8, "document": 8, "tabl": 8, "content": 8, "indic": 8, "instal": 9, "depend": 9, "stabl": 9, "version": 9, "request": 10, "util": 11, "2023": 2, "4": 2, "2024": 2}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"About": [[0, "about"]], "Getting Help": [[0, "getting-help"]], "Development Status": [[0, "development-status"]], "Contributing": [[0, "contributing"]], "asyncio Support": [[1, "asyncio-support"]], "Changelog": [[2, "changelog"]], "Release 3.4.0 (2024-08-28)": [[2, "release-3-4-0-2024-08-28"]], "Release 3.3.0 (2023-08-06)": [[2, "release-3-3-0-2023-08-06"]], "Release 3.2.3 (2023-05-09)": [[2, "release-3-2-3-2023-05-09"]], "Release 3.2.2 (2022-09-28)": [[2, "release-3-2-2-2022-09-28"]], "Release 3.2.1 (2021-09-17)": [[2, "release-3-2-1-2021-09-17"]], "Release 3.2.0 (2020-12-30)": [[2, "release-3-2-0-2020-12-30"]], "Release 3.1.1 (2020-10-06)": [[2, "release-3-1-1-2020-10-06"]], "Release 3.1.0 (2020-05-31)": [[2, "release-3-1-0-2020-05-31"]], "Release 3.0.0 (2020-05-08)": [[2, "release-3-0-0-2020-05-08"]], "Release 2.0.0": [[2, "release-2-0-0"]], "Release 1.3.1 (2019-07-17)": [[2, "release-1-3-1-2019-07-17"]], "Release 1.3 (2019-06-02)": [[2, "release-1-3-2019-06-02"]], "Release 1.2 (2018-12-22)": [[2, "release-1-2-2018-12-22"]], "Release 1.1 (2018-11-02)": [[2, "release-1-1-2018-11-02"]], "Release 1.0 (2018-10-08)": [[2, "release-1-0-2018-10-08"]], "Release 0.9 (2018-09-27)": [[2, "release-0-9-2018-09-27"]], "Example File Systems": [[4, "example-file-systems"]], "Single-file, Read-only File System": [[4, "single-file-read-only-file-system"]], "In-memory File System": [[4, "in-memory-file-system"]], "Passthrough / Overlay File System": [[4, "passthrough-overlay-file-system"]], "General Information": [[6, "general-information"]], "Getting started": [[6, "getting-started"]], "Lookup Counts": [[6, "lookup-counts"]], "FUSE and VFS Locking": [[6, "fuse-and-vfs-locking"]], "Common Gotchas": [[7, "common-gotchas"]], "Removing inodes in unlink handler": [[7, "removing-inodes-in-unlink-handler"]], "pyfuse3 Documentation": [[8, "pyfuse3-documentation"]], "Table of Contents": [[8, "module-pyfuse3"]], "Indices and tables": [[8, "indices-and-tables"]], "Installation": [[9, "installation"]], "Dependencies": [[9, "dependencies"]], "Stable releases": [[9, "stable-releases"]], "Development Version": [[9, "development-version"]], "Request Handlers": [[10, "request-handlers"]], "Data Structures": [[3, "data-structures"]], "FUSE API Functions": [[5, "fuse-api-functions"]], "Utility Functions": [[11, "utility-functions"]]}, "indexentries": {"enoattr (in module pyfuse3)": [[3, "pyfuse3.ENOATTR"]], "entryattributes (class in pyfuse3)": [[3, "pyfuse3.EntryAttributes"]], "fuseerror": [[3, "pyfuse3.FUSEError"]], "filehandlet (class in pyfuse3)": [[3, "pyfuse3.FileHandleT"]], "fileinfo (class in pyfuse3)": [[3, "pyfuse3.FileInfo"]], "filenamet (class in pyfuse3)": [[3, "pyfuse3.FileNameT"]], "flagt (class in pyfuse3)": [[3, "pyfuse3.FlagT"]], "inodet (class in pyfuse3)": [[3, "pyfuse3.InodeT"]], "modet (class in pyfuse3)": [[3, "pyfuse3.ModeT"]], "rename_exchange (in module pyfuse3)": [[3, "pyfuse3.RENAME_EXCHANGE"]], "rename_noreplace (in module pyfuse3)": [[3, "pyfuse3.RENAME_NOREPLACE"]], "root_inode (in module pyfuse3)": [[3, "pyfuse3.ROOT_INODE"]], "readdirtoken (class in pyfuse3)": [[3, "pyfuse3.ReaddirToken"]], "requestcontext (class in pyfuse3)": [[3, "pyfuse3.RequestContext"]], "setattrfields (class in pyfuse3)": [[3, "pyfuse3.SetattrFields"]], "statvfsdata (class in pyfuse3)": [[3, "pyfuse3.StatvfsData"]], "xattrnamet (class in pyfuse3)": [[3, "pyfuse3.XAttrNameT"]], "attr_timeout (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.attr_timeout"]], "default_options (in module pyfuse3)": [[3, "pyfuse3.default_options"]], "direct_io (pyfuse3.fileinfo attribute)": [[3, "pyfuse3.FileInfo.direct_io"]], "entry_timeout (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.entry_timeout"]], "f_bavail (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_bavail"]], "f_bfree (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_bfree"]], "f_blocks (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_blocks"]], "f_bsize (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_bsize"]], "f_favail (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_favail"]], "f_ffree (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_ffree"]], "f_files (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_files"]], "f_frsize (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_frsize"]], "f_namemax (pyfuse3.statvfsdata attribute)": [[3, "pyfuse3.StatvfsData.f_namemax"]], "fh (pyfuse3.fileinfo attribute)": [[3, "pyfuse3.FileInfo.fh"]], "generation (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.generation"]], "gid (pyfuse3.requestcontext attribute)": [[3, "pyfuse3.RequestContext.gid"]], "keep_cache (pyfuse3.fileinfo attribute)": [[3, "pyfuse3.FileInfo.keep_cache"]], "nonseekable (pyfuse3.fileinfo attribute)": [[3, "pyfuse3.FileInfo.nonseekable"]], "pid (pyfuse3.requestcontext attribute)": [[3, "pyfuse3.RequestContext.pid"]], "st_atime_ns (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_atime_ns"]], "st_blksize (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_blksize"]], "st_blocks (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_blocks"]], "st_ctime_ns (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_ctime_ns"]], "st_gid (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_gid"]], "st_ino (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_ino"]], "st_mode (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_mode"]], "st_mtime_ns (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_mtime_ns"]], "st_nlink (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_nlink"]], "st_rdev (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_rdev"]], "st_size (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_size"]], "st_uid (pyfuse3.entryattributes attribute)": [[3, "pyfuse3.EntryAttributes.st_uid"]], "uid (pyfuse3.requestcontext attribute)": [[3, "pyfuse3.RequestContext.uid"]], "umask (pyfuse3.requestcontext attribute)": [[3, "pyfuse3.RequestContext.umask"]], "update_atime (pyfuse3.setattrfields attribute)": [[3, "pyfuse3.SetattrFields.update_atime"]], "update_gid (pyfuse3.setattrfields attribute)": [[3, "pyfuse3.SetattrFields.update_gid"]], "update_mode (pyfuse3.setattrfields attribute)": [[3, "pyfuse3.SetattrFields.update_mode"]], "update_mtime (pyfuse3.setattrfields attribute)": [[3, "pyfuse3.SetattrFields.update_mtime"]], "update_size (pyfuse3.setattrfields attribute)": [[3, "pyfuse3.SetattrFields.update_size"]], "update_uid (pyfuse3.setattrfields attribute)": [[3, "pyfuse3.SetattrFields.update_uid"]], "close() (in module pyfuse3)": [[5, "pyfuse3.close"]], "init() (in module pyfuse3)": [[5, "pyfuse3.init"]], "invalidate_entry() (in module pyfuse3)": [[5, "pyfuse3.invalidate_entry"]], "invalidate_entry_async() (in module pyfuse3)": [[5, "pyfuse3.invalidate_entry_async"]], "invalidate_inode() (in module pyfuse3)": [[5, "pyfuse3.invalidate_inode"]], "main() (in module pyfuse3)": [[5, "pyfuse3.main"]], "notify_store() (in module pyfuse3)": [[5, "pyfuse3.notify_store"]], "readdir_reply() (in module pyfuse3)": [[5, "pyfuse3.readdir_reply"]], "terminate() (in module pyfuse3)": [[5, "pyfuse3.terminate"]], "trio_token (in module pyfuse3)": [[5, "pyfuse3.trio_token"]], "module": [[8, "module-pyfuse3"]], "pyfuse3": [[8, "module-pyfuse3"]], "get_sup_groups() (in module pyfuse3)": [[11, "pyfuse3.get_sup_groups"]], "getxattr() (in module pyfuse3)": [[11, "pyfuse3.getxattr"]], "listdir() (in module pyfuse3)": [[11, "pyfuse3.listdir"]], "setxattr() (in module pyfuse3)": [[11, "pyfuse3.setxattr"]], "syncfs() (in module pyfuse3)": [[11, "pyfuse3.syncfs"]]}})pyfuse3-3.4.0/doc/html/util.html0000644000175000017500000003114714663711065016465 0ustar useruser00000000000000 Utility Functions — pyfuse3 3.4.0 documentation

Utility Functions

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.

pyfuse3.setxattr(path, name, value, namespace='user')

Set extended attribute

path and name have to be of type str. In Python 3.x, they may contain surrogates. value has to be of type bytes.

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.

In contrast to the os.setxattr function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems.

pyfuse3.getxattr(path, name, size_t size_guess=128, namespace=u'user')

Get extended attribute

path and name have to be of type str. In Python 3.x, they may contain surrogates. Returns a value of type bytes.

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).

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.

In contrast to the os.getxattr function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems.

pyfuse3.listdir(path)

Like os.listdir, but releases the GIL.

This function returns an iterator over the directory entries in path.

The returned values are of type str. Surrogate escape coding (cf. PEP 383) is used for directory names that do not have a string representation.

pyfuse3.get_sup_groups(pid)

Return supplementary group ids of pid

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.

Returns a set.

pyfuse3.syncfs(path)

Sync filesystem mounted at path

This is a Python interface to the syncfs(2) system call. There is no particular relation to libfuse, it is provided by pyfuse3 as a convience.

pyfuse3-3.4.0/examples/0000755000175000017500000000000014663711152014716 5ustar useruser00000000000000pyfuse3-3.4.0/examples/hello.py0000755000175000017500000001210314663705673016406 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' hello.py - Example file system for pyfuse3. This program presents a static file system containing a single file. Copyright © 2015 Nikolaus Rath Copyright © 2015 Gerion Entrup. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) from argparse import ArgumentParser import stat import logging import errno import pyfuse3 import trio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger(__name__) class TestFs(pyfuse3.Operations): def __init__(self): super(TestFs, self).__init__() self.hello_name = b"message" self.hello_inode = pyfuse3.ROOT_INODE+1 self.hello_data = b"hello world\n" async def getattr(self, inode, ctx=None): entry = pyfuse3.EntryAttributes() if inode == pyfuse3.ROOT_INODE: entry.st_mode = (stat.S_IFDIR | 0o755) entry.st_size = 0 elif inode == self.hello_inode: entry.st_mode = (stat.S_IFREG | 0o644) entry.st_size = len(self.hello_data) else: raise pyfuse3.FUSEError(errno.ENOENT) stamp = int(1438467123.985654 * 1e9) entry.st_atime_ns = stamp entry.st_ctime_ns = stamp entry.st_mtime_ns = stamp entry.st_gid = os.getgid() entry.st_uid = os.getuid() entry.st_ino = inode return entry async def lookup(self, parent_inode, name, ctx=None): if parent_inode != pyfuse3.ROOT_INODE or name != self.hello_name: raise pyfuse3.FUSEError(errno.ENOENT) return await self.getattr(self.hello_inode) async def opendir(self, inode, ctx): if inode != pyfuse3.ROOT_INODE: raise pyfuse3.FUSEError(errno.ENOENT) return inode async def readdir(self, fh, start_id, token): assert fh == pyfuse3.ROOT_INODE # only one entry if start_id == 0: pyfuse3.readdir_reply( token, self.hello_name, await self.getattr(self.hello_inode), 1) return async def open(self, inode, flags, ctx): if inode != self.hello_inode: raise pyfuse3.FUSEError(errno.ENOENT) if flags & os.O_RDWR or flags & os.O_WRONLY: raise pyfuse3.FUSEError(errno.EACCES) return pyfuse3.FileInfo(fh=inode) async def read(self, fh, off, size): assert fh == self.hello_inode return self.hello_data[off:off+size] def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() def main(): options = parse_args() init_logging(options.debug) testfs = TestFs() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=hello') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(testfs, options.mountpoint, fuse_options) try: trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise pyfuse3.close() if __name__ == '__main__': main() pyfuse3-3.4.0/examples/hello_asyncio.py0000755000175000017500000001302714663705673020141 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' hello_asyncio.py - Example file system for pyfuse3 using asyncio. This program presents a static file system containing a single file. Copyright © 2015 Nikolaus Rath Copyright © 2015 Gerion Entrup. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) from argparse import ArgumentParser import asyncio import stat import logging import errno import pyfuse3 import pyfuse3.asyncio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger(__name__) pyfuse3.asyncio.enable() class TestFs(pyfuse3.Operations): def __init__(self): super(TestFs, self).__init__() self.hello_name = b"message" self.hello_inode = pyfuse3.ROOT_INODE+1 self.hello_data = b"hello world\n" async def getattr(self, inode, ctx=None): entry = pyfuse3.EntryAttributes() if inode == pyfuse3.ROOT_INODE: entry.st_mode = (stat.S_IFDIR | 0o755) entry.st_size = 0 elif inode == self.hello_inode: entry.st_mode = (stat.S_IFREG | 0o644) entry.st_size = len(self.hello_data) else: raise pyfuse3.FUSEError(errno.ENOENT) stamp = int(1438467123.985654 * 1e9) entry.st_atime_ns = stamp entry.st_ctime_ns = stamp entry.st_mtime_ns = stamp entry.st_gid = os.getgid() entry.st_uid = os.getuid() entry.st_ino = inode return entry async def lookup(self, parent_inode, name, ctx=None): if parent_inode != pyfuse3.ROOT_INODE or name != self.hello_name: raise pyfuse3.FUSEError(errno.ENOENT) return await self.getattr(self.hello_inode) async def opendir(self, inode, ctx): if inode != pyfuse3.ROOT_INODE: raise pyfuse3.FUSEError(errno.ENOENT) return inode async def readdir(self, fh, start_id, token): assert fh == pyfuse3.ROOT_INODE # only one entry if start_id == 0: pyfuse3.readdir_reply( token, self.hello_name, await self.getattr(self.hello_inode), 1) return async def setxattr(self, inode, name, value, ctx): if inode != pyfuse3.ROOT_INODE or name != b'command': raise pyfuse3.FUSEError(errno.ENOTSUP) if value == b'terminate': pyfuse3.terminate() else: raise pyfuse3.FUSEError(errno.EINVAL) async def open(self, inode, flags, ctx): if inode != self.hello_inode: raise pyfuse3.FUSEError(errno.ENOENT) if flags & os.O_RDWR or flags & os.O_WRONLY: raise pyfuse3.FUSEError(errno.EACCES) return pyfuse3.FileInfo(fh=inode) async def read(self, fh, off, size): assert fh == self.hello_inode return self.hello_data[off:off+size] def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() def main(): options = parse_args() init_logging(options.debug) testfs = TestFs() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=hello_asyncio') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(testfs, options.mountpoint, fuse_options) loop = asyncio.get_event_loop() try: loop.run_until_complete(pyfuse3.main()) except: pyfuse3.close(unmount=False) raise finally: loop.close() pyfuse3.close() if __name__ == '__main__': main() pyfuse3-3.4.0/examples/passthroughfs.py0000755000175000017500000004152614663705673020216 0ustar useruser00000000000000#!/usr/bin/env python3 ''' passthroughfs.py - Example file system for pyfuse3 This file system mirrors the contents of a specified directory tree. Caveats: * Inode generation numbers are not passed through but set to zero. * Block size (st_blksize) and number of allocated blocks (st_blocks) are not passed through. * Performance for large directories is not good, because the directory is always read completely. * There may be a way to break-out of the directory tree. * The readdir implementation is not fully POSIX compliant. If a directory contains hardlinks and is modified during a readdir call, readdir() may return some of the hardlinked files twice or omit them completely. * If you delete or rename files in the underlying file system, the passthrough file system will get confused. Copyright © Nikolaus Rath Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) import pyfuse3 from argparse import ArgumentParser import errno import logging import stat as stat_m from pyfuse3 import FUSEError from os import fsencode, fsdecode from collections import defaultdict import trio import faulthandler faulthandler.enable() log = logging.getLogger(__name__) class Operations(pyfuse3.Operations): enable_writeback_cache = True def __init__(self, source): super().__init__() self._inode_path_map = { pyfuse3.ROOT_INODE: source } self._lookup_cnt = defaultdict(lambda : 0) self._fd_inode_map = dict() self._inode_fd_map = dict() self._fd_open_count = dict() def _inode_to_path(self, inode): try: val = self._inode_path_map[inode] except KeyError: raise FUSEError(errno.ENOENT) if isinstance(val, set): # In case of hardlinks, pick any path val = next(iter(val)) return val def _add_path(self, inode, path): log.debug('_add_path for %d, %s', inode, path) self._lookup_cnt[inode] += 1 # With hardlinks, one inode may map to multiple paths. if inode not in self._inode_path_map: self._inode_path_map[inode] = path return val = self._inode_path_map[inode] if isinstance(val, set): val.add(path) elif val != path: self._inode_path_map[inode] = { path, val } async def forget(self, inode_list): for (inode, nlookup) in inode_list: if self._lookup_cnt[inode] > nlookup: self._lookup_cnt[inode] -= nlookup continue log.debug('forgetting about inode %d', inode) assert inode not in self._inode_fd_map del self._lookup_cnt[inode] try: del self._inode_path_map[inode] except KeyError: # may have been deleted pass async def lookup(self, inode_p, name, ctx=None): name = fsdecode(name) log.debug('lookup for %s in %d', name, inode_p) path = os.path.join(self._inode_to_path(inode_p), name) attr = self._getattr(path=path) if name != '.' and name != '..': self._add_path(attr.st_ino, path) return attr async def getattr(self, inode, ctx=None): if inode in self._inode_fd_map: return self._getattr(fd=self._inode_fd_map[inode]) else: return self._getattr(path=self._inode_to_path(inode)) def _getattr(self, path=None, fd=None): assert fd is None or path is None assert not(fd is None and path is None) try: if fd is None: stat = os.lstat(path) else: stat = os.fstat(fd) except OSError as exc: raise FUSEError(exc.errno) entry = pyfuse3.EntryAttributes() for attr in ('st_ino', 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', 'st_size', 'st_atime_ns', 'st_mtime_ns', 'st_ctime_ns'): setattr(entry, attr, getattr(stat, attr)) entry.generation = 0 entry.entry_timeout = 0 entry.attr_timeout = 0 entry.st_blksize = 512 entry.st_blocks = ((entry.st_size+entry.st_blksize-1) // entry.st_blksize) return entry async def readlink(self, inode, ctx): path = self._inode_to_path(inode) try: target = os.readlink(path) except OSError as exc: raise FUSEError(exc.errno) return fsencode(target) async def opendir(self, inode, ctx): return inode async def readdir(self, inode, off, token): path = self._inode_to_path(inode) log.debug('reading %s', path) entries = [] for name in os.listdir(path): if name == '.' or name == '..': continue attr = self._getattr(path=os.path.join(path, name)) entries.append((attr.st_ino, name, attr)) log.debug('read %d entries, starting at %d', len(entries), off) # This is not fully posix compatible. If there are hardlinks # (two names with the same inode), we don't have a unique # offset to start in between them. Note that we cannot simply # count entries, because then we would skip over entries # (or return them more than once) if the number of directory # entries changes between two calls to readdir(). for (ino, name, attr) in sorted(entries): if ino <= off: continue if not pyfuse3.readdir_reply( token, fsencode(name), attr, ino): break self._add_path(attr.st_ino, os.path.join(path, name)) async def unlink(self, inode_p, name, ctx): name = fsdecode(name) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: inode = os.lstat(path).st_ino os.unlink(path) except OSError as exc: raise FUSEError(exc.errno) if inode in self._lookup_cnt: self._forget_path(inode, path) async def rmdir(self, inode_p, name, ctx): name = fsdecode(name) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: inode = os.lstat(path).st_ino os.rmdir(path) except OSError as exc: raise FUSEError(exc.errno) if inode in self._lookup_cnt: self._forget_path(inode, path) def _forget_path(self, inode, path): log.debug('forget %s for %d', path, inode) val = self._inode_path_map[inode] if isinstance(val, set): val.remove(path) if len(val) == 1: self._inode_path_map[inode] = next(iter(val)) else: del self._inode_path_map[inode] async def symlink(self, inode_p, name, target, ctx): name = fsdecode(name) target = fsdecode(target) parent = self._inode_to_path(inode_p) path = os.path.join(parent, name) try: os.symlink(target, path) os.chown(path, ctx.uid, ctx.gid, follow_symlinks=False) except OSError as exc: raise FUSEError(exc.errno) stat = os.lstat(path) self._add_path(stat.st_ino, path) return await self.getattr(stat.st_ino) async def rename(self, inode_p_old, name_old, inode_p_new, name_new, flags, ctx): if flags != 0: raise FUSEError(errno.EINVAL) name_old = fsdecode(name_old) name_new = fsdecode(name_new) parent_old = self._inode_to_path(inode_p_old) parent_new = self._inode_to_path(inode_p_new) path_old = os.path.join(parent_old, name_old) path_new = os.path.join(parent_new, name_new) try: os.rename(path_old, path_new) inode = os.lstat(path_new).st_ino except OSError as exc: raise FUSEError(exc.errno) if inode not in self._lookup_cnt: return val = self._inode_path_map[inode] if isinstance(val, set): assert len(val) > 1 val.add(path_new) val.remove(path_old) else: assert val == path_old self._inode_path_map[inode] = path_new async def link(self, inode, new_inode_p, new_name, ctx): new_name = fsdecode(new_name) parent = self._inode_to_path(new_inode_p) path = os.path.join(parent, new_name) try: os.link(self._inode_to_path(inode), path, follow_symlinks=False) except OSError as exc: raise FUSEError(exc.errno) self._add_path(inode, path) return await self.getattr(inode) async def setattr(self, inode, attr, fields, fh, ctx): # We use the f* functions if possible so that we can handle # a setattr() call for an inode without associated directory # handle. if fh is None: path_or_fh = self._inode_to_path(inode) truncate = os.truncate chmod = os.chmod chown = os.chown stat = os.lstat else: path_or_fh = fh truncate = os.ftruncate chmod = os.fchmod chown = os.fchown stat = os.fstat try: if fields.update_size: truncate(path_or_fh, attr.st_size) if fields.update_mode: # Under Linux, chmod always resolves symlinks so we should # actually never get a setattr() request for a symbolic # link. assert not stat_m.S_ISLNK(attr.st_mode) chmod(path_or_fh, stat_m.S_IMODE(attr.st_mode)) if fields.update_uid: chown(path_or_fh, attr.st_uid, -1, follow_symlinks=False) if fields.update_gid: chown(path_or_fh, -1, attr.st_gid, follow_symlinks=False) if fields.update_atime and fields.update_mtime: if fh is None: os.utime(path_or_fh, None, follow_symlinks=False, ns=(attr.st_atime_ns, attr.st_mtime_ns)) else: os.utime(path_or_fh, None, ns=(attr.st_atime_ns, attr.st_mtime_ns)) elif fields.update_atime or fields.update_mtime: # We can only set both values, so we first need to retrieve the # one that we shouldn't be changing. oldstat = stat(path_or_fh) if not fields.update_atime: attr.st_atime_ns = oldstat.st_atime_ns else: attr.st_mtime_ns = oldstat.st_mtime_ns if fh is None: os.utime(path_or_fh, None, follow_symlinks=False, ns=(attr.st_atime_ns, attr.st_mtime_ns)) else: os.utime(path_or_fh, None, ns=(attr.st_atime_ns, attr.st_mtime_ns)) except OSError as exc: raise FUSEError(exc.errno) return await self.getattr(inode) async def mknod(self, inode_p, name, mode, rdev, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: os.mknod(path, mode=(mode & ~ctx.umask), device=rdev) os.chown(path, ctx.uid, ctx.gid) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(path=path) self._add_path(attr.st_ino, path) return attr async def mkdir(self, inode_p, name, mode, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: os.mkdir(path, mode=(mode & ~ctx.umask)) os.chown(path, ctx.uid, ctx.gid) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(path=path) self._add_path(attr.st_ino, path) return attr async def statfs(self, ctx): root = self._inode_path_map[pyfuse3.ROOT_INODE] stat_ = pyfuse3.StatvfsData() try: statfs = os.statvfs(root) except OSError as exc: raise FUSEError(exc.errno) for attr in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', 'f_bavail', 'f_files', 'f_ffree', 'f_favail'): setattr(stat_, attr, getattr(statfs, attr)) stat_.f_namemax = statfs.f_namemax - (len(root)+1) return stat_ async def open(self, inode, flags, ctx): if inode in self._inode_fd_map: fd = self._inode_fd_map[inode] self._fd_open_count[fd] += 1 return pyfuse3.FileInfo(fh=fd) assert flags & os.O_CREAT == 0 try: fd = os.open(self._inode_to_path(inode), flags) except OSError as exc: raise FUSEError(exc.errno) self._inode_fd_map[inode] = fd self._fd_inode_map[fd] = inode self._fd_open_count[fd] = 1 return pyfuse3.FileInfo(fh=fd) async def create(self, inode_p, name, mode, flags, ctx): path = os.path.join(self._inode_to_path(inode_p), fsdecode(name)) try: fd = os.open(path, flags | os.O_CREAT | os.O_TRUNC) except OSError as exc: raise FUSEError(exc.errno) attr = self._getattr(fd=fd) self._add_path(attr.st_ino, path) self._inode_fd_map[attr.st_ino] = fd self._fd_inode_map[fd] = attr.st_ino self._fd_open_count[fd] = 1 return (pyfuse3.FileInfo(fh=fd), attr) async def read(self, fd, offset, length): os.lseek(fd, offset, os.SEEK_SET) return os.read(fd, length) async def write(self, fd, offset, buf): os.lseek(fd, offset, os.SEEK_SET) return os.write(fd, buf) async def release(self, fd): if self._fd_open_count[fd] > 1: self._fd_open_count[fd] -= 1 return del self._fd_open_count[fd] inode = self._fd_inode_map[fd] del self._inode_fd_map[inode] del self._fd_inode_map[fd] try: os.close(fd) except OSError as exc: raise FUSEError(exc.errno) def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(args): '''Parse command line''' parser = ArgumentParser() parser.add_argument('source', type=str, help='Directory tree to mirror') parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args(args) def main(): options = parse_args(sys.argv[1:]) init_logging(options.debug) operations = Operations(options.source) log.debug('Mounting...') fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=passthroughfs') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(operations, options.mountpoint, fuse_options) try: log.debug('Entering main loop..') trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise log.debug('Unmounting..') pyfuse3.close() if __name__ == '__main__': main() pyfuse3-3.4.0/examples/tmpfs.py0000755000175000017500000004051714663705673016446 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' tmpfs.py - Example file system for pyfuse3. This file system stores all data in memory. Copyright © 2013 Nikolaus Rath Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' import os import sys # If we are running from the pyfuse3 source directory, try # to load the module from there first. basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, os.path.join(basedir, 'src')) import pyfuse3 import errno import stat from time import time import sqlite3 import logging from collections import defaultdict from pyfuse3 import FUSEError from argparse import ArgumentParser import trio try: import faulthandler except ImportError: pass else: faulthandler.enable() log = logging.getLogger() class Operations(pyfuse3.Operations): '''An example filesystem that stores all data in memory This is a very simple implementation with terrible performance. Don't try to store significant amounts of data. Also, there are some other flaws that have not been fixed to keep the code easier to understand: * atime, mtime and ctime are not updated * generation numbers are not supported * lookup counts are not maintained ''' enable_writeback_cache = True def __init__(self): super(Operations, self).__init__() self.db = sqlite3.connect(':memory:') self.db.text_factory = str self.db.row_factory = sqlite3.Row self.cursor = self.db.cursor() self.inode_open_count = defaultdict(int) self.init_tables() def init_tables(self): '''Initialize file system tables''' self.cursor.execute(""" CREATE TABLE inodes ( id INTEGER PRIMARY KEY, uid INT NOT NULL, gid INT NOT NULL, mode INT NOT NULL, mtime_ns INT NOT NULL, atime_ns INT NOT NULL, ctime_ns INT NOT NULL, target BLOB(256) , size INT NOT NULL DEFAULT 0, rdev INT NOT NULL DEFAULT 0, data BLOB ) """) self.cursor.execute(""" CREATE TABLE contents ( rowid INTEGER PRIMARY KEY AUTOINCREMENT, name BLOB(256) NOT NULL, inode INT NOT NULL REFERENCES inodes(id), parent_inode INT NOT NULL REFERENCES inodes(id), UNIQUE (name, parent_inode) )""") # Insert root directory now_ns = int(time() * 1e9) self.cursor.execute("INSERT INTO inodes (id,mode,uid,gid,mtime_ns,atime_ns,ctime_ns) " "VALUES (?,?,?,?,?,?,?)", (pyfuse3.ROOT_INODE, stat.S_IFDIR | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH, os.getuid(), os.getgid(), now_ns, now_ns, now_ns)) self.cursor.execute("INSERT INTO contents (name, parent_inode, inode) VALUES (?,?,?)", (b'..', pyfuse3.ROOT_INODE, pyfuse3.ROOT_INODE)) def get_row(self, *a, **kw): self.cursor.execute(*a, **kw) try: row = next(self.cursor) except StopIteration: raise NoSuchRowError() try: next(self.cursor) except StopIteration: pass else: raise NoUniqueValueError() return row async def lookup(self, inode_p, name, ctx=None): if name == '.': inode = inode_p elif name == '..': inode = self.get_row("SELECT * FROM contents WHERE inode=?", (inode_p,))['parent_inode'] else: try: inode = self.get_row("SELECT * FROM contents WHERE name=? AND parent_inode=?", (name, inode_p))['inode'] except NoSuchRowError: raise(pyfuse3.FUSEError(errno.ENOENT)) return await self.getattr(inode, ctx) async def getattr(self, inode, ctx=None): try: row = self.get_row("SELECT * FROM inodes WHERE id=?", (inode,)) except NoSuchRowError: raise(pyfuse3.FUSEError(errno.ENOENT)) entry = pyfuse3.EntryAttributes() entry.st_ino = inode entry.generation = 0 entry.entry_timeout = 300 entry.attr_timeout = 300 entry.st_mode = row['mode'] entry.st_nlink = self.get_row("SELECT COUNT(inode) FROM contents WHERE inode=?", (inode,))[0] entry.st_uid = row['uid'] entry.st_gid = row['gid'] entry.st_rdev = row['rdev'] entry.st_size = row['size'] entry.st_blksize = 512 entry.st_blocks = 1 entry.st_atime_ns = row['atime_ns'] entry.st_mtime_ns = row['mtime_ns'] entry.st_ctime_ns = row['ctime_ns'] return entry async def readlink(self, inode, ctx): return self.get_row('SELECT * FROM inodes WHERE id=?', (inode,))['target'] async def opendir(self, inode, ctx): return inode async def readdir(self, inode, off, token): if off == 0: off = -1 cursor2 = self.db.cursor() cursor2.execute("SELECT * FROM contents WHERE parent_inode=? " 'AND rowid > ? ORDER BY rowid', (inode, off)) for row in cursor2: pyfuse3.readdir_reply( token, row['name'], await self.getattr(row['inode']), row['rowid']) async def unlink(self, inode_p, name,ctx): entry = await self.lookup(inode_p, name) if stat.S_ISDIR(entry.st_mode): raise pyfuse3.FUSEError(errno.EISDIR) self._remove(inode_p, name, entry) async def rmdir(self, inode_p, name, ctx): entry = await self.lookup(inode_p, name) if not stat.S_ISDIR(entry.st_mode): raise pyfuse3.FUSEError(errno.ENOTDIR) self._remove(inode_p, name, entry) def _remove(self, inode_p, name, entry): if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?", (entry.st_ino,))[0] > 0: raise pyfuse3.FUSEError(errno.ENOTEMPTY) self.cursor.execute("DELETE FROM contents WHERE name=? AND parent_inode=?", (name, inode_p)) if entry.st_nlink == 1 and entry.st_ino not in self.inode_open_count: self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry.st_ino,)) async def symlink(self, inode_p, name, target, ctx): mode = (stat.S_IFLNK | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) return await self._create(inode_p, name, mode, ctx, target=target) async def rename(self, inode_p_old, name_old, inode_p_new, name_new, flags, ctx): if flags != 0: raise FUSEError(errno.EINVAL) entry_old = await self.lookup(inode_p_old, name_old) try: entry_new = await self.lookup(inode_p_new, name_new) except pyfuse3.FUSEError as exc: if exc.errno != errno.ENOENT: raise target_exists = False else: target_exists = True if target_exists: self._replace(inode_p_old, name_old, inode_p_new, name_new, entry_old, entry_new) else: self.cursor.execute("UPDATE contents SET name=?, parent_inode=? WHERE name=? " "AND parent_inode=?", (name_new, inode_p_new, name_old, inode_p_old)) def _replace(self, inode_p_old, name_old, inode_p_new, name_new, entry_old, entry_new): if self.get_row("SELECT COUNT(inode) FROM contents WHERE parent_inode=?", (entry_new.st_ino,))[0] > 0: raise pyfuse3.FUSEError(errno.ENOTEMPTY) self.cursor.execute("UPDATE contents SET inode=? WHERE name=? AND parent_inode=?", (entry_old.st_ino, name_new, inode_p_new)) self.db.execute('DELETE FROM contents WHERE name=? AND parent_inode=?', (name_old, inode_p_old)) if entry_new.st_nlink == 1 and entry_new.st_ino not in self.inode_open_count: self.cursor.execute("DELETE FROM inodes WHERE id=?", (entry_new.st_ino,)) async def link(self, inode, new_inode_p, new_name, ctx): entry_p = await self.getattr(new_inode_p) if entry_p.st_nlink == 0: log.warning('Attempted to create entry %s with unlinked parent %d', new_name, new_inode_p) raise FUSEError(errno.EINVAL) self.cursor.execute("INSERT INTO contents (name, inode, parent_inode) VALUES(?,?,?)", (new_name, inode, new_inode_p)) return await self.getattr(inode) async def setattr(self, inode, attr, fields, fh, ctx): if fields.update_size: data = self.get_row('SELECT data FROM inodes WHERE id=?', (inode,))[0] if data is None: data = b'' if len(data) < attr.st_size: data = data + b'\0' * (attr.st_size - len(data)) else: data = data[:attr.st_size] self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?', (memoryview(data), attr.st_size, inode)) if fields.update_mode: self.cursor.execute('UPDATE inodes SET mode=? WHERE id=?', (attr.st_mode, inode)) if fields.update_uid: self.cursor.execute('UPDATE inodes SET uid=? WHERE id=?', (attr.st_uid, inode)) if fields.update_gid: self.cursor.execute('UPDATE inodes SET gid=? WHERE id=?', (attr.st_gid, inode)) if fields.update_atime: self.cursor.execute('UPDATE inodes SET atime_ns=? WHERE id=?', (attr.st_atime_ns, inode)) if fields.update_mtime: self.cursor.execute('UPDATE inodes SET mtime_ns=? WHERE id=?', (attr.st_mtime_ns, inode)) if fields.update_ctime: self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?', (attr.st_ctime_ns, inode)) else: self.cursor.execute('UPDATE inodes SET ctime_ns=? WHERE id=?', (int(time()*1e9), inode)) return await self.getattr(inode) async def mknod(self, inode_p, name, mode, rdev, ctx): return await self._create(inode_p, name, mode, ctx, rdev=rdev) async def mkdir(self, inode_p, name, mode, ctx): return await self._create(inode_p, name, mode, ctx) async def statfs(self, ctx): stat_ = pyfuse3.StatvfsData() stat_.f_bsize = 512 stat_.f_frsize = 512 size = self.get_row('SELECT SUM(size) FROM inodes')[0] stat_.f_blocks = size // stat_.f_frsize stat_.f_bfree = max(size // stat_.f_frsize, 1024) stat_.f_bavail = stat_.f_bfree inodes = self.get_row('SELECT COUNT(id) FROM inodes')[0] stat_.f_files = inodes stat_.f_ffree = max(inodes , 100) stat_.f_favail = stat_.f_ffree return stat_ async def open(self, inode, flags, ctx): # Yeah, unused arguments #pylint: disable=W0613 self.inode_open_count[inode] += 1 # Use inodes as a file handles return pyfuse3.FileInfo(fh=inode) async def access(self, inode, mode, ctx): # Yeah, could be a function and has unused arguments #pylint: disable=R0201,W0613 return True async def create(self, inode_parent, name, mode, flags, ctx): #pylint: disable=W0612 entry = await self._create(inode_parent, name, mode, ctx) self.inode_open_count[entry.st_ino] += 1 return (pyfuse3.FileInfo(fh=entry.st_ino), entry) async def _create(self, inode_p, name, mode, ctx, rdev=0, target=None): if (await self.getattr(inode_p)).st_nlink == 0: log.warning('Attempted to create entry %s with unlinked parent %d', name, inode_p) raise FUSEError(errno.EINVAL) now_ns = int(time() * 1e9) self.cursor.execute('INSERT INTO inodes (uid, gid, mode, mtime_ns, atime_ns, ' 'ctime_ns, target, rdev) VALUES(?, ?, ?, ?, ?, ?, ?, ?)', (ctx.uid, ctx.gid, mode, now_ns, now_ns, now_ns, target, rdev)) inode = self.cursor.lastrowid self.db.execute("INSERT INTO contents(name, inode, parent_inode) VALUES(?,?,?)", (name, inode, inode_p)) return await self.getattr(inode) async def read(self, fh, offset, length): data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0] if data is None: data = b'' return data[offset:offset+length] async def write(self, fh, offset, buf): data = self.get_row('SELECT data FROM inodes WHERE id=?', (fh,))[0] if data is None: data = b'' data = data[:offset] + buf + data[offset+len(buf):] self.cursor.execute('UPDATE inodes SET data=?, size=? WHERE id=?', (memoryview(data), len(data), fh)) return len(buf) async def release(self, fh): self.inode_open_count[fh] -= 1 if self.inode_open_count[fh] == 0: del self.inode_open_count[fh] if (await self.getattr(fh)).st_nlink == 0: self.cursor.execute("DELETE FROM inodes WHERE id=?", (fh,)) class NoUniqueValueError(Exception): def __str__(self): return 'Query generated more than 1 result row' class NoSuchRowError(Exception): def __str__(self): return 'Query produced 0 result rows' def init_logging(debug=False): formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(threadName)s: ' '[%(name)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger = logging.getLogger() if debug: handler.setLevel(logging.DEBUG) root_logger.setLevel(logging.DEBUG) else: handler.setLevel(logging.INFO) root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) def parse_args(): '''Parse command line''' parser = ArgumentParser() parser.add_argument('mountpoint', type=str, help='Where to mount the file system') parser.add_argument('--debug', action='store_true', default=False, help='Enable debugging output') parser.add_argument('--debug-fuse', action='store_true', default=False, help='Enable FUSE debugging output') return parser.parse_args() if __name__ == '__main__': options = parse_args() init_logging(options.debug) operations = Operations() fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=tmpfs') fuse_options.discard('default_permissions') if options.debug_fuse: fuse_options.add('debug') pyfuse3.init(operations, options.mountpoint, fuse_options) try: trio.run(pyfuse3.main) except: pyfuse3.close(unmount=False) raise pyfuse3.close() pyfuse3-3.4.0/pyproject.toml0000644000175000017500000000036214663705673016030 0ustar useruser00000000000000[build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [tool.mypy] mypy_path = ["$MYPY_CONFIG_FILE_DIR/src"] packages = ["pyfuse3"] modules = ["_pyfuse3", "pyfuse3_asyncio"] namespace_packages = false strict = true pyfuse3-3.4.0/rst/0000755000175000017500000000000014663711152013710 5ustar useruser00000000000000pyfuse3-3.4.0/rst/_static/0000755000175000017500000000000014663711152015336 5ustar useruser00000000000000pyfuse3-3.4.0/rst/_static/.placeholder0000644000175000017500000000000014245446437017616 0ustar useruser00000000000000pyfuse3-3.4.0/rst/_templates/0000755000175000017500000000000014663711152016045 5ustar useruser00000000000000pyfuse3-3.4.0/rst/_templates/localtoc.html0000644000175000017500000000013514245446437020541 0ustar useruser00000000000000

{{ _('Table Of Contents') }}

{{ toctree() }} pyfuse3-3.4.0/rst/about.rst0000644000175000017500000000012014245446437015554 0ustar useruser00000000000000======= About ======= .. include:: ../README.rst :start-after: start-intro pyfuse3-3.4.0/rst/asyncio.rst0000644000175000017500000000101614663705673016120 0ustar useruser00000000000000.. _asyncio: ================= asyncio Support ================= By default, pyfuse3 uses asynchronous I/O using Trio_ (and most of the documentation assumes that you are using Trio). If you'd rather use asyncio, import the *pyfuse3.asyncio* module (*pyfuse3_asyncio* in 3.3.0 and earlier) and call its *enable()* function before using *pyfuse3*. For example:: import pyfuse3 import pyfuse3.asyncio pyfuse3.asyncio.enable() # Use pyfuse3 as usual from here on. .. _Trio: https://github.com/python-trio/trio pyfuse3-3.4.0/rst/changes.rst0000644000175000017500000000003414245446437016056 0ustar useruser00000000000000.. include:: ../Changes.rst pyfuse3-3.4.0/rst/conf.py0000644000175000017500000001631214663705776015231 0ustar useruser00000000000000# -*- coding: utf-8 -*- # # pyfuse3 documentation build configuration file, created by # sphinx-quickstart on Sat Oct 16 14:14:40 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. import os, sys basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) # we need util/ so the sphinx_cython extension is found: sys.path.insert(0, os.path.join(basedir, 'util')) # we need src/ also, it is needed so llfuse can be imported to generate api docs: sys.path.insert(0, os.path.join(basedir, 'src')) #pylint: disable-all #@PydevCodeAnalysisIgnore # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx_cython'] # Link to Python standard library intersphinx_mapping = {'python': ('https://docs.python.org/3/', None), 'trio': ('https://trio.readthedocs.io/en/stable/', None),} # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' autodoc_docstring_signature = True # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # Warn about unresolved references nitpicky = True # General information about the project. project = u'pyfuse3' copyright = u'2010-2024, Nikolaus Rath' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '3.4.0' # The full version, including alpha/beta/rc tags. release = version + '' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. default_role = 'py:obj' primary_domain = 'py' # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' #pygments_style = 'colorful' highlight_language = 'python' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] def setup(app): # Mangle NewTypes re-exported from pyfuse3._pyfuse3 so they appear to # come from their canonical location at the top of the package import pyfuse3 for name in ('FileHandleT', 'FileNameT', 'FlagT', 'InodeT', 'ModeT', 'XAttrNameT'): getattr(pyfuse3, name).__module__ = 'pyfuse3' # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. html_use_modindex = False # If false, no index is generated. html_use_index = True # If true, the index is split into individual pages for each letter. html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = False # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'pyfuse3doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'pyfuse3.tex', u'pyfuse3 Documentation', u'Nikolaus Rath', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True pyfuse3-3.4.0/rst/data.rst0000644000175000017500000001133114663705673015365 0ustar useruser00000000000000================= Data Structures ================= .. currentmodule:: pyfuse3 .. py:data:: ENOATTR This errorcode is unfortunately missing in the `errno` module, so it is provided by pyfuse3 instead. .. py:data:: ROOT_INODE The inode of the root directory, i.e. the mount point of the file system. .. py:data:: RENAME_EXCHANGE A flag that may be passed to the `~Operations.rename` handler. When passed, the handler must atomically exchange the two paths (which must both exist). .. py:data:: RENAME_NOREPLACE A flag that may be passed to the `~Operations.rename` handler. When passed, the handler must not replace an existing target. .. py:data:: default_options This is a recommended set of options that should be passed to `pyfuse3.init` to get reasonable behavior and performance. pyfuse3 is compatible with any other combination of options as well, but you should only deviate from the defaults with good reason. (The :samp:`fsname=` option is guaranteed never to be included in the default options, so you can always safely add it to the set). The default options are: * ``default_permissions`` enables permission checking by kernel. Without this any umask (or uid/gid) would not have an effect. .. autoexception:: FUSEError .. autoclass currently doesn't work for NewTypes .. https://github.com/sphinx-doc/sphinx/issues/11552 .. class:: FileHandleT A subclass of `int`, representing an integer file handle produced by a `~Operations.create`, `~Operations.open`, or `~Operations.opendir` call. .. class:: FileNameT A subclass of `bytes`, representing a file name, with no embedded zero-bytes (``\0``). .. class:: FlagT A subclass of `int`, representing flags modifying the behavior of an operation. .. class:: InodeT A subclass of `int`, representing an inode number. .. class:: ModeT A subclass of `int`, representing a file mode. .. class:: XAttrNameT A subclass of `bytes`, representing an extended attribute name, with no embedded zero-bytes (``\0``). .. autoclass:: RequestContext .. attribute:: pid .. attribute:: uid .. attribute:: gid .. attribute:: umask .. autoclass:: StatvfsData .. attribute:: f_bsize .. attribute:: f_frsize .. attribute:: f_blocks .. attribute:: f_bfree .. attribute:: f_bavail .. attribute:: f_files .. attribute:: f_ffree .. attribute:: f_favail .. attribute:: f_namemax .. autoclass:: EntryAttributes .. autoattribute:: st_ino .. autoattribute:: generation .. autoattribute:: entry_timeout .. autoattribute:: attr_timeout .. autoattribute:: st_mode .. autoattribute:: st_nlink .. autoattribute:: st_uid .. autoattribute:: st_gid .. autoattribute:: st_rdev .. autoattribute:: st_size .. autoattribute:: st_blksize .. autoattribute:: st_blocks .. autoattribute:: st_atime_ns .. autoattribute:: st_ctime_ns .. autoattribute:: st_mtime_ns .. autoclass:: FileInfo .. autoattribute:: fh This attribute must be set to the file handle to be returned from `Operations.open`. .. autoattribute:: direct_io If true, signals to the kernel that this file should not be cached or buffered. .. autoattribute:: keep_cache If true, signals to the kernel that previously cached data for this inode is still valid, and should not be invalidated. .. autoattribute:: nonseekable If true, indicates that the file does not support seeking. .. autoclass:: SetattrFields .. attribute:: update_atime If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_atime_ns` field contains an updated value. .. attribute:: update_mtime If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_mtime_ns` field contains an updated value. .. attribute:: update_mode If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_mode` field contains an updated value. .. attribute:: update_uid If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_uid` field contains an updated value. .. attribute:: update_gid If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_gid` field contains an updated value. .. attribute:: update_size If this attribute is true, it signals the `Operations.setattr` method that the `~EntryAttributes.st_size` field contains an updated value. .. autoclass:: ReaddirToken An identifier for a particular `~Operations.readdir` invocation. pyfuse3-3.4.0/rst/example.rst0000644000175000017500000000145114245446437016105 0ustar useruser00000000000000.. _example file system: ====================== Example File Systems ====================== pyfuse3 comes with several example file systems in the :file:`examples` directory of the release tarball. For completeness, these examples are also included here. Single-file, Read-only File System ================================== (shipped as :file:`examples/lltest.py`) .. literalinclude:: ../examples/hello.py :linenos: :language: python In-memory File System ===================== (shipped as :file:`examples/tmpfs.py`) .. literalinclude:: ../examples/tmpfs.py :linenos: :language: python Passthrough / Overlay File System ================================= (shipped as :file:`examples/passthroughfs.py`) .. literalinclude:: ../examples/passthroughfs.py :linenos: :language: python pyfuse3-3.4.0/rst/fuse_api.rst0000644000175000017500000000110114663705673016241 0ustar useruser00000000000000==================== FUSE API Functions ==================== .. currentmodule:: pyfuse3 .. autofunction:: init .. autofunction:: main .. autofunction:: terminate .. autofunction:: close .. autofunction:: invalidate_inode .. autofunction:: invalidate_entry .. autofunction:: invalidate_entry_async .. autofunction:: notify_store .. autofunction:: readdir_reply .. py:data:: trio_token Set to the value returned by `trio.lowlevel.current_trio_token` while `main` is running. Can be used by other threads to run code in the main loop through `trio.from_thread.run`. pyfuse3-3.4.0/rst/general.rst0000644000175000017500000000717614245446437016101 0ustar useruser00000000000000===================== General Information ===================== .. currentmodule:: pyfuse3 .. _getting_started: Getting started =============== A file system is implemented by subclassing the `pyfuse3.Operations` class and implementing the various request handlers. The handlers respond to requests received from the FUSE kernel module and perform functions like looking up the inode given a file name, looking up attributes of an inode, opening a (file) inode for reading or writing or listing the contents of a (directory) inode. By default, pyfuse3 uses asynchronous I/O using Trio_, and most of the documentation assumes that you are using Trio. If you'd rather use asyncio, take a look at :ref:`asyncio Support `. If you would like to use Trio (which is recommended) but you have not yet used Trio before, please read the `Trio tutorial`_ first. An instance of the operations class is passed to `pyfuse3.init` to mount the file system. To enter the request handling loop, run `pyfuse3.main` in a trio event loop. This function will return when the file system should be unmounted again, which is done by calling `pyfuse3.close`. All character data (directory entry names, extended attribute names and values, symbolic link targets etc) are passed as `bytes` and must be returned as `bytes`. For easier debugging, it is strongly recommended that applications using pyfuse3 also make use of the faulthandler_ module. .. _faulthandler: http://docs.python.org/3/library/faulthandler.html .. _Trio tutorial: https://trio.readthedocs.io/en/latest/tutorial.html .. _Trio: https://github.com/python-trio/trio Lookup Counts ============= Most file systems need to keep track which inodes are currently known to the kernel. This is, for example, necessary to correctly implement the *unlink* system call: when unlinking a directory entry whose associated inode is currently opened, the file system must defer removal of the inode (and thus the file contents) until it is no longer in use by any process. FUSE file systems achieve this by using "lookup counts". A lookup count is a number that's associated with an inode. An inode with a lookup count of zero is currently not known to the kernel. This means that if there are no directory entries referring to such an inode it can be safely removed, or (if a file system implements dynamic inode numbers), the inode number can be safely recycled. The lookup count of an inode is increased by every operation that could make the inode "known" to the kernel. This includes e.g. `~Operations.lookup`, `~Operations.create` and `~Operations.readdir` (to determine if a given request handler affects the lookup count, please refer to its description in the `Operations` class). The lookup count is decreased by calls to the `~Operations.forget` handler. FUSE and VFS Locking ==================== FUSE and the kernel's VFS layer provide some basic locking that FUSE file systems automatically take advantage of. Specifically: * Calls to `~Operations.rename`, `~Operations.create`, `~Operations.symlink`, `~Operations.mknod`, `~Operations.link` and `~Operations.mkdir` acquire a write-lock on the inode of the directory in which the respective operation takes place (two in case of rename). * Calls to `~Operations.lookup` acquire a read-lock on the inode of the parent directory (meaning that lookups in the same directory may run concurrently, but never at the same time as e.g. a rename or mkdir operation). * Unless writeback caching is enabled, calls to `~Operations.write` for the same inode are automatically serialized (i.e., there are never concurrent calls for the same inode even when multithreading is enabled). pyfuse3-3.4.0/rst/gotchas.rst0000644000175000017500000000154514245446437016106 0ustar useruser00000000000000================ Common Gotchas ================ .. currentmodule:: pyfuse3 This chapter lists some common gotchas that should be avoided. Removing inodes in unlink handler ================================= If your file system is mounted at :file:`mnt`, the following code should complete without errors:: with open('mnt/file_one', 'w+') as fh1: fh1.write('foo') fh1.flush() with open('mnt/file_one', 'a') as fh2: os.unlink('mnt/file_one') assert 'file_one' not in os.listdir('mnt') fh2.write('bar') os.close(os.dup(fh1.fileno())) fh1.seek(0) assert fh1.read() == 'foobar' If you're getting an error, then you probably did a mistake when implementing the `~Operations.unlink` handler and are removing the file contents when you should be deferring removal to the `~Operations.forget` handler. pyfuse3-3.4.0/rst/index.rst0000644000175000017500000000062714245446437015565 0ustar useruser00000000000000============================= pyfuse3 Documentation ============================= Table of Contents ----------------- .. module:: pyfuse3 .. toctree:: :maxdepth: 1 about.rst install.rst general.rst asyncio.rst fuse_api.rst data.rst operations.rst util.rst gotchas.rst example.rst changes.rst Indices and tables ------------------ * :ref:`genindex` * :ref:`search` pyfuse3-3.4.0/rst/install.rst0000644000175000017500000000424514663705673016130 0ustar useruser00000000000000============== Installation ============== .. highlight:: sh Dependencies ============ In order to build and run pyfuse3 you need the following software: * Linux kernel 3.9 or newer. * Version 3.3.0 or newer of the libfuse_ library, including development headers (typically distributions provide them in a *libfuse3-devel* or *libfuse3-dev* package). * Python_ 3.8 or newer installed with development headers * The Trio_ Python module, version 0.7 or newer. * The `setuptools`_ Python module, version 1.0 or newer. * the `pkg-config`_ tool * the `attr`_ library * A C compiler (only for building) To run the unit tests, you will need * The `py.test`_ Python module, version 3.3.0 or newer Stable releases =============== To install a stable pyfuse3 release: 1. Download and unpack the release tarball from https://pypi.python.org/pypi/pyfuse3/ 2. Run ``python3 setup.py build_ext --inplace`` to build the C extension 3. Run ``python3 -m pytest test/`` to run a self-test. If this fails, ask for help on the `FUSE mailing list`_ or report a bug in the `issue tracker `_. 4. To install system-wide for all users, run ``sudo python setup.py install``. To install into :file:`~/.local`, run ``python3 setup.py install --user``. Development Version =================== If you have checked out the unstable development version, a bit more effort is required. You need to also have Cython_ (0.29 or newer) and Sphinx_ installed, and the necessary commands are:: python3 setup.py build_cython python3 setup.py build_ext --inplace python3 -m pytest test/ sphinx-build -b html rst doc/html python3 setup.py install .. _Cython: http://www.cython.org/ .. _Sphinx: http://sphinx.pocoo.org/ .. _Python: http://www.python.org/ .. _Trio: https://github.com/python-trio/trio .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel .. _`py.test`: https://pypi.python.org/pypi/pytest/ .. _libfuse: http://github.com/libfuse/libfuse .. _attr: http://savannah.nongnu.org/projects/attr/ .. _`pkg-config`: http://www.freedesktop.org/wiki/Software/pkg-config .. _setuptools: https://pypi.python.org/pypi/setuptools pyfuse3-3.4.0/rst/operations.rst0000644000175000017500000000235114245446437016635 0ustar useruser00000000000000================== Request Handlers ================== (You can use the :ref:`genindex` to directly jump to a specific handler). .. currentmodule:: pyfuse3 .. autoclass:: Operations :members: .. attribute:: supports_dot_lookup = True If set, indicates that the filesystem supports lookup of the ``.`` and ``..`` entries. This is required if the file system will be shared over NFS. .. attribute:: enable_writeback_cache = True Enables write-caching in the kernel if available. This means that individual write request may be buffered and merged in the kernel before they are send to the filesystem. .. attribute:: enable_acl = False Enable ACL support. When enabled, the kernel will cache and have responsibility for enforcing ACLs. ACL will be stored as xattrs and passed to userspace, which is responsible for updating the ACLs in the filesystem, keeping the file mode in sync with the ACL, and ensuring inheritance of default ACLs when new filesystem nodes are created. Note that this requires that the file system is able to parse and interpret the xattr representation of ACLs. Enabling this feature implicitly turns on the ``default_permissions`` option. pyfuse3-3.4.0/rst/util.rst0000644000175000017500000000062714245446437015433 0ustar useruser00000000000000==================== Utility Functions ==================== 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. .. currentmodule:: pyfuse3 .. autofunction:: setxattr .. autofunction:: getxattr .. autofunction:: listdir .. autofunction:: get_sup_groups .. autofunction:: syncfs pyfuse3-3.4.0/setup.cfg0000644000175000017500000000013614663711152014721 0ustar useruser00000000000000[sdist] formats = gztar [flake8] max-line-length = 80 [egg_info] tag_build = tag_date = 0 pyfuse3-3.4.0/setup.py0000755000175000017500000001773714663710003014626 0ustar useruser00000000000000#!/usr/bin/env python3 #-*- coding: us-ascii -*- ''' setup.py Installation script for pyfuse3. Copyright (c) 2010 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' import sys import os import subprocess import warnings import re # Disable Cython support in setuptools. It fails under some conditions # (http://trac.cython.org/ticket/859), and we have our own build_cython command # anyway. try: import Cython.Distutils.build_ext except ImportError: pass else: # We can't delete Cython.Distutils.build_ext directly, # because the build_ext class (that is imported from # the build_ext module in __init__.py) shadows the # build_ext module. module = sys.modules['Cython.Distutils.build_ext'] del module.build_ext import setuptools from setuptools import Extension basedir = os.path.abspath(os.path.dirname(__file__)) sys.path.insert(0, os.path.join(basedir, 'util')) # When running from Git repo, enable all warnings DEVELOPER_MODE = os.path.exists(os.path.join(basedir, 'MANIFEST.in')) if DEVELOPER_MODE: print('found MANIFEST.in, running in developer mode') warnings.resetwarnings() warnings.simplefilter('default') PYFUSE3_VERSION = '3.4.0' def main(): with open(os.path.join(basedir, 'README.rst'), 'r') as fh: long_desc = fh.read() compile_args = pkg_config('fuse3', cflags=True, ldflags=False, min_ver='3.2.0') compile_args += ['-DFUSE_USE_VERSION=32', '-Wall', '-Wextra', '-Wconversion', '-Wsign-compare', '-DPYFUSE3_VERSION="%s"' % PYFUSE3_VERSION] # We may have unused functions if we compile for older FUSE versions compile_args.append('-Wno-unused-function') # Nothing wrong with that if you know what you are doing # (which Cython does) compile_args.append('-Wno-implicit-fallthrough') # Due to platform specific conditions, these are unavoidable compile_args.append('-Wno-unused-function') compile_args.append('-Wno-unused-parameter') # Enable all fatal warnings only in developer mode. # (otherwise we break forward compatibility because compilation with newer # compiler may fail if additional warnings are added) if DEVELOPER_MODE: compile_args.append('-Werror') compile_args.append('-Wfatal-errors') # Unreachable code is expected because we need to support multiple # platforms and architectures. compile_args.append('-Wno-error=unreachable-code') # Value-changing conversions should always be explicit. compile_args.append('-Werror=conversion') # Note that (i > -1) is false if i is unsigned (-1 will be converted to # a large positive value). We certainly don't want to do this by # accident. compile_args.append('-Werror=sign-compare') link_args = pkg_config('fuse3', cflags=False, ldflags=True, min_ver='3.2.0') link_args.append('-lpthread') c_sources = ['src/pyfuse3/__init__.c'] if os.uname()[0] in ('Linux', 'GNU/kFreeBSD'): link_args.append('-lrt') elif os.uname()[0] == 'Darwin': c_sources.append('src/pyfuse3/darwin_compat.c') setuptools.setup( name='pyfuse3', zip_safe=True, version=PYFUSE3_VERSION, description='Python 3 bindings for libfuse 3 with async I/O support', long_description=long_desc, author='Nikolaus Rath', author_email='Nikolaus@rath.org', url='https://github.com/libfuse/pyfuse3', license='LGPL', classifiers=['Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: System :: Filesystems', 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', 'Operating System :: POSIX :: Linux', 'Operating System :: MacOS :: MacOS X', 'Operating System :: POSIX :: BSD :: FreeBSD', 'Typing :: Typed'], platforms=[ 'Linux', 'FreeBSD', 'OS X' ], keywords=['FUSE', 'python' ], install_requires=['trio >= 0.15'], tests_require=['pytest >= 3.4.0', 'pytest-trio'], python_requires='>=3.8', package_dir={'': 'src'}, packages=['pyfuse3'], py_modules=['_pyfuse3', 'pyfuse3_asyncio'], package_data={'pyfuse3': ['py.typed']}, provides=['pyfuse3'], ext_modules=[Extension('pyfuse3.__init__', c_sources, extra_compile_args=compile_args, extra_link_args=link_args)], cmdclass={'build_cython': build_cython}, ) def pkg_config(pkg, cflags=True, ldflags=False, min_ver=None): '''Frontend to ``pkg-config``''' if min_ver: cmd = ['pkg-config', pkg, '--atleast-version', min_ver ] if subprocess.call(cmd) != 0: cmd = ['pkg-config', '--modversion', pkg ] proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) version = proc.communicate()[0].strip() if not version: raise SystemExit(2) # pkg-config generates error message already else: raise SystemExit('%s version too old (found: %s, required: %s)' % (pkg, version, min_ver)) cmd = ['pkg-config', pkg ] if cflags: cmd.append('--cflags') if ldflags: cmd.append('--libs') proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) cflags = proc.stdout.readline().rstrip() proc.stdout.close() if proc.wait() != 0: raise SystemExit(2) # pkg-config generates error message already return cflags.decode('us-ascii').split() class build_cython(setuptools.Command): user_options = [] boolean_options = [] description = "Compile .pyx to .c" def initialize_options(self): pass def finalize_options(self): self.extensions = self.distribution.ext_modules def run(self): cython = None version = None for c in ('cython3', 'cython'): try: version = subprocess.check_output([c, '--version'], universal_newlines=True, stderr=subprocess.STDOUT) cython = c except OSError: # file not found, permission denied, ..., see issue #63 pass if cython is None: raise SystemExit('Cython needs to be installed for this command') from None print(f"Using {version.strip()}.") cmd = [cython, '-Wextra', '--force', '-3', '--fast-fail', '--directive', 'embedsignature=True', '--include-dir', os.path.join(basedir, 'Include'), '--verbose' ] if DEVELOPER_MODE: cmd.append('-Werror') # Work around http://trac.cython.org/cython_trac/ticket/714 cmd += ['-X', 'warn.maybe_uninitialized=False' ] for extension in self.extensions: for file_ in extension.sources: (file_, ext) = os.path.splitext(file_) path = os.path.join(basedir, file_) if ext != '.c': continue if os.path.exists(path + '.pyx'): if subprocess.call(cmd + [path + '.pyx']) != 0: raise SystemExit('Cython compilation failed') if __name__ == '__main__': main() pyfuse3-3.4.0/src/0000755000175000017500000000000014663711152013667 5ustar useruser00000000000000pyfuse3-3.4.0/src/_pyfuse3.py0000644000175000017500000000045214663705673016012 0ustar useruser00000000000000''' _pyfuse3.py Compatibility redirect: Pure-Python components of pyfuse3. Copyright © 2018 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' from pyfuse3 import _pyfuse3 import sys sys.modules['_pyfuse3'] = _pyfuse3 pyfuse3-3.4.0/src/pyfuse3/0000755000175000017500000000000014663711152015265 5ustar useruser00000000000000pyfuse3-3.4.0/src/pyfuse3/__init__.c0000644000175000017500001334233614663710477017220 0ustar useruser00000000000000/* Generated by Cython 3.0.11 */ #ifndef PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN #endif /* PY_SSIZE_T_CLEAN */ #if defined(CYTHON_LIMITED_API) && 0 #ifndef Py_LIMITED_API #if CYTHON_LIMITED_API+0 > 0x03030000 #define Py_LIMITED_API CYTHON_LIMITED_API #else #define Py_LIMITED_API 0x03030000 #endif #endif #endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.7+ or Python 3.3+. #else #if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API #define __PYX_EXTRA_ABI_MODULE_NAME "limited" #else #define __PYX_EXTRA_ABI_MODULE_NAME "" #endif #define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." #define CYTHON_HEX_VERSION 0x03000BF0 #define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #define __PYX_COMMA , #ifndef HAVE_LONG_LONG #define HAVE_LONG_LONG #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX #if defined(GRAALVM_PYTHON) /* For very preliminary testing purposes. Most variables are set the same as PyPy. The existence of this section does not imply that anything works or is even tested */ #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 1 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #undef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) #endif #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #undef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 #elif defined(PYPY_VERSION) #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #ifndef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #undef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) #endif #if PY_VERSION_HEX < 0x03090000 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #undef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 #elif defined(CYTHON_LIMITED_API) #ifdef Py_LIMITED_API #undef __PYX_LIMITED_VERSION_HEX #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API #endif #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 1 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_CLINE_IN_TRACEBACK #define CYTHON_CLINE_IN_TRACEBACK 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 1 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #endif #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #undef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS 1 #endif #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 1 #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #endif #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 #elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #ifndef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #ifndef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 1 #endif #ifndef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #ifndef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 1 #endif #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS 1 #endif #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #ifndef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 1 #endif #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 #endif #ifndef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 #endif #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #ifndef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #endif #ifndef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #ifndef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_GIL #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) #endif #ifndef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS 1 #endif #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #ifndef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #endif #if PY_VERSION_HEX < 0x030400a1 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #elif !defined(CYTHON_USE_TP_FINALIZE) #define CYTHON_USE_TP_FINALIZE 1 #endif #if PY_VERSION_HEX < 0x030600B1 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #elif !defined(CYTHON_USE_DICT_VERSIONS) #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) #endif #if PY_VERSION_HEX < 0x030700A3 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #elif !defined(CYTHON_USE_EXC_INFO_STACK) #define CYTHON_USE_EXC_INFO_STACK 1 #endif #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 #endif #ifndef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if !defined(CYTHON_VECTORCALL) #define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) #endif #define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) #if CYTHON_USE_PYLONG_INTERNALS #if PY_MAJOR_VERSION < 3 #include "longintrepr.h" #endif #undef SHIFT #undef BASE #undef MASK #ifdef SIZEOF_VOID_P enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif #ifndef __has_cpp_attribute #define __has_cpp_attribute(x) 0 #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED #if defined(__cplusplus) /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 * but leads to warnings with -pedantic, since it is a C++17 feature */ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) #if __has_cpp_attribute(maybe_unused) #define CYTHON_UNUSED [[maybe_unused]] #endif #endif #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_UNUSED_VAR( const T& ) { } # else # define CYTHON_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #ifndef CYTHON_USE_CPP_STD_MOVE #if defined(__cplusplus) && (\ __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) #define CYTHON_USE_CPP_STD_MOVE 1 #else #define CYTHON_USE_CPP_STD_MOVE 0 #endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifdef _MSC_VER #ifndef _MSC_STDINT_H_ #if _MSC_VER < 1300 typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #endif #endif #if _MSC_VER < 1300 #ifdef _WIN64 typedef unsigned long long __pyx_uintptr_t; #else typedef unsigned int __pyx_uintptr_t; #endif #else #ifdef _WIN64 typedef unsigned __int64 __pyx_uintptr_t; #else typedef unsigned __int32 __pyx_uintptr_t; #endif #endif #else #include typedef uintptr_t __pyx_uintptr_t; #endif #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 * but leads to warnings with -pedantic, since it is a C++17 feature */ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) #if __has_cpp_attribute(fallthrough) #define CYTHON_FALLTHROUGH [[fallthrough]] #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_cpp_attribute(clang::fallthrough) #define CYTHON_FALLTHROUGH [[clang::fallthrough]] #elif __has_cpp_attribute(gnu::fallthrough) #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] #endif #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_attribute(fallthrough) #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) #else #define CYTHON_FALLTHROUGH #endif #endif #if defined(__clang__) && defined(__apple_build_version__) #if __apple_build_version__ < 7000000 #undef CYTHON_FALLTHROUGH #define CYTHON_FALLTHROUGH #endif #endif #endif #ifdef __cplusplus template struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) #else #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) #endif #if CYTHON_COMPILING_IN_PYPY == 1 #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) #else #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) #endif #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_DefaultClassType PyClass_Type #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_DefaultClassType PyType_Type #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, PyObject *code, PyObject *c, PyObject* n, PyObject *v, PyObject *fv, PyObject *cell, PyObject* fn, PyObject *name, int fline, PyObject *lnos) { PyObject *exception_table = NULL; PyObject *types_module=NULL, *code_type=NULL, *result=NULL; #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 PyObject *version_info; PyObject *py_minor_version = NULL; #endif long minor_version = 0; PyObject *type, *value, *traceback; PyErr_Fetch(&type, &value, &traceback); #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 minor_version = 11; #else if (!(version_info = PySys_GetObject("version_info"))) goto end; if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; minor_version = PyLong_AsLong(py_minor_version); Py_DECREF(py_minor_version); if (minor_version == -1 && PyErr_Occurred()) goto end; #endif if (!(types_module = PyImport_ImportModule("types"))) goto end; if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; if (minor_version <= 7) { (void)p; result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, c, n, v, fn, name, fline, lnos, fv, cell); } else if (minor_version <= 10) { result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, c, n, v, fn, name, fline, lnos, fv, cell); } else { if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); } end: Py_XDECREF(code_type); Py_XDECREF(exception_table); Py_XDECREF(types_module); if (type) { PyErr_Restore(type, value, traceback); } return result; } #ifndef CO_OPTIMIZED #define CO_OPTIMIZED 0x0001 #endif #ifndef CO_NEWLOCALS #define CO_NEWLOCALS 0x0002 #endif #ifndef CO_VARARGS #define CO_VARARGS 0x0004 #endif #ifndef CO_VARKEYWORDS #define CO_VARKEYWORDS 0x0008 #endif #ifndef CO_ASYNC_GENERATOR #define CO_ASYNC_GENERATOR 0x0200 #endif #ifndef CO_GENERATOR #define CO_GENERATOR 0x0020 #endif #ifndef CO_COROUTINE #define CO_COROUTINE 0x0080 #endif #elif PY_VERSION_HEX >= 0x030B0000 static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, PyObject *code, PyObject *c, PyObject* n, PyObject *v, PyObject *fv, PyObject *cell, PyObject* fn, PyObject *name, int fline, PyObject *lnos) { PyCodeObject *result; PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); if (!empty_bytes) return NULL; result = #if PY_VERSION_HEX >= 0x030C0000 PyUnstable_Code_NewWithPosOnlyArgs #else PyCode_NewWithPosOnlyArgs #endif (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); Py_DECREF(empty_bytes); return result; } #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #endif #endif #if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) #else #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) #define __Pyx_Py_Is(x, y) Py_Is(x, y) #else #define __Pyx_Py_Is(x, y) ((x) == (y)) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) #else #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) #else #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) #else #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) #endif #define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) #if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) #else #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) #endif #ifndef CO_COROUTINE #define CO_COROUTINE 0x80 #endif #ifndef CO_ASYNC_GENERATOR #define CO_ASYNC_GENERATOR 0x200 #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef Py_TPFLAGS_SEQUENCE #define Py_TPFLAGS_SEQUENCE 0 #endif #ifndef Py_TPFLAGS_MAPPING #define Py_TPFLAGS_MAPPING 0 #endif #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else #if PY_VERSION_HEX >= 0x030d00A4 # define __Pyx_PyCFunctionFast PyCFunctionFast # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords #else # define __Pyx_PyCFunctionFast _PyCFunctionFast # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #endif #if CYTHON_METH_FASTCALL #define __Pyx_METH_FASTCALL METH_FASTCALL #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords #else #define __Pyx_METH_FASTCALL METH_VARARGS #define __Pyx_PyCFunction_FastCall PyCFunction #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords #endif #if CYTHON_VECTORCALL #define __pyx_vectorcallfunc vectorcallfunc #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) #elif CYTHON_BACKPORT_VECTORCALL typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames); #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) #else #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) #endif #if PY_MAJOR_VERSION >= 0x030900B1 #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) #else #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) #endif #define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) #elif !CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) #endif #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; } #endif static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { #if CYTHON_COMPILING_IN_LIMITED_API return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; #else return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; #endif } #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) #if __PYX_LIMITED_VERSION_HEX < 0x030900B1 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); #else #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) #define __Pyx_PyCMethod PyCMethod #endif #ifndef METH_METHOD #define METH_METHOD 0x200 #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyThreadState_Current PyThreadState_Get() #elif !CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x030d00A1 #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() #elif PY_VERSION_HEX >= 0x03060000 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() #elif PY_VERSION_HEX >= 0x03000000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) { void *result; result = PyModule_GetState(op); if (!result) Py_FatalError("Couldn't find the module state"); return result; } #endif #define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) #else #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) #endif #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) #include "pythread.h" #define Py_tss_NEEDS_INIT 0 typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); return 0; } static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); *key = Py_tss_NEEDS_INIT; return key; } static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { PyObject_Free(key); } static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { return *key != Py_tss_NEEDS_INIT; } static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { PyThread_delete_key(*key); *key = Py_tss_NEEDS_INIT; } static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { return PyThread_set_key_value(*key, value); } static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } #endif #if PY_MAJOR_VERSION < 3 #if CYTHON_COMPILING_IN_PYPY #if PYPY_VERSION_NUM < 0x07030600 #if defined(__cplusplus) && __cplusplus >= 201402L [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] #elif defined(__GNUC__) || defined(__clang__) __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) #elif defined(_MSC_VER) __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) #endif static CYTHON_INLINE int PyGILState_Check(void) { return 0; } #else // PYPY_VERSION_NUM < 0x07030600 #endif // PYPY_VERSION_NUM < 0x07030600 #else static CYTHON_INLINE int PyGILState_Check(void) { PyThreadState * tstate = _PyThreadState_Current; return tstate && (tstate == PyGILState_GetThisThreadState()); } #endif #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else #define __Pyx_PyDict_NewPresized(n) PyDict_New() #endif #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS #define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); if (res == NULL) PyErr_Clear(); return res; } #elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) #define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError #define __Pyx_PyDict_GetItemStr PyDict_GetItem #else static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { #if CYTHON_COMPILING_IN_PYPY return PyDict_GetItem(dict, name); #else PyDictEntry *ep; PyDictObject *mp = (PyDictObject*) dict; long hash = ((PyStringObject *) name)->ob_shash; assert(hash != -1); ep = (mp->ma_lookup)(mp, name, hash); if (ep == NULL) { return NULL; } return ep->me_value; #endif } #define __Pyx_PyDict_GetItemStr PyDict_GetItem #endif #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) #else #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) #else #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) #endif #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 #define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ PyTypeObject *type = Py_TYPE((PyObject*)obj);\ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ PyObject_GC_Del(obj);\ Py_DECREF(type);\ } #else #define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) #endif #if CYTHON_COMPILING_IN_LIMITED_API #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) #define __Pyx_PyUnicode_DATA(u) ((void*)u) #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) #elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #if PY_VERSION_HEX >= 0x030C0000 #define __Pyx_PyUnicode_READY(op) (0) #else #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #endif #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) #if PY_VERSION_HEX >= 0x030C0000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) #else #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) #else #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #endif #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY #if !defined(PyUnicode_DecodeUnicodeEscape) #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) #endif #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) #undef PyUnicode_Contains #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PySequence_ListKeepNew(obj)\ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) #else #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) #endif #if PY_VERSION_HEX >= 0x030900A4 #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) #else #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif #if CYTHON_ASSUME_SAFE_MACROS #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) #else #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) #endif #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) #else static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { PyObject *module = PyImport_AddModule(name); Py_XINCREF(module); return module; } #endif #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define __Pyx_Py3Int_Check(op) PyLong_Check(op) #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #else #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef __Pyx_PyAsyncMethodsStruct typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) #if !defined(_USE_MATH_DEFINES) #define _USE_MATH_DEFINES #endif #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_MARK_ERR_POS(f_index, lineno) \ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } #define __PYX_ERR(f_index, lineno, Ln_error) \ { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } #ifdef CYTHON_EXTERN_C #undef __PYX_EXTERN_C #define __PYX_EXTERN_C CYTHON_EXTERN_C #elif defined(__PYX_EXTERN_C) #ifdef _MSC_VER #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") #else #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. #endif #else #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE__pyfuse3 #define __PYX_HAVE_API__pyfuse3 /* Early includes */ #include "pyfuse3.h" #include #include #include #include #include #include #include #include #include #include "xattr.h" #include "gettime.h" #include #include #include #include "macros.c" #include #include #include #ifdef _OPENMP #include #endif /* _OPENMP */ #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { return (size_t) i < (size_t) limit; } #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #if CYTHON_USE_PYLONG_INTERNALS #if PY_VERSION_HEX >= 0x030C00A7 #ifndef _PyLong_SIGN_MASK #define _PyLong_SIGN_MASK 3 #endif #ifndef _PyLong_NON_SIZE_BITS #define _PyLong_NON_SIZE_BITS 3 #endif #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) #define __Pyx_PyLong_SignedDigitCount(x)\ ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) #else #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) #endif typedef Py_ssize_t __Pyx_compact_pylong; typedef size_t __Pyx_compact_upylong; #else #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) #define __Pyx_PyLong_CompactValue(x)\ ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) typedef sdigit __Pyx_compact_pylong; typedef digit __Pyx_compact_upylong; #endif #if PY_VERSION_HEX >= 0x030C00A5 #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) #else #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) #endif #endif #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII #include static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = (char) c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #include static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } #if !CYTHON_USE_MODULE_STATE static PyObject *__pyx_m = NULL; #endif static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm = __FILE__; static const char *__pyx_filename; /* #### Code section: filename_table ### */ static const char *__pyx_f[] = { "", "src/pyfuse3/handlers.pxi", "src/pyfuse3/internal.pxi", "src/pyfuse3/__init__.pyx", "type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* NoFastGil.proto */ #define __Pyx_PyGILState_Ensure PyGILState_Ensure #define __Pyx_PyGILState_Release PyGILState_Release #define __Pyx_FastGIL_Remember() #define __Pyx_FastGIL_Forget() #define __Pyx_FastGilFuncInit() /* #### Code section: numeric_typedefs ### */ /* #### Code section: complex_type_declarations ### */ /* #### Code section: type_declarations ### */ /*--- Type declarations ---*/ struct __pyx_obj_7pyfuse3__Container; struct __pyx_obj_7pyfuse3_ReaddirToken; struct __pyx_obj_7pyfuse3__WorkerData; struct __pyx_obj_7pyfuse3_RequestContext; struct __pyx_obj_7pyfuse3_SetattrFields; struct __pyx_obj_7pyfuse3_EntryAttributes; struct __pyx_obj_7pyfuse3_FileInfo; struct __pyx_obj_7pyfuse3_StatvfsData; struct __pyx_obj_7pyfuse3_FUSEError; struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async; struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable; struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop; struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main; struct __pyx_defaults; typedef struct __pyx_defaults __pyx_defaults; struct __pyx_defaults { PyObject *__pyx_arg_options; }; /* "src/pyfuse3/handlers.pxi":14 * * @cython.freelist(60) * cdef class _Container: # <<<<<<<<<<<<<< * """For internal use by pyfuse3 only.""" * */ struct __pyx_obj_7pyfuse3__Container { PyObject_HEAD dev_t rdev; struct fuse_file_info fi; fuse_ino_t ino; fuse_ino_t parent; fuse_req_t req; int flags; mode_t mode; off_t off; size_t size; struct stat stat; uint64_t fh; }; /* "src/pyfuse3/handlers.pxi":562 * * @cython.freelist(10) * cdef class ReaddirToken: # <<<<<<<<<<<<<< * cdef fuse_req_t req * cdef char *buf_start */ struct __pyx_obj_7pyfuse3_ReaddirToken { PyObject_HEAD fuse_req_t req; char *buf_start; char *buf; size_t size; }; /* "src/pyfuse3/internal.pxi":181 * return mem * * cdef class _WorkerData: # <<<<<<<<<<<<<< * """For internal use by pyfuse3 only.""" * */ struct __pyx_obj_7pyfuse3__WorkerData { PyObject_HEAD struct __pyx_vtabstruct_7pyfuse3__WorkerData *__pyx_vtab; int task_count; int task_serial; PyObject *read_lock; int active_readers; }; /* "pyfuse3/__init__.pyx":129 * * @cython.freelist(10) * cdef class RequestContext: # <<<<<<<<<<<<<< * ''' * Instances of this class are passed to some `Operations` methods to */ struct __pyx_obj_7pyfuse3_RequestContext { PyObject_HEAD uid_t uid; pid_t pid; gid_t gid; mode_t umask; }; /* "pyfuse3/__init__.pyx":146 * * @cython.freelist(10) * cdef class SetattrFields: # <<<<<<<<<<<<<< * ''' * `SetattrFields` instances are passed to the `~Operations.setattr` handler */ struct __pyx_obj_7pyfuse3_SetattrFields { PyObject_HEAD PyObject *update_atime; PyObject *update_mtime; PyObject *update_ctime; PyObject *update_mode; PyObject *update_uid; PyObject *update_gid; PyObject *update_size; }; /* "pyfuse3/__init__.pyx":174 * * @cython.freelist(30) * cdef class EntryAttributes: # <<<<<<<<<<<<<< * ''' * Instances of this class store attributes of directory entries. */ struct __pyx_obj_7pyfuse3_EntryAttributes { PyObject_HEAD struct fuse_entry_param fuse_param; struct stat *attr; }; /* "pyfuse3/__init__.pyx":354 * * @cython.freelist(10) * cdef class FileInfo: # <<<<<<<<<<<<<< * ''' * Instances of this class store options and data that `Operations.open` */ struct __pyx_obj_7pyfuse3_FileInfo { PyObject_HEAD struct __pyx_vtabstruct_7pyfuse3_FileInfo *__pyx_vtab; uint64_t fh; int direct_io; int keep_cache; int nonseekable; }; /* "pyfuse3/__init__.pyx":395 * * @cython.freelist(1) * cdef class StatvfsData: # <<<<<<<<<<<<<< * ''' * Instances of this class store information about the file system. */ struct __pyx_obj_7pyfuse3_StatvfsData { PyObject_HEAD struct statvfs stat; }; /* "pyfuse3/__init__.pyx":486 * # As of Cython 0.28.1, @cython.freelist cannot be used for * # classes that derive from a builtin type. * cdef class FUSEError(Exception): # <<<<<<<<<<<<<< * ''' * This exception may be raised by request handlers to indicate that */ struct __pyx_obj_7pyfuse3_FUSEError { PyBaseExceptionObject __pyx_base; int errno_; }; /* "src/pyfuse3/handlers.pxi":59 * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) * * async def fuse_lookup_async (_Container c, name): # <<<<<<<<<<<<<< * cdef EntryAttributes entry * cdef int ret */ struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":98 * save_retval(fuse_getattr_async(c)) * * async def fuse_getattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":127 * save_retval(fuse_setattr_async(c, fh)) * * async def fuse_setattr_async (_Container c, fh): # <<<<<<<<<<<<<< * cdef int ret * cdef timespec now */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async { PyObject_HEAD struct stat *__pyx_v_attr; struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; PyObject *__pyx_v_fh; struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_fields; struct timespec __pyx_v_now; int __pyx_v_ret; int __pyx_v_to_set; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":184 * save_retval(fuse_readlink_async(c)) * * async def fuse_readlink_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef char* name */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; char *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_v_target; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":209 * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) * * async def fuse_mknod_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":234 * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) * * async def fuse_mkdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":260 * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) * * async def fuse_unlink_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":281 * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) * * async def fuse_rmdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":304 * c, PyBytes_FromString(name), PyBytes_FromString(link))) * * async def fuse_symlink_async (_Container c, name, link): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; PyObject *__pyx_v_link; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":332 * * * async def fuse_rename_async (_Container c, name, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef unsigned flags = c.flags */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; unsigned int __pyx_v_flags; PyObject *__pyx_v_name; PyObject *__pyx_v_newname; fuse_ino_t __pyx_v_newparent; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":357 * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) * * async def fuse_link_async (_Container c, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; PyObject *__pyx_v_newname; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":381 * save_retval(fuse_open_async(c)) * * async def fuse_open_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef FileInfo fi */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_fi; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":408 * save_retval(fuse_read_async(c)) * * async def fuse_read_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef Py_buffer pybuf */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async { PyObject_HEAD PyObject *__pyx_v_buf; struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; Py_buffer __pyx_v_pybuf; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":438 * save_retval(fuse_write_async(c, pbuf)) * * async def fuse_write_async (_Container c, pbuf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; size_t __pyx_v_len_; PyObject *__pyx_v_pbuf; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":462 * save_retval(fuse_write_buf_async(c, buf)) * * async def fuse_write_buf_async (_Container c, buf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async { PyObject_HEAD PyObject *__pyx_v_buf; struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; size_t __pyx_v_len_; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":483 * save_retval(fuse_flush_async(c)) * * async def fuse_flush_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":503 * save_retval(fuse_release_async(c)) * * async def fuse_release_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":525 * save_retval(fuse_fsync_async(c)) * * async def fuse_fsync_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":546 * save_retval(fuse_opendir_async(c)) * * async def fuse_opendir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":578 * save_retval(fuse_readdirplus_async(c)) * * async def fuse_readdirplus_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ReaddirToken token = ReaddirToken() */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; int __pyx_v_ret; struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_token; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":607 * save_retval(fuse_releasedir_async(c)) * * async def fuse_releasedir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":630 * save_retval(fuse_fsyncdir_async(c)) * * async def fuse_fsyncdir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_e; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":650 * save_retval(fuse_statfs_async(c)) * * async def fuse_statfs_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef StatvfsData stats */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; int __pyx_v_ret; struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_stats; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":681 * save_retval(fuse_setxattr_async(c, name, value)) * * async def fuse_setxattr_async (_Container c, name, value): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_v_value; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; PyObject *__pyx_t_3; PyObject *__pyx_t_4; PyObject *__pyx_t_5; }; /* "src/pyfuse3/handlers.pxi":726 * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) * * async def fuse_getxattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async { PyObject_HEAD PyObject *__pyx_v_buf; struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; char *__pyx_v_cbuf; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; size_t __pyx_v_len_; Py_ssize_t __pyx_v_len_s; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":759 * save_retval(fuse_listxattr_async(c)) * * async def fuse_listxattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async { PyObject_HEAD PyObject *__pyx_v_buf; struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; char *__pyx_v_cbuf; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; size_t __pyx_v_len_; Py_ssize_t __pyx_v_len_s; PyObject *__pyx_v_res; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":797 * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) * * async def fuse_removexattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":819 * save_retval(fuse_access_async(c)) * * async def fuse_access_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef int mask = c.flags */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async { PyObject_HEAD PyObject *__pyx_v_allowed; struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; int __pyx_v_mask; int __pyx_v_ret; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/handlers.pxi":848 * save_retval(fuse_create_async(c, PyBytes_FromString(name))) * * async def fuse_create_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async { PyObject_HEAD struct __pyx_obj_7pyfuse3__Container *__pyx_v_c; PyObject *__pyx_v_ctx; PyObject *__pyx_v_e; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_entry; struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_fi; PyObject *__pyx_v_name; int __pyx_v_ret; PyObject *__pyx_v_tmp; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; }; /* "src/pyfuse3/internal.pxi":201 * cdef _WorkerData worker_data * * async def _wait_fuse_readable(): # <<<<<<<<<<<<<< * '''Wait for FUSE fd to become readable * */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable { PyObject_HEAD PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; PyObject *__pyx_t_3; PyObject *__pyx_t_4; PyObject *__pyx_t_5; PyObject *__pyx_t_6; PyObject *__pyx_t_7; PyObject *__pyx_t_8; PyObject *__pyx_t_9; PyObject *__pyx_t_10; PyObject *__pyx_t_11; }; /* "src/pyfuse3/internal.pxi":229 * return True * * @async_wrapper # <<<<<<<<<<<<<< * async def _session_loop(nursery, int min_tasks, int max_tasks): * cdef int res */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop { PyObject_HEAD struct fuse_buf __pyx_v_buf; int __pyx_v_max_tasks; int __pyx_v_min_tasks; PyObject *__pyx_v_name; PyObject *__pyx_v_nursery; int __pyx_v_res; }; /* "pyfuse3/__init__.pyx":768 * * * @async_wrapper # <<<<<<<<<<<<<< * async def main(int min_tasks=1, int max_tasks=99): * '''Run FUSE main loop''' */ struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main { PyObject_HEAD int __pyx_v_max_tasks; int __pyx_v_min_tasks; PyObject *__pyx_v_nursery; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; PyObject *__pyx_t_3; PyObject *__pyx_t_4; PyObject *__pyx_t_5; PyObject *__pyx_t_6; PyObject *__pyx_t_7; }; /* "src/pyfuse3/internal.pxi":181 * return mem * * cdef class _WorkerData: # <<<<<<<<<<<<<< * """For internal use by pyfuse3 only.""" * */ struct __pyx_vtabstruct_7pyfuse3__WorkerData { PyObject *(*get_name)(struct __pyx_obj_7pyfuse3__WorkerData *); }; static struct __pyx_vtabstruct_7pyfuse3__WorkerData *__pyx_vtabptr_7pyfuse3__WorkerData; /* "pyfuse3/__init__.pyx":354 * * @cython.freelist(10) * cdef class FileInfo: # <<<<<<<<<<<<<< * ''' * Instances of this class store options and data that `Operations.open` */ struct __pyx_vtabstruct_7pyfuse3_FileInfo { PyObject *(*_copy_to_fuse)(struct __pyx_obj_7pyfuse3_FileInfo *, struct fuse_file_info *); }; static struct __pyx_vtabstruct_7pyfuse3_FileInfo *__pyx_vtabptr_7pyfuse3_FileInfo; /* #### Code section: utility_code_proto ### */ /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, Py_ssize_t); void (*DECREF)(void*, PyObject*, Py_ssize_t); void (*GOTREF)(void*, PyObject*, Py_ssize_t); void (*GIVEREF)(void*, PyObject*, Py_ssize_t); void* (*SetupContext)(const char*, Py_ssize_t, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ } #define __Pyx_RefNannyFinishContextNogil() {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __Pyx_RefNannyFinishContext();\ PyGILState_Release(__pyx_gilstate_save);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() #endif #define __Pyx_RefNannyFinishContextNogil() {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __Pyx_RefNannyFinishContext();\ PyGILState_Release(__pyx_gilstate_save);\ } #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContextNogil() #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_Py_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; Py_XDECREF(tmp);\ } while (0) #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; #if PY_VERSION_HEX >= 0x030C00A6 #define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) #else #define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) #endif #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) #define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) #else #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #endif #else #define __Pyx_PyErr_Clear() PyErr_Clear() #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* PyObjectGetAttrStrNoError.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* TupleAndListFromArray.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); #endif /* IncludeStringH.proto */ #include /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /* UnicodeEquals.proto */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* fastcall.proto */ #if CYTHON_AVOID_BORROWED_REFS #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) #elif CYTHON_ASSUME_SAFE_MACROS #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) #else #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) #endif #if CYTHON_AVOID_BORROWED_REFS #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) #else #define __Pyx_Arg_NewRef_VARARGS(arg) arg #define __Pyx_Arg_XDECREF_VARARGS(arg) #endif #define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) #define __Pyx_KwValues_VARARGS(args, nargs) NULL #define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) #define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) #if CYTHON_METH_FASTCALL #define __Pyx_Arg_FASTCALL(args, i) args[i] #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); #else #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) #endif #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs to have the same reference counting */ #define __Pyx_Arg_XDECREF_FASTCALL(arg) #else #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) #endif #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS #define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) #else #define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) #endif /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* KeywordStringCheck.proto */ static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed); /* RaiseException.proto */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #if !CYTHON_VECTORCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); #endif #define __Pyx_BUILD_ASSERT_EXPR(cond)\ (sizeof(char [1 - 2*!(cond)]) - 1) #ifndef Py_MEMBER_SIZE #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #endif #if !CYTHON_VECTORCALL #if PY_VERSION_HEX >= 0x03080000 #include "frameobject.h" #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #define __Pxy_PyFrame_Initialize_Offsets() #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) #else static size_t __pyx_pyframe_localsplus_offset = 0; #include "frameobject.h" #define __Pxy_PyFrame_Initialize_Offsets()\ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) #define __Pyx_PyFrame_GetLocalsplus(frame)\ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) #endif #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectFastCall.proto */ #define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); /* PyObjectCallNoArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); /* PyDictVersioning.proto */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ (version_var) = __PYX_GET_DICT_VERSION(dict);\ (cache_var) = (value); #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ (VAR) = __pyx_dict_cached_value;\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ }\ } static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); #else #define __PYX_GET_DICT_VERSION(dict) (0) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); #endif /* GetModuleGlobalName.proto */ #if CYTHON_USE_DICT_VERSIONS #define __Pyx_GetModuleGlobalName(var, name) do {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } while(0) #define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ PY_UINT64_T __pyx_dict_version;\ PyObject *__pyx_dict_cached_value;\ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } while(0) static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); #else #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* ArgTypeTest.proto */ #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ __Pyx__ArgTypeTest(obj, type, name, exact)) static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); /* IncludeStructmemberH.proto */ #include /* FixUpExtensionType.proto */ #if CYTHON_USE_TYPE_SPECS static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); #endif /* FetchSharedCythonModule.proto */ static PyObject *__Pyx_FetchSharedCythonABIModule(void); /* FetchCommonType.proto */ #if !CYTHON_USE_TYPE_SPECS static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); #else static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); #endif /* GetTopmostException.proto */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); #endif /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); #else #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif /* PyObjectCall2Args.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* PyObjectGetMethod.proto */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); /* PyObjectCallMethod1.proto */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); /* CoroutineBase.proto */ struct __pyx_CoroutineObject; typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); #if CYTHON_USE_EXC_INFO_STACK #define __Pyx_ExcInfoStruct _PyErr_StackItem #else typedef struct { PyObject *exc_type; PyObject *exc_value; PyObject *exc_traceback; } __Pyx_ExcInfoStruct; #endif typedef struct __pyx_CoroutineObject { PyObject_HEAD __pyx_coroutine_body_t body; PyObject *closure; __Pyx_ExcInfoStruct gi_exc_state; PyObject *gi_weakreflist; PyObject *classobj; PyObject *yieldfrom; PyObject *gi_name; PyObject *gi_qualname; PyObject *gi_modulename; PyObject *gi_code; PyObject *gi_frame; int resume_label; char is_running; } __pyx_CoroutineObject; static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); static int __Pyx_Coroutine_clear(PyObject *self); static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); static PyObject *__Pyx_Coroutine_Close(PyObject *self); static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); #if CYTHON_USE_EXC_INFO_STACK #define __Pyx_Coroutine_SwapException(self) #define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) #else #define __Pyx_Coroutine_SwapException(self) {\ __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ } #define __Pyx_Coroutine_ResetAndClearException(self) {\ __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ } #endif #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) #else #define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) #endif static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); /* PyObject_GenericGetAttrNoDict.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr #endif /* PatchModuleWithCoroutine.proto */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); /* PatchGeneratorABC.proto */ static int __Pyx_patch_abc(void); /* Coroutine.proto */ #define __Pyx_Coroutine_USED #define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType) #define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) #define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType) #define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\ __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) static int __pyx_Coroutine_init(PyObject *module); static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); typedef struct { PyObject_HEAD PyObject *coroutine; } __pyx_CoroutineAwaitObject; static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg); static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args); /* GetAwaitIter.proto */ static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o); static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o); /* CoroutineYieldFrom.proto */ static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source); /* ExtTypeTest.proto */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* pep479.proto */ static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 L->ob_item[len] = x; #else PyList_SET_ITEM(list, len, x); #endif __Pyx_SET_SIZE(list, len + 1); return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* StringJoin.proto */ #if PY_MAJOR_VERSION < 3 #define __Pyx_PyString_Join __Pyx_PyBytes_Join #define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) #else #define __Pyx_PyString_Join PyUnicode_Join #define __Pyx_PyBaseString_Join PyUnicode_Join #endif static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* GetAttr3.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); /* RaiseUnexpectedTypeError.proto */ static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); /* PyObjectLookupSpecial.proto */ #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) #define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); #else #define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) #define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) #endif /* ReturnWithStopIteration.proto */ #define __Pyx_ReturnWithStopIteration(value)\ if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value) static void __Pyx__ReturnWithStopIteration(PyObject* value); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) #define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); #else #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) #endif #define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) /* GetAttr.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); /* PyObjectCallMethod0.proto */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); /* RaiseNoneIterError.proto */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); /* UnpackTupleError.proto */ static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /* UnpackTuple2.proto */ #define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ (likely(is_tuple || PyTuple_Check(tuple)) ?\ (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); static int __Pyx_unpack_tuple2_generic( PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); /* dict_iter.proto */ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, Py_ssize_t* p_orig_length, int* p_is_dict); static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); /* PyObjectSetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); #else #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) #endif /* RaiseUnboundLocalError.proto */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); /* SliceObject.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** py_start, PyObject** py_stop, PyObject** py_slice, int has_cstart, int has_cstop, int wraparound); /* PySequenceContains.proto */ static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { int result = PySequence_Contains(seq, item); return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /* HasAttr.proto */ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); /* SetPackagePathFromImportLib.proto */ #if PY_MAJOR_VERSION >= 3 && !CYTHON_PEP489_MULTI_PHASE_INIT static int __Pyx_SetPackagePathFromImportLib(PyObject *module_name); #else #define __Pyx_SetPackagePathFromImportLib(a) 0 #endif /* ValidateBasesTuple.proto */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); #endif /* PyType_Ready.proto */ CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); /* PyObject_GenericGetAttr.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr #endif /* SetupReduce.proto */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __Pyx_setup_reduce(PyObject* type_obj); #endif /* SetVTable.proto */ static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); /* GetVTable.proto */ static void* __Pyx_GetVtable(PyTypeObject *type); /* MergeVTables.proto */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __Pyx_MergeVtables(PyTypeObject *type); #endif /* FormatTypeName.proto */ #if CYTHON_COMPILING_IN_LIMITED_API typedef PyObject *__Pyx_TypeName; #define __Pyx_FMT_TYPENAME "%U" static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); #define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) #else typedef const char *__Pyx_TypeName; #define __Pyx_FMT_TYPENAME "%.200s" #define __Pyx_PyType_GetName(tp) ((tp)->tp_name) #define __Pyx_DECREF_TypeName(obj) #endif /* ValidateExternBase.proto */ static int __Pyx_validate_extern_base(PyTypeObject *base); /* TypeImport.proto */ #ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11 #define __PYX_HAVE_RT_ImportType_proto_3_0_11 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L #include #endif #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L #define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s) #else #define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*) #endif enum __Pyx_ImportType_CheckSize_3_0_11 { __Pyx_ImportType_CheckSize_Error_3_0_11 = 0, __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1, __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2 }; static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size); #endif /* ImportDottedModule.proto */ static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); #if PY_MAJOR_VERSION >= 3 static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); #endif /* decode_c_string_utf16.proto */ static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { int byteorder = 0; return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); } static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) { int byteorder = -1; return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); } static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) { int byteorder = 1; return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); } /* decode_c_string.proto */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); /* Globals.proto */ static PyObject* __Pyx_Globals(void); /* PyMethodNew.proto */ #if CYTHON_COMPILING_IN_LIMITED_API static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; CYTHON_UNUSED_VAR(typ); if (!self) return __Pyx_NewRef(func); typesModule = PyImport_ImportModule("types"); if (!typesModule) return NULL; methodType = PyObject_GetAttrString(typesModule, "MethodType"); Py_DECREF(typesModule); if (!methodType) return NULL; result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); Py_DECREF(methodType); return result; } #elif PY_MAJOR_VERSION >= 3 static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { CYTHON_UNUSED_VAR(typ); if (!self) return __Pyx_NewRef(func); return PyMethod_New(func, self); } #else #define __Pyx_PyMethod_New PyMethod_New #endif /* PyVectorcallFastCallDict.proto */ #if CYTHON_METH_FASTCALL static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); #endif /* CythonFunctionShared.proto */ #define __Pyx_CyFunction_USED #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 #define __Pyx_CYFUNCTION_CCLASS 0x04 #define __Pyx_CYFUNCTION_COROUTINE 0x08 #define __Pyx_CyFunction_GetClosure(f)\ (((__pyx_CyFunctionObject *) (f))->func_closure) #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyFunction_GetClassObj(f)\ (((__pyx_CyFunctionObject *) (f))->func_classobj) #else #define __Pyx_CyFunction_GetClassObj(f)\ ((PyObject*) ((PyCMethodObject *) (f))->mm_class) #endif #define __Pyx_CyFunction_SetClassObj(f, classobj)\ __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) #define __Pyx_CyFunction_Defaults(type, f)\ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) typedef struct { #if CYTHON_COMPILING_IN_LIMITED_API PyObject_HEAD PyObject *func; #elif PY_VERSION_HEX < 0x030900B1 PyCFunctionObject func; #else PyCMethodObject func; #endif #if CYTHON_BACKPORT_VECTORCALL __pyx_vectorcallfunc func_vectorcall; #endif #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API PyObject *func_weakreflist; #endif PyObject *func_dict; PyObject *func_name; PyObject *func_qualname; PyObject *func_doc; PyObject *func_globals; PyObject *func_code; PyObject *func_closure; #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API PyObject *func_classobj; #endif void *defaults; int defaults_pyobjects; size_t defaults_size; int flags; PyObject *defaults_tuple; PyObject *defaults_kwdict; PyObject *(*defaults_getter)(PyObject *); PyObject *func_annotations; PyObject *func_is_coroutine; } __pyx_CyFunctionObject; #undef __Pyx_CyOrPyCFunction_Check #define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) #define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) #define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); #undef __Pyx_IsSameCFunction #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject* code); static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, size_t size, int pyobjects); static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, PyObject *tuple); static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, PyObject *dict); static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, PyObject *dict); static int __pyx_CyFunction_init(PyObject *module); #if CYTHON_METH_FASTCALL static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); #if CYTHON_BACKPORT_VECTORCALL #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) #else #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) #endif #endif /* CythonFunction.proto */ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject* code); /* pyfrozenset_new.proto */ static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it); /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #else static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #endif /* CodeObjectCache.proto */ #if !CYTHON_COMPILING_IN_LIMITED_API typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); #endif /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* GCCDiagnostics.proto */ #if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) #define __Pyx_HAS_GCC_DIAGNOSTIC #endif /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gid_t(gid_t value); /* CIntFromPy.proto */ static CYTHON_INLINE gid_t __Pyx_PyInt_As_gid_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_pid_t(pid_t value); /* CIntFromPy.proto */ static CYTHON_INLINE pid_t __Pyx_PyInt_As_pid_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uid_t(uid_t value); /* CIntFromPy.proto */ static CYTHON_INLINE uid_t __Pyx_PyInt_As_uid_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_mode_t(mode_t value); /* CIntFromPy.proto */ static CYTHON_INLINE mode_t __Pyx_PyInt_As_mode_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From___pyx_anon_enum(int value); /* CIntFromPy.proto */ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE fuse_ino_t __Pyx_PyInt_As_fuse_ino_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fuse_ino_t(fuse_ino_t value); /* CIntFromPy.proto */ static CYTHON_INLINE off_t __Pyx_PyInt_As_off_t(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_dev_t(dev_t value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_off_t(off_t value); /* CIntFromPy.proto */ static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE ino_t __Pyx_PyInt_As_ino_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_nlink_t(nlink_t value); /* CIntFromPy.proto */ static CYTHON_INLINE nlink_t __Pyx_PyInt_As_nlink_t(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE dev_t __Pyx_PyInt_As_dev_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_blkcnt_t(blkcnt_t value); /* CIntFromPy.proto */ static CYTHON_INLINE blkcnt_t __Pyx_PyInt_As_blkcnt_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_blksize_t(blksize_t value); /* CIntFromPy.proto */ static CYTHON_INLINE blksize_t __Pyx_PyInt_As_blksize_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_time_t(time_t value); /* CIntFromPy.proto */ static CYTHON_INLINE time_t __Pyx_PyInt_As_time_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value); /* CIntFromPy.proto */ static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fsblkcnt_t(fsblkcnt_t value); /* CIntFromPy.proto */ static CYTHON_INLINE fsblkcnt_t __Pyx_PyInt_As_fsblkcnt_t(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fsfilcnt_t(fsfilcnt_t value); /* CIntFromPy.proto */ static CYTHON_INLINE fsfilcnt_t __Pyx_PyInt_As_fsfilcnt_t(PyObject *); /* CheckBinaryVersion.proto */ static unsigned long __Pyx_get_runtime_version(void); static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* #### Code section: module_declarations ### */ static PyObject *__pyx_f_7pyfuse3_11_WorkerData_get_name(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self); /* proto*/ static PyObject *__pyx_f_7pyfuse3_8FileInfo__copy_to_fuse(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, struct fuse_file_info *__pyx_v_out); /* proto*/ /* Module declarations from "fuse_opt" */ /* Module declarations from "posix.types" */ /* Module declarations from "libc.stdint" */ /* Module declarations from "fuse_common" */ /* Module declarations from "posix.signal" */ /* Module declarations from "posix.time" */ /* Module declarations from "posix.stat" */ /* Module declarations from "libc_extra" */ /* Module declarations from "libc.string" */ /* Module declarations from "libc.stdlib" */ /* Module declarations from "fuse_lowlevel" */ /* Module declarations from "pyfuse3.macros" */ /* Module declarations from "libc" */ /* Module declarations from "libc.errno" */ /* Module declarations from "posix" */ /* Module declarations from "posix.unistd" */ /* Module declarations from "libc.stdio" */ /* Module declarations from "__builtin__" */ /* Module declarations from "cpython.type" */ /* Module declarations from "cpython.exc" */ /* Module declarations from "cpython" */ /* Module declarations from "cpython.object" */ /* Module declarations from "cpython.bytes" */ /* Module declarations from "cpython.buffer" */ /* Module declarations from "cython" */ /* Module declarations from "pyfuse3" */ static PyObject *__pyx_v_7pyfuse3_operations = 0; static PyObject *__pyx_v_7pyfuse3_mountpoint_b = 0; static struct fuse_session *__pyx_v_7pyfuse3_session; static struct fuse_lowlevel_ops __pyx_v_7pyfuse3_fuse_ops; static int __pyx_v_7pyfuse3_session_fd; static PyObject *__pyx_v_7pyfuse3_py_retval = 0; static PyObject *__pyx_v_7pyfuse3__notify_queue = 0; static struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_7pyfuse3_worker_data = 0; static void __pyx_f_7pyfuse3_fuse_init(void *, struct fuse_conn_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_lookup(fuse_req_t, fuse_ino_t, const char *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_forget(fuse_req_t, fuse_ino_t, uint64_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_forget_multi(fuse_req_t, size_t, struct fuse_forget_data *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_getattr(fuse_req_t, fuse_ino_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_setattr(fuse_req_t, fuse_ino_t, struct stat *, int, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_readlink(fuse_req_t, fuse_ino_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_mknod(fuse_req_t, fuse_ino_t, const char *, mode_t, dev_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_mkdir(fuse_req_t, fuse_ino_t, const char *, mode_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_unlink(fuse_req_t, fuse_ino_t, const char *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_rmdir(fuse_req_t, fuse_ino_t, const char *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_symlink(fuse_req_t, const char *, fuse_ino_t, const char *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_rename(fuse_req_t, fuse_ino_t, const char *, fuse_ino_t, const char *, unsigned int); /*proto*/ static void __pyx_f_7pyfuse3_fuse_link(fuse_req_t, fuse_ino_t, fuse_ino_t, const char *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_open(fuse_req_t, fuse_ino_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_read(fuse_req_t, fuse_ino_t, size_t, off_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_write(fuse_req_t, fuse_ino_t, const char *, size_t, off_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_write_buf(fuse_req_t, fuse_ino_t, struct fuse_bufvec *, off_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_flush(fuse_req_t, fuse_ino_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_release(fuse_req_t, fuse_ino_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_fsync(fuse_req_t, fuse_ino_t, int, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_opendir(fuse_req_t, fuse_ino_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_readdirplus(fuse_req_t, fuse_ino_t, size_t, off_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_releasedir(fuse_req_t, fuse_ino_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_fsyncdir(fuse_req_t, fuse_ino_t, int, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_statfs(fuse_req_t, fuse_ino_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_setxattr(fuse_req_t, fuse_ino_t, const char *, const char *, size_t, int); /*proto*/ static void __pyx_f_7pyfuse3_fuse_getxattr(fuse_req_t, fuse_ino_t, const char *, size_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_listxattr(fuse_req_t, fuse_ino_t, size_t); /*proto*/ static void __pyx_f_7pyfuse3_fuse_removexattr(fuse_req_t, fuse_ino_t, const char *); /*proto*/ static void __pyx_f_7pyfuse3_fuse_access(fuse_req_t, fuse_ino_t, int); /*proto*/ static void __pyx_f_7pyfuse3_fuse_create(fuse_req_t, fuse_ino_t, const char *, mode_t, struct fuse_file_info *); /*proto*/ static void __pyx_f_7pyfuse3_save_retval(PyObject *); /*proto*/ static PyObject *__pyx_f_7pyfuse3_get_request_context(fuse_req_t); /*proto*/ static void __pyx_f_7pyfuse3_init_fuse_ops(void); /*proto*/ static PyObject *__pyx_f_7pyfuse3_make_fuse_args(PyObject *, struct fuse_args *); /*proto*/ static PyObject *__pyx_f_7pyfuse3_str2bytes(PyObject *); /*proto*/ static PyObject *__pyx_f_7pyfuse3_bytes2str(PyObject *); /*proto*/ static PyObject *__pyx_f_7pyfuse3_strerror(int); /*proto*/ static PyObject *__pyx_f_7pyfuse3_PyBytes_from_bufvec(struct fuse_bufvec *); /*proto*/ static void *__pyx_f_7pyfuse3_calloc_or_raise(size_t, size_t); /*proto*/ static PyObject *__pyx_f_7pyfuse3___pyx_unpickle__WorkerData__set_state(struct __pyx_obj_7pyfuse3__WorkerData *, PyObject *); /*proto*/ static PyObject *__pyx_f_7pyfuse3___pyx_unpickle_RequestContext__set_state(struct __pyx_obj_7pyfuse3_RequestContext *, PyObject *); /*proto*/ /* #### Code section: typeinfo ### */ /* #### Code section: before_global_var ### */ #define __Pyx_MODULE_NAME "pyfuse3.__init__" extern int __pyx_module_is_main_pyfuse3____init__; int __pyx_module_is_main_pyfuse3____init__ = 0; /* Implementation of "pyfuse3" */ /* #### Code section: global_var ### */ static PyObject *__pyx_builtin_TypeError; static PyObject *__pyx_builtin_RuntimeError; static PyObject *__pyx_builtin_OverflowError; static PyObject *__pyx_builtin_ValueError; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_OSError; static PyObject *__pyx_builtin_MemoryError; static PyObject *__pyx_builtin_open; /* #### Code section: string_decls ### */ static const char __pyx_k_c[] = "c"; static const char __pyx_k_e[] = "e"; static const char __pyx_k_g[] = "g"; static const char __pyx_k_k[] = "k"; static const char __pyx_k_o[] = "-o"; static const char __pyx_k_r[] = "r"; static const char __pyx_k_t[] = "t"; static const char __pyx_k_v[] = "v"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_fd[] = "fd"; static const char __pyx_k_fh[] = "fh"; static const char __pyx_k_fi[] = "fi"; static const char __pyx_k_gc[] = "gc"; static const char __pyx_k_os[] = "os"; static const char __pyx_k__29[] = "\000"; static const char __pyx_k__47[] = "."; static const char __pyx_k__49[] = "?"; static const char __pyx_k__50[] = "*"; static const char __pyx_k__52[] = ""; static const char __pyx_k_buf[] = "buf"; static const char __pyx_k_ctx[] = "ctx"; static const char __pyx_k_exc[] = "exc"; static const char __pyx_k_fse[] = "fse"; static const char __pyx_k_get[] = "get"; static const char __pyx_k_ino[] = "ino"; static const char __pyx_k_len[] = "len_"; static const char __pyx_k_log[] = "log"; static const char __pyx_k_new[] = "__new__"; static const char __pyx_k_now[] = "now"; static const char __pyx_k_off[] = "off"; static const char __pyx_k_ops[] = "ops"; static const char __pyx_k_pid[] = "pid"; static const char __pyx_k_put[] = "put"; static const char __pyx_k_req[] = "req"; static const char __pyx_k_res[] = "res"; static const char __pyx_k_ret[] = "ret"; static const char __pyx_k_sys[] = "sys"; static const char __pyx_k_tmp[] = "tmp"; static const char __pyx_k_Lock[] = "Lock"; static const char __pyx_k_args[] = "args"; static const char __pyx_k_attr[] = "attr"; static const char __pyx_k_cbuf[] = "cbuf"; static const char __pyx_k_data[] = "data"; static const char __pyx_k_dict[] = "__dict__"; static const char __pyx_k_dirp[] = "dirp"; static const char __pyx_k_exit[] = "__exit__"; static const char __pyx_k_gids[] = "gids"; static const char __pyx_k_init[] = "init"; static const char __pyx_k_join[] = "join"; static const char __pyx_k_line[] = "line"; static const char __pyx_k_link[] = "link"; static const char __pyx_k_main[] = "main"; static const char __pyx_k_mask[] = "mask"; static const char __pyx_k_name[] = "name"; static const char __pyx_k_open[] = "open"; static const char __pyx_k_path[] = "path"; static const char __pyx_k_pbuf[] = "pbuf"; static const char __pyx_k_read[] = "read"; static const char __pyx_k_self[] = "self"; static const char __pyx_k_send[] = "send"; static const char __pyx_k_slen[] = "slen"; static const char __pyx_k_spec[] = "__spec__"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_trio[] = "trio"; static const char __pyx_k_user[] = "user"; static const char __pyx_k_FlagT[] = "FlagT"; static const char __pyx_k_ModeT[] = "ModeT"; static const char __pyx_k_Queue[] = "Queue"; static const char __pyx_k_aexit[] = "__aexit__"; static const char __pyx_k_await[] = "__await__"; static const char __pyx_k_close[] = "close"; static const char __pyx_k_cname[] = "cname"; static const char __pyx_k_cpath[] = "cpath"; static const char __pyx_k_debug[] = "debug"; static const char __pyx_k_enter[] = "__enter__"; static const char __pyx_k_entry[] = "entry"; static const char __pyx_k_errno[] = "errno"; static const char __pyx_k_error[] = "error"; static const char __pyx_k_flags[] = "flags"; static const char __pyx_k_flush[] = "flush"; static const char __pyx_k_fsync[] = "fsync"; static const char __pyx_k_inode[] = "inode"; static const char __pyx_k_items[] = "items"; static const char __pyx_k_len_s[] = "len_s"; static const char __pyx_k_mkdir[] = "mkdir"; static const char __pyx_k_mknod[] = "mknod"; static const char __pyx_k_names[] = "names"; static const char __pyx_k_pybuf[] = "pybuf"; static const char __pyx_k_queue[] = "queue"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_rmdir[] = "rmdir"; static const char __pyx_k_split[] = "split"; static const char __pyx_k_start[] = "start"; static const char __pyx_k_state[] = "state"; static const char __pyx_k_stats[] = "stats"; static const char __pyx_k_throw[] = "throw"; static const char __pyx_k_token[] = "token"; static const char __pyx_k_value[] = "value"; static const char __pyx_k_write[] = "write"; static const char __pyx_k_Groups[] = "Groups:"; static const char __pyx_k_InodeT[] = "InodeT"; static const char __pyx_k_Thread[] = "Thread"; static const char __pyx_k_access[] = "access"; static const char __pyx_k_aenter[] = "__aenter__"; static const char __pyx_k_bufvec[] = "bufvec"; static const char __pyx_k_create[] = "create"; static const char __pyx_k_cvalue[] = "cvalue"; static const char __pyx_k_daemon[] = "daemon"; static const char __pyx_k_decode[] = "decode"; static const char __pyx_k_dict_2[] = "_dict"; static const char __pyx_k_enable[] = "enable"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_f_args[] = "f_args"; static const char __pyx_k_fields[] = "fields"; static const char __pyx_k_forget[] = "forget"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_lookup[] = "lookup"; static const char __pyx_k_main_2[] = "__main__"; static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_name_b[] = "name_b"; static const char __pyx_k_offset[] = "offset"; static const char __pyx_k_path_b[] = "path_b"; static const char __pyx_k_pickle[] = "pickle"; static const char __pyx_k_reduce[] = "__reduce__"; static const char __pyx_k_rename[] = "rename"; static const char __pyx_k_st_gid[] = "st_gid"; static const char __pyx_k_st_ino[] = "st_ino"; static const char __pyx_k_st_uid[] = "st_uid"; static const char __pyx_k_statfs[] = "statfs"; static const char __pyx_k_syncfs[] = "syncfs"; static const char __pyx_k_system[] = "system"; static const char __pyx_k_target[] = "target"; static const char __pyx_k_to_set[] = "to_set"; static const char __pyx_k_typing[] = "typing"; static const char __pyx_k_unlink[] = "unlink"; static const char __pyx_k_update[] = "update"; static const char __pyx_k_ENOATTR[] = "ENOATTR"; static const char __pyx_k_OSError[] = "OSError"; static const char __pyx_k_abspath[] = "abspath"; static const char __pyx_k_allowed[] = "allowed"; static const char __pyx_k_bufsize[] = "bufsize"; static const char __pyx_k_deleted[] = "deleted"; static const char __pyx_k_disable[] = "disable"; static const char __pyx_k_errno_d[] = "errno: %d"; static const char __pyx_k_f_bfree[] = "f_bfree"; static const char __pyx_k_f_bsize[] = "f_bsize"; static const char __pyx_k_f_ffree[] = "f_ffree"; static const char __pyx_k_f_files[] = "f_files"; static const char __pyx_k_getattr[] = "getattr"; static const char __pyx_k_inode_p[] = "inode_p"; static const char __pyx_k_listdir[] = "listdir"; static const char __pyx_k_logging[] = "logging"; static const char __pyx_k_newname[] = "newname"; static const char __pyx_k_next_id[] = "next_id"; static const char __pyx_k_nursery[] = "nursery"; static const char __pyx_k_opendir[] = "opendir"; static const char __pyx_k_options[] = "options"; static const char __pyx_k_os_path[] = "os.path"; static const char __pyx_k_pyfuse3[] = "pyfuse3"; static const char __pyx_k_readdir[] = "readdir"; static const char __pyx_k_release[] = "release"; static const char __pyx_k_setattr[] = "setattr"; static const char __pyx_k_st_mode[] = "st_mode"; static const char __pyx_k_st_rdev[] = "st_rdev"; static const char __pyx_k_st_size[] = "st_size"; static const char __pyx_k_symlink[] = "symlink"; static const char __pyx_k_unmount[] = "unmount"; static const char __pyx_k_version[] = "__version__"; static const char __pyx_k_FileInfo[] = "FileInfo"; static const char __pyx_k_f_bavail[] = "f_bavail"; static const char __pyx_k_f_blocks[] = "f_blocks"; static const char __pyx_k_f_favail[] = "f_favail"; static const char __pyx_k_f_frsize[] = "f_frsize"; static const char __pyx_k_fsyncdir[] = "fsyncdir"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_getxattr[] = "getxattr"; static const char __pyx_k_lowlevel[] = "lowlevel"; static const char __pyx_k_pyx_type[] = "__pyx_type"; static const char __pyx_k_readlink[] = "readlink"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_setxattr[] = "setxattr"; static const char __pyx_k_st_nlink[] = "st_nlink"; static const char __pyx_k_strerror[] = "strerror"; static const char __pyx_k_us_ascii[] = "us-ascii"; static const char __pyx_k_Container[] = "_Container"; static const char __pyx_k_FUSEError[] = "FUSEError"; static const char __pyx_k_FileNameT[] = "FileNameT"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_attr_only[] = "attr_only"; static const char __pyx_k_direct_io[] = "direct_io"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_exception[] = "exception"; static const char __pyx_k_f_namemax[] = "f_namemax"; static const char __pyx_k_getLogger[] = "getLogger"; static const char __pyx_k_isenabled[] = "isenabled"; static const char __pyx_k_listxattr[] = "listxattr"; static const char __pyx_k_max_tasks[] = "max_tasks"; static const char __pyx_k_min_tasks[] = "min_tasks"; static const char __pyx_k_namespace[] = "namespace"; static const char __pyx_k_newparent[] = "newparent"; static const char __pyx_k_pyfuse3_2[] = "_pyfuse3"; static const char __pyx_k_pyx_state[] = "__pyx_state"; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_st_blocks[] = "st_blocks"; static const char __pyx_k_terminate[] = "terminate"; static const char __pyx_k_threading[] = "threading"; static const char __pyx_k_Operations[] = "Operations"; static const char __pyx_k_ROOT_INODE[] = "ROOT_INODE"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_WorkerData[] = "_WorkerData"; static const char __pyx_k_XAttrNameT[] = "XAttrNameT"; static const char __pyx_k_cnamespace[] = "cnamespace"; static const char __pyx_k_enable_acl[] = "enable_acl"; static const char __pyx_k_generation[] = "generation"; static const char __pyx_k_keep_cache[] = "keep_cache"; static const char __pyx_k_mountpoint[] = "mountpoint"; static const char __pyx_k_pyfuse_02d[] = "pyfuse-%02d"; static const char __pyx_k_pyx_result[] = "__pyx_result"; static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; static const char __pyx_k_releasedir[] = "releasedir"; static const char __pyx_k_size_guess[] = "size_guess"; static const char __pyx_k_st_blksize[] = "st_blksize"; static const char __pyx_k_stacktrace[] = "stacktrace"; static const char __pyx_k_start_soon[] = "start_soon"; static const char __pyx_k_startswith[] = "startswith"; static const char __pyx_k_trio_token[] = "trio_token"; static const char __pyx_k_FileHandleT[] = "FileHandleT"; static const char __pyx_k_MemoryError[] = "MemoryError"; static const char __pyx_k_O_DIRECTORY[] = "O_DIRECTORY"; static const char __pyx_k_PickleError[] = "PickleError"; static const char __pyx_k_StatvfsData[] = "StatvfsData"; static const char __pyx_k_nonseekable[] = "nonseekable"; static const char __pyx_k_notify_loop[] = "_notify_loop"; static const char __pyx_k_removexattr[] = "removexattr"; static const char __pyx_k_st_atime_ns[] = "st_atime_ns"; static const char __pyx_k_st_ctime_ns[] = "st_ctime_ns"; static const char __pyx_k_st_mtime_ns[] = "st_mtime_ns"; static const char __pyx_k_ReaddirToken[] = "ReaddirToken"; static const char __pyx_k_RuntimeError[] = "RuntimeError"; static const char __pyx_k_attr_timeout[] = "attr_timeout"; static const char __pyx_k_current_task[] = "current_task"; static const char __pyx_k_initializing[] = "_initializing"; static const char __pyx_k_is_coroutine[] = "_is_coroutine"; static const char __pyx_k_notify_store[] = "notify_store"; static const char __pyx_k_open_nursery[] = "open_nursery"; static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; static const char __pyx_k_s_terminated[] = "%s: terminated"; static const char __pyx_k_session_loop[] = "_session_loop"; static const char __pyx_k_stringsource[] = ""; static const char __pyx_k_use_setstate[] = "use_setstate"; static const char __pyx_k_NANOS_PER_SEC[] = "_NANOS_PER_SEC"; static const char __pyx_k_OverflowError[] = "OverflowError"; static const char __pyx_k_PicklingError[] = "PicklingError"; static const char __pyx_k_SetattrFields[] = "SetattrFields"; static const char __pyx_k_async_wrapper[] = "async_wrapper"; static const char __pyx_k_entry_timeout[] = "entry_timeout"; static const char __pyx_k_ignore_enoent[] = "ignore_enoent"; static const char __pyx_k_proc_d_status[] = "/proc/%d/status"; static const char __pyx_k_readdir_reply[] = "readdir_reply"; static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_wait_readable[] = "wait_readable"; static const char __pyx_k_RequestContext[] = "RequestContext"; static const char __pyx_k_get_sup_groups[] = "get_sup_groups"; static const char __pyx_k_notify_closing[] = "notify_closing"; static const char __pyx_k_pyfuse3___init[] = "pyfuse3.__init__"; static const char __pyx_k_EntryAttributes[] = "EntryAttributes"; static const char __pyx_k_RENAME_EXCHANGE[] = "RENAME_EXCHANGE"; static const char __pyx_k_default_options[] = "default_options"; static const char __pyx_k_fuse_link_async[] = "fuse_link_async"; static const char __pyx_k_fuse_open_async[] = "fuse_open_async"; static const char __pyx_k_fuse_read_async[] = "fuse_read_async"; static const char __pyx_k_fuse_stacktrace[] = "fuse_stacktrace"; static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_st_birthtime_ns[] = "st_birthtime_ns"; static const char __pyx_k_surrogateescape[] = "surrogateescape"; static const char __pyx_k_RENAME_NOREPLACE[] = "RENAME_NOREPLACE"; static const char __pyx_k_fuse_flush_async[] = "fuse_flush_async"; static const char __pyx_k_fuse_fsync_async[] = "fuse_fsync_async"; static const char __pyx_k_fuse_mkdir_async[] = "fuse_mkdir_async"; static const char __pyx_k_fuse_mknod_async[] = "fuse_mknod_async"; static const char __pyx_k_fuse_rmdir_async[] = "fuse_rmdir_async"; static const char __pyx_k_fuse_write_async[] = "fuse_write_async"; static const char __pyx_k_invalidate_entry[] = "invalidate_entry"; static const char __pyx_k_invalidate_inode[] = "invalidate_inode"; static const char __pyx_k_unknown_flag_s_o[] = "unknown flag(s): %o"; static const char __pyx_k_FileNotFoundError[] = "FileNotFoundError"; static const char __pyx_k_Unable_to_parse_s[] = "Unable to parse %s"; static const char __pyx_k_fuse_access_async[] = "fuse_access_async"; static const char __pyx_k_fuse_create_async[] = "fuse_create_async"; static const char __pyx_k_fuse_lookup_async[] = "fuse_lookup_async"; static const char __pyx_k_fuse_rename_async[] = "fuse_rename_async"; static const char __pyx_k_fuse_statfs_async[] = "fuse_statfs_async"; static const char __pyx_k_fuse_unlink_async[] = "fuse_unlink_async"; static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_current_trio_token[] = "current_trio_token"; static const char __pyx_k_fuse_getattr_async[] = "fuse_getattr_async"; static const char __pyx_k_fuse_opendir_async[] = "fuse_opendir_async"; static const char __pyx_k_fuse_release_async[] = "fuse_release_async"; static const char __pyx_k_fuse_setattr_async[] = "fuse_setattr_async"; static const char __pyx_k_fuse_symlink_async[] = "fuse_symlink_async"; static const char __pyx_k_wait_fuse_readable[] = "_wait_fuse_readable"; static const char __pyx_k_ClosedResourceError[] = "ClosedResourceError"; static const char __pyx_k_default_permissions[] = "default_permissions"; static const char __pyx_k_fuse_fsyncdir_async[] = "fuse_fsyncdir_async"; static const char __pyx_k_fuse_getxattr_async[] = "fuse_getxattr_async"; static const char __pyx_k_fuse_readlink_async[] = "fuse_readlink_async"; static const char __pyx_k_fuse_setxattr_async[] = "fuse_setxattr_async"; static const char __pyx_k_supports_dot_lookup[] = "supports_dot_lookup"; static const char __pyx_k_Initializing_pyfuse3[] = "Initializing pyfuse3"; static const char __pyx_k_fuse_listxattr_async[] = "fuse_listxattr_async"; static const char __pyx_k_fuse_write_buf_async[] = "fuse_write_buf_async"; static const char __pyx_k_fuse_releasedir_async[] = "fuse_releasedir_async"; static const char __pyx_k_getfilesystemencoding[] = "getfilesystemencoding"; static const char __pyx_k_Starting_notify_worker[] = "Starting notify worker."; static const char __pyx_k_StatvfsData___getstate[] = "StatvfsData.__getstate__"; static const char __pyx_k_StatvfsData___setstate[] = "StatvfsData.__setstate__"; static const char __pyx_k_enable_writeback_cache[] = "enable_writeback_cache"; static const char __pyx_k_fuse_readdirplus_async[] = "fuse_readdirplus_async"; static const char __pyx_k_fuse_removexattr_async[] = "fuse_removexattr_async"; static const char __pyx_k_invalidate_entry_async[] = "invalidate_entry_async"; static const char __pyx_k_fuse_session_new_failed[] = "fuse_session_new() failed"; static const char __pyx_k_Calling_fuse_session_new[] = "Calling fuse_session_new"; static const char __pyx_k_FileInfo___reduce_cython[] = "FileInfo.__reduce_cython__"; static const char __pyx_k_SetattrFields___getstate[] = "SetattrFields.__getstate__"; static const char __pyx_k_pyx_unpickle__WorkerData[] = "__pyx_unpickle__WorkerData"; static const char __pyx_k_src_pyfuse3___init___pyx[] = "src/pyfuse3/__init__.pyx"; static const char __pyx_k_src_pyfuse3_handlers_pxi[] = "src/pyfuse3/handlers.pxi"; static const char __pyx_k_src_pyfuse3_internal_pxi[] = "src/pyfuse3/internal.pxi"; static const char __pyx_k_Container___reduce_cython[] = "_Container.__reduce_cython__"; static const char __pyx_k_FUSEError___reduce_cython[] = "FUSEError.__reduce_cython__"; static const char __pyx_k_RequestContext___getstate[] = "RequestContext.__getstate__"; static const char __pyx_k_fuse_buf_copy_failed_with[] = "fuse_buf_copy failed with "; static const char __pyx_k_fuse_session_mount_failed[] = "fuse_session_mount failed"; static const char __pyx_k_terminating_notify_thread[] = "terminating notify thread"; static const char __pyx_k_Calling_fuse_session_mount[] = "Calling fuse_session_mount"; static const char __pyx_k_EntryAttributes___getstate[] = "EntryAttributes.__getstate__"; static const char __pyx_k_EntryAttributes___setstate[] = "EntryAttributes.__setstate__"; static const char __pyx_k_FUSE_fd_about_to_be_closed[] = "FUSE fd about to be closed."; static const char __pyx_k_FileInfo___setstate_cython[] = "FileInfo.__setstate_cython__"; static const char __pyx_k_WorkerData___reduce_cython[] = "_WorkerData.__reduce_cython__"; static const char __pyx_k_Container___setstate_cython[] = "_Container.__setstate_cython__"; static const char __pyx_k_FUSEError___setstate_cython[] = "FUSEError.__setstate_cython__"; static const char __pyx_k_StatvfsData___reduce_cython[] = "StatvfsData.__reduce_cython__"; static const char __pyx_k_pyx_unpickle_RequestContext[] = "__pyx_unpickle_RequestContext"; static const char __pyx_k_Calling_fuse_session_destroy[] = "Calling fuse_session_destroy"; static const char __pyx_k_Calling_fuse_session_unmount[] = "Calling fuse_session_unmount"; static const char __pyx_k_ReaddirToken___reduce_cython[] = "ReaddirToken.__reduce_cython__"; static const char __pyx_k_WorkerData___setstate_cython[] = "_WorkerData.__setstate_cython__"; static const char __pyx_k_Need_to_call_init_before_main[] = "Need to call init() before main()"; static const char __pyx_k_SetattrFields___reduce_cython[] = "SetattrFields.__reduce_cython__"; static const char __pyx_k_StatvfsData___setstate_cython[] = "StatvfsData.__setstate_cython__"; static const char __pyx_k_init___pyx_Copyright_2013_Nik[] = "\n__init__.pyx\n\nCopyright \302\251 2013 Nikolaus Rath \n\nThis file is part of pyfuse3. This work may be distributed under\nthe terms of the GNU LGPL.\n"; static const char __pyx_k_ReaddirToken___setstate_cython[] = "ReaddirToken.__setstate_cython__"; static const char __pyx_k_RequestContext___reduce_cython[] = "RequestContext.__reduce_cython__"; static const char __pyx_k_EntryAttributes___reduce_cython[] = "EntryAttributes.__reduce_cython__"; static const char __pyx_k_Kernel_too_old_pyfuse3_requires[] = "Kernel too old, pyfuse3 requires kernel 3.9 or newer!"; static const char __pyx_k_SetattrFields___setstate_cython[] = "SetattrFields.__setstate_cython__"; static const char __pyx_k_fuse_getattr_fuse_reply__failed[] = "fuse_getattr(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_opendir_fuse_reply__failed[] = "fuse_opendir(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_release_fuse_reply__failed[] = "fuse_release(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_session_receive_buf_failed[] = "fuse_session_receive_buf failed with "; static const char __pyx_k_fuse_setattr_fuse_reply__failed[] = "fuse_setattr(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_symlink_fuse_reply__failed[] = "fuse_symlink(): fuse_reply_* failed with %s"; static const char __pyx_k_mountpoint__argument_must_be_of[] = "*mountpoint_* argument must be of type str"; static const char __pyx_k_name_argument_must_be_of_type_s[] = "*name* argument must be of type str"; static const char __pyx_k_namespace_parameter_must_be_sys[] = "*namespace* parameter must be \"system\" or \"user\", not %s"; static const char __pyx_k_path_argument_must_be_of_type_s[] = "*path* argument must be of type str"; static const char __pyx_k_s_No_tasks_waiting_starting_ano[] = "%s: No tasks waiting, starting another worker (now %d total)."; static const char __pyx_k_s_too_many_idle_tasks_d_total_d[] = "%s: too many idle tasks (%d total, %d waiting), terminating."; static const char __pyx_k_self_req_cannot_be_converted_to[] = "self.req cannot be converted to a Python object for pickling"; static const char __pyx_k_EntryAttributes___setstate_cytho[] = "EntryAttributes.__setstate_cython__"; static const char __pyx_k_FUSE_session_exit_flag_set_while[] = "FUSE session exit flag set while waiting for FUSE fd to become readable."; static const char __pyx_k_Failed_to_submit_invalidate_entr[] = "Failed to submit invalidate_entry request for parent inode %d, name %s"; static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))"; static const char __pyx_k_RequestContext___setstate_cython[] = "RequestContext.__setstate_cython__"; static const char __pyx_k_RequestContext_instances_can_t_b[] = "RequestContext instances can't be pickled"; static const char __pyx_k_SetattrFields_instances_can_t_be[] = "SetattrFields instances can't be pickled"; static const char __pyx_k_Value_too_long_to_convert_to_Pyt[] = "Value too long to convert to Python"; static const char __pyx_k_fuse_access_fuse_reply__failed_w[] = "fuse_access(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_create_fuse_reply__failed_w[] = "fuse_create(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_flush_fuse_reply__failed_wi[] = "fuse_flush(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_fsync_fuse_reply__failed_wi[] = "fuse_fsync(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_fsyncdir_fuse_reply__failed[] = "fuse_fsyncdir(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_getxattr_fuse_reply__failed[] = "fuse_getxattr(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_link_fuse_reply__failed_wit[] = "fuse_link(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_listxattr_fuse_reply__faile[] = "fuse_listxattr(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_lookup_fuse_reply__failed_w[] = "fuse_lookup(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_lowlevel_notify_delete_retu[] = "fuse_lowlevel_notify_delete returned: "; static const char __pyx_k_fuse_lowlevel_notify_inval_entry[] = "fuse_lowlevel_notify_inval_entry returned: "; static const char __pyx_k_fuse_lowlevel_notify_inval_inode[] = "fuse_lowlevel_notify_inval_inode returned: "; static const char __pyx_k_fuse_lowlevel_notify_store_retur[] = "fuse_lowlevel_notify_store returned: "; static const char __pyx_k_fuse_mkdir_fuse_reply__failed_wi[] = "fuse_mkdir(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_mknod_fuse_reply__failed_wi[] = "fuse_mknod(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_read_fuse_reply__failed_wit[] = "fuse_read(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_readdirplus_fuse_reply__fai[] = "fuse_readdirplus(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_readlink_fuse_reply__failed[] = "fuse_readlink(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_releasedir_fuse_reply__fail[] = "fuse_releasedir(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_removexattr_fuse_reply__fai[] = "fuse_removexattr(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_rename_fuse_reply__failed_w[] = "fuse_rename(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_rmdir_fuse_reply__failed_wi[] = "fuse_rmdir(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_setattr_clock_gettime_CLOCK[] = "fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s"; static const char __pyx_k_fuse_setxattr_fuse_reply__failed[] = "fuse_setxattr(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_statfs_fuse_reply__failed_w[] = "fuse_statfs(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_unlink_fuse_reply__failed_w[] = "fuse_unlink(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_write_buf_fuse_reply__faile[] = "fuse_write_buf(): fuse_reply_* failed with %s"; static const char __pyx_k_fuse_write_fuse_reply__failed_wi[] = "fuse_write(): fuse_reply_* failed with %s"; static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; static const char __pyx_k_py_retval_was_not_awaited_please[] = "py_retval was not awaited - please report a bug at https://github.com/libfuse/pyfuse3/issues!"; static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))"; /* #### Code section: decls ### */ static PyObject *__pyx_pf_7pyfuse3_10_Container___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3__Container *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_10_Container_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3__Container *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_fuse_lookup_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_3fuse_getattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_6fuse_setattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_fh); /* proto */ static PyObject *__pyx_pf_7pyfuse3_9fuse_readlink_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_12fuse_mknod_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15fuse_mkdir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_18fuse_unlink_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_21fuse_rmdir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_24fuse_symlink_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name, PyObject *__pyx_v_link); /* proto */ static PyObject *__pyx_pf_7pyfuse3_27fuse_rename_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name, PyObject *__pyx_v_newname); /* proto */ static PyObject *__pyx_pf_7pyfuse3_30fuse_link_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_newname); /* proto */ static PyObject *__pyx_pf_7pyfuse3_33fuse_open_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_36fuse_read_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_39fuse_write_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_pbuf); /* proto */ static PyObject *__pyx_pf_7pyfuse3_42fuse_write_buf_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_buf); /* proto */ static PyObject *__pyx_pf_7pyfuse3_45fuse_flush_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_48fuse_release_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_51fuse_fsync_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_54fuse_opendir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_12ReaddirToken___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_12ReaddirToken_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_57fuse_readdirplus_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_60fuse_releasedir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_63fuse_fsyncdir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_66fuse_statfs_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_69fuse_setxattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */ static PyObject *__pyx_pf_7pyfuse3_72fuse_getxattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_75fuse_listxattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_78fuse_removexattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_81fuse_access_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_7pyfuse3_84fuse_create_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_7pyfuse3_87_notify_loop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static int __pyx_pf_7pyfuse3_11_WorkerData___init__(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11_WorkerData_2__reduce_cython__(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11_WorkerData_4__setstate_cython__(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_89_wait_fuse_readable(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_92_session_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nursery, int __pyx_v_min_tasks, int __pyx_v_max_tasks); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext___getstate__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext_3uid___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext_3pid___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext_3gid___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext_5umask___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext_2__reduce_cython__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_14RequestContext_4__setstate_cython__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_7pyfuse3_13SetattrFields___cinit__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_2__getstate__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_12update_atime___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_12update_mtime___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_12update_ctime___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_11update_mode___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_10update_uid___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_10update_gid___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_11update_size___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes___cinit__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6st_ino___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_6st_ino_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_10generation___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_10generation_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_12attr_timeout___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_12attr_timeout_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_13entry_timeout___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_13entry_timeout_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_7st_mode___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_7st_mode_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_8st_nlink___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_8st_nlink_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6st_uid___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_6st_uid_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6st_gid___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_6st_gid_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_7st_rdev___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_7st_rdev_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_7st_size___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_7st_size_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_9st_blocks___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_9st_blocks_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_10st_blksize___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_10st_blksize_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_11st_atime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_11st_atime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_11st_mtime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_11st_mtime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_11st_ctime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_11st_ctime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_15st_birthtime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_15EntryAttributes_15st_birthtime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_2__getstate__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_4__setstate__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_7pyfuse3_8FileInfo___cinit__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_fh, PyObject *__pyx_v_direct_io, PyObject *__pyx_v_keep_cache, PyObject *__pyx_v_nonseekable); /* proto */ static PyObject *__pyx_pf_7pyfuse3_8FileInfo_2fh___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_8FileInfo_2fh_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ static PyObject *__pyx_pf_7pyfuse3_8FileInfo_9direct_io___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_8FileInfo_9direct_io_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ static PyObject *__pyx_pf_7pyfuse3_8FileInfo_10keep_cache___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_8FileInfo_10keep_cache_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ static PyObject *__pyx_pf_7pyfuse3_8FileInfo_11nonseekable___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_8FileInfo_11nonseekable_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ static PyObject *__pyx_pf_7pyfuse3_8FileInfo_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_8FileInfo_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData___cinit__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_bsize___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_7f_bsize_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_frsize___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_8f_frsize_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_blocks___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_8f_blocks_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_bfree___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_7f_bfree_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_bavail___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_8f_bavail_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_files___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_7f_files_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_ffree___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_7f_ffree_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_favail___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_8f_favail_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_9f_namemax___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_11StatvfsData_9f_namemax_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_2__getstate__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_4__setstate__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_9FUSEError_5errno___get__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self); /* proto */ static int __pyx_pf_7pyfuse3_9FUSEError___cinit__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self, PyObject *__pyx_v_errno); /* proto */ static PyObject *__pyx_pf_7pyfuse3_9FUSEError_2__str__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_9FUSEError_6errno____get__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_9FUSEError_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_9FUSEError_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_95listdir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path); /* proto */ static PyObject *__pyx_pf_7pyfuse3_97syncfs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path); /* proto */ static PyObject *__pyx_pf_7pyfuse3_99setxattr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_namespace); /* proto */ static PyObject *__pyx_pf_7pyfuse3_101getxattr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_name, size_t __pyx_v_size_guess, PyObject *__pyx_v_namespace); /* proto */ static PyObject *__pyx_pf_7pyfuse3_128__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_103init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ops, PyObject *__pyx_v_mountpoint, PyObject *__pyx_v_options); /* proto */ static PyObject *__pyx_pf_7pyfuse3_105main(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_min_tasks, int __pyx_v_max_tasks); /* proto */ static PyObject *__pyx_pf_7pyfuse3_108terminate(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_7pyfuse3_110close(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_unmount); /* proto */ static PyObject *__pyx_pf_7pyfuse3_112invalidate_inode(CYTHON_UNUSED PyObject *__pyx_self, fuse_ino_t __pyx_v_inode, PyObject *__pyx_v_attr_only); /* proto */ static PyObject *__pyx_pf_7pyfuse3_114invalidate_entry(CYTHON_UNUSED PyObject *__pyx_self, fuse_ino_t __pyx_v_inode_p, PyObject *__pyx_v_name, fuse_ino_t __pyx_v_deleted); /* proto */ static PyObject *__pyx_pf_7pyfuse3_116invalidate_entry_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_inode_p, PyObject *__pyx_v_name, PyObject *__pyx_v_deleted, PyObject *__pyx_v_ignore_enoent); /* proto */ static PyObject *__pyx_pf_7pyfuse3_118notify_store(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_inode, PyObject *__pyx_v_offset, PyObject *__pyx_v_data); /* proto */ static PyObject *__pyx_pf_7pyfuse3_120get_sup_groups(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pid); /* proto */ static PyObject *__pyx_pf_7pyfuse3_122readdir_reply(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_token, PyObject *__pyx_v_name, struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_attr, off_t __pyx_v_next_id); /* proto */ static PyObject *__pyx_pf_7pyfuse3_124__pyx_unpickle__WorkerData(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_7pyfuse3_126__pyx_unpickle_RequestContext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_tp_new_7pyfuse3__Container(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_ReaddirToken(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3__WorkerData(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_RequestContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_SetattrFields(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_EntryAttributes(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_FileInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_StatvfsData(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3_FUSEError(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct__fuse_lookup_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_9_fuse_rename_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_10_fuse_link_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_11_fuse_open_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_12_fuse_read_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_13_fuse_write_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_15_fuse_flush_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_16_fuse_release_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_27_fuse_access_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_28_fuse_create_async(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_30__session_loop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_31_main(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ /* #### Code section: late_includes ### */ /* #### Code section: module_state ### */ typedef struct { PyObject *__pyx_d; PyObject *__pyx_b; PyObject *__pyx_cython_runtime; PyObject *__pyx_empty_tuple; PyObject *__pyx_empty_bytes; PyObject *__pyx_empty_unicode; #ifdef __Pyx_CyFunction_USED PyTypeObject *__pyx_CyFunctionType; #endif #ifdef __Pyx_FusedFunction_USED PyTypeObject *__pyx_FusedFunctionType; #endif #ifdef __Pyx_Generator_USED PyTypeObject *__pyx_GeneratorType; #endif #ifdef __Pyx_IterableCoroutine_USED PyTypeObject *__pyx_IterableCoroutineType; #endif #ifdef __Pyx_Coroutine_USED PyTypeObject *__pyx_CoroutineAwaitType; #endif #ifdef __Pyx_Coroutine_USED PyTypeObject *__pyx_CoroutineType; #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif PyTypeObject *__pyx_ptype_7cpython_4type_type; #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE PyObject *__pyx_type_7pyfuse3__Container; PyObject *__pyx_type_7pyfuse3_ReaddirToken; PyObject *__pyx_type_7pyfuse3__WorkerData; PyObject *__pyx_type_7pyfuse3_RequestContext; PyObject *__pyx_type_7pyfuse3_SetattrFields; PyObject *__pyx_type_7pyfuse3_EntryAttributes; PyObject *__pyx_type_7pyfuse3_FileInfo; PyObject *__pyx_type_7pyfuse3_StatvfsData; PyObject *__pyx_type_7pyfuse3_FUSEError; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop; PyObject *__pyx_type_7pyfuse3___pyx_scope_struct_31_main; #endif PyTypeObject *__pyx_ptype_7pyfuse3__Container; PyTypeObject *__pyx_ptype_7pyfuse3_ReaddirToken; PyTypeObject *__pyx_ptype_7pyfuse3__WorkerData; PyTypeObject *__pyx_ptype_7pyfuse3_RequestContext; PyTypeObject *__pyx_ptype_7pyfuse3_SetattrFields; PyTypeObject *__pyx_ptype_7pyfuse3_EntryAttributes; PyTypeObject *__pyx_ptype_7pyfuse3_FileInfo; PyTypeObject *__pyx_ptype_7pyfuse3_StatvfsData; PyTypeObject *__pyx_ptype_7pyfuse3_FUSEError; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop; PyTypeObject *__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main; PyObject *__pyx_kp_u_Calling_fuse_session_destroy; PyObject *__pyx_kp_u_Calling_fuse_session_mount; PyObject *__pyx_kp_u_Calling_fuse_session_new; PyObject *__pyx_kp_u_Calling_fuse_session_unmount; PyObject *__pyx_n_s_ClosedResourceError; PyObject *__pyx_n_s_Container; PyObject *__pyx_n_s_Container___reduce_cython; PyObject *__pyx_n_s_Container___setstate_cython; PyObject *__pyx_n_u_ENOATTR; PyObject *__pyx_n_s_EntryAttributes; PyObject *__pyx_n_s_EntryAttributes___getstate; PyObject *__pyx_n_s_EntryAttributes___reduce_cython; PyObject *__pyx_n_s_EntryAttributes___setstate; PyObject *__pyx_n_s_EntryAttributes___setstate_cytho; PyObject *__pyx_n_s_FUSEError; PyObject *__pyx_n_s_FUSEError___reduce_cython; PyObject *__pyx_n_s_FUSEError___setstate_cython; PyObject *__pyx_kp_u_FUSE_fd_about_to_be_closed; PyObject *__pyx_kp_u_FUSE_session_exit_flag_set_while; PyObject *__pyx_kp_u_Failed_to_submit_invalidate_entr; PyObject *__pyx_n_s_FileHandleT; PyObject *__pyx_n_s_FileInfo; PyObject *__pyx_n_s_FileInfo___reduce_cython; PyObject *__pyx_n_s_FileInfo___setstate_cython; PyObject *__pyx_n_s_FileNameT; PyObject *__pyx_n_s_FileNotFoundError; PyObject *__pyx_n_s_FlagT; PyObject *__pyx_kp_u_Groups; PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0; PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2; PyObject *__pyx_kp_u_Initializing_pyfuse3; PyObject *__pyx_n_s_InodeT; PyObject *__pyx_kp_u_Kernel_too_old_pyfuse3_requires; PyObject *__pyx_n_s_Lock; PyObject *__pyx_n_s_MemoryError; PyObject *__pyx_n_s_ModeT; PyObject *__pyx_n_s_NANOS_PER_SEC; PyObject *__pyx_kp_u_Need_to_call_init_before_main; PyObject *__pyx_n_s_OSError; PyObject *__pyx_n_s_O_DIRECTORY; PyObject *__pyx_n_s_Operations; PyObject *__pyx_n_s_OverflowError; PyObject *__pyx_n_s_PickleError; PyObject *__pyx_n_s_PicklingError; PyObject *__pyx_n_s_Queue; PyObject *__pyx_n_u_RENAME_EXCHANGE; PyObject *__pyx_n_u_RENAME_NOREPLACE; PyObject *__pyx_n_s_ROOT_INODE; PyObject *__pyx_n_s_ReaddirToken; PyObject *__pyx_n_s_ReaddirToken___reduce_cython; PyObject *__pyx_n_s_ReaddirToken___setstate_cython; PyObject *__pyx_n_s_RequestContext; PyObject *__pyx_n_s_RequestContext___getstate; PyObject *__pyx_n_s_RequestContext___reduce_cython; PyObject *__pyx_n_s_RequestContext___setstate_cython; PyObject *__pyx_kp_u_RequestContext_instances_can_t_b; PyObject *__pyx_n_s_RuntimeError; PyObject *__pyx_n_s_SetattrFields; PyObject *__pyx_n_s_SetattrFields___getstate; PyObject *__pyx_n_s_SetattrFields___reduce_cython; PyObject *__pyx_n_s_SetattrFields___setstate_cython; PyObject *__pyx_kp_u_SetattrFields_instances_can_t_be; PyObject *__pyx_kp_u_Starting_notify_worker; PyObject *__pyx_n_s_StatvfsData; PyObject *__pyx_n_s_StatvfsData___getstate; PyObject *__pyx_n_s_StatvfsData___reduce_cython; PyObject *__pyx_n_s_StatvfsData___setstate; PyObject *__pyx_n_s_StatvfsData___setstate_cython; PyObject *__pyx_n_s_Thread; PyObject *__pyx_n_s_TypeError; PyObject *__pyx_kp_u_Unable_to_parse_s; PyObject *__pyx_n_s_ValueError; PyObject *__pyx_kp_u_Value_too_long_to_convert_to_Pyt; PyObject *__pyx_n_s_WorkerData; PyObject *__pyx_n_s_WorkerData___reduce_cython; PyObject *__pyx_n_s_WorkerData___setstate_cython; PyObject *__pyx_n_s_XAttrNameT; PyObject *__pyx_kp_b__29; PyObject *__pyx_kp_u__47; PyObject *__pyx_n_s__49; PyObject *__pyx_n_s__50; PyObject *__pyx_n_s__52; PyObject *__pyx_n_s_abspath; PyObject *__pyx_n_s_access; PyObject *__pyx_n_s_aenter; PyObject *__pyx_n_s_aexit; PyObject *__pyx_n_s_allowed; PyObject *__pyx_n_s_args; PyObject *__pyx_n_s_async_wrapper; PyObject *__pyx_n_s_asyncio_coroutines; PyObject *__pyx_n_s_attr; PyObject *__pyx_n_s_attr_only; PyObject *__pyx_n_u_attr_timeout; PyObject *__pyx_n_s_await; PyObject *__pyx_n_s_buf; PyObject *__pyx_n_s_bufsize; PyObject *__pyx_n_s_bufvec; PyObject *__pyx_n_s_c; PyObject *__pyx_n_s_cbuf; PyObject *__pyx_n_s_cline_in_traceback; PyObject *__pyx_n_s_close; PyObject *__pyx_n_s_cname; PyObject *__pyx_n_s_cnamespace; PyObject *__pyx_n_s_cpath; PyObject *__pyx_n_s_create; PyObject *__pyx_n_s_ctx; PyObject *__pyx_n_s_current_task; PyObject *__pyx_n_s_current_trio_token; PyObject *__pyx_n_s_cvalue; PyObject *__pyx_n_s_daemon; PyObject *__pyx_n_s_data; PyObject *__pyx_n_s_debug; PyObject *__pyx_n_s_decode; PyObject *__pyx_n_s_default_options; PyObject *__pyx_n_u_default_permissions; PyObject *__pyx_n_s_deleted; PyObject *__pyx_n_s_dict; PyObject *__pyx_n_s_dict_2; PyObject *__pyx_n_s_direct_io; PyObject *__pyx_n_s_dirp; PyObject *__pyx_kp_u_disable; PyObject *__pyx_n_s_e; PyObject *__pyx_kp_u_enable; PyObject *__pyx_n_s_enable_acl; PyObject *__pyx_n_s_enable_writeback_cache; PyObject *__pyx_n_s_encode; PyObject *__pyx_n_s_enter; PyObject *__pyx_n_s_entry; PyObject *__pyx_n_u_entry_timeout; PyObject *__pyx_n_s_enumerate; PyObject *__pyx_n_s_errno; PyObject *__pyx_kp_u_errno_d; PyObject *__pyx_n_s_error; PyObject *__pyx_n_s_exc; PyObject *__pyx_n_s_exception; PyObject *__pyx_n_s_exit; PyObject *__pyx_n_s_f_args; PyObject *__pyx_n_u_f_bavail; PyObject *__pyx_n_u_f_bfree; PyObject *__pyx_n_u_f_blocks; PyObject *__pyx_n_u_f_bsize; PyObject *__pyx_n_u_f_favail; PyObject *__pyx_n_u_f_ffree; PyObject *__pyx_n_u_f_files; PyObject *__pyx_n_u_f_frsize; PyObject *__pyx_n_u_f_namemax; PyObject *__pyx_n_s_fd; PyObject *__pyx_n_s_fh; PyObject *__pyx_n_s_fi; PyObject *__pyx_n_s_fields; PyObject *__pyx_n_s_flags; PyObject *__pyx_n_s_flush; PyObject *__pyx_n_s_forget; PyObject *__pyx_n_s_fse; PyObject *__pyx_n_s_fsync; PyObject *__pyx_n_s_fsyncdir; PyObject *__pyx_n_s_fuse_access_async; PyObject *__pyx_kp_u_fuse_access_fuse_reply__failed_w; PyObject *__pyx_kp_u_fuse_buf_copy_failed_with; PyObject *__pyx_n_s_fuse_create_async; PyObject *__pyx_kp_u_fuse_create_fuse_reply__failed_w; PyObject *__pyx_n_s_fuse_flush_async; PyObject *__pyx_kp_u_fuse_flush_fuse_reply__failed_wi; PyObject *__pyx_n_s_fuse_fsync_async; PyObject *__pyx_kp_u_fuse_fsync_fuse_reply__failed_wi; PyObject *__pyx_n_s_fuse_fsyncdir_async; PyObject *__pyx_kp_u_fuse_fsyncdir_fuse_reply__failed; PyObject *__pyx_n_s_fuse_getattr_async; PyObject *__pyx_kp_u_fuse_getattr_fuse_reply__failed; PyObject *__pyx_n_s_fuse_getxattr_async; PyObject *__pyx_kp_u_fuse_getxattr_fuse_reply__failed; PyObject *__pyx_n_s_fuse_link_async; PyObject *__pyx_kp_u_fuse_link_fuse_reply__failed_wit; PyObject *__pyx_n_s_fuse_listxattr_async; PyObject *__pyx_kp_u_fuse_listxattr_fuse_reply__faile; PyObject *__pyx_n_s_fuse_lookup_async; PyObject *__pyx_kp_u_fuse_lookup_fuse_reply__failed_w; PyObject *__pyx_kp_u_fuse_lowlevel_notify_delete_retu; PyObject *__pyx_kp_u_fuse_lowlevel_notify_inval_entry; PyObject *__pyx_kp_u_fuse_lowlevel_notify_inval_inode; PyObject *__pyx_kp_u_fuse_lowlevel_notify_store_retur; PyObject *__pyx_n_s_fuse_mkdir_async; PyObject *__pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi; PyObject *__pyx_n_s_fuse_mknod_async; PyObject *__pyx_kp_u_fuse_mknod_fuse_reply__failed_wi; PyObject *__pyx_n_s_fuse_open_async; PyObject *__pyx_n_s_fuse_opendir_async; PyObject *__pyx_kp_u_fuse_opendir_fuse_reply__failed; PyObject *__pyx_n_s_fuse_read_async; PyObject *__pyx_kp_u_fuse_read_fuse_reply__failed_wit; PyObject *__pyx_n_s_fuse_readdirplus_async; PyObject *__pyx_kp_u_fuse_readdirplus_fuse_reply__fai; PyObject *__pyx_n_s_fuse_readlink_async; PyObject *__pyx_kp_u_fuse_readlink_fuse_reply__failed; PyObject *__pyx_n_s_fuse_release_async; PyObject *__pyx_kp_u_fuse_release_fuse_reply__failed; PyObject *__pyx_n_s_fuse_releasedir_async; PyObject *__pyx_kp_u_fuse_releasedir_fuse_reply__fail; PyObject *__pyx_n_s_fuse_removexattr_async; PyObject *__pyx_kp_u_fuse_removexattr_fuse_reply__fai; PyObject *__pyx_n_s_fuse_rename_async; PyObject *__pyx_kp_u_fuse_rename_fuse_reply__failed_w; PyObject *__pyx_n_s_fuse_rmdir_async; PyObject *__pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi; PyObject *__pyx_kp_u_fuse_session_mount_failed; PyObject *__pyx_kp_u_fuse_session_new_failed; PyObject *__pyx_kp_u_fuse_session_receive_buf_failed; PyObject *__pyx_n_s_fuse_setattr_async; PyObject *__pyx_kp_u_fuse_setattr_clock_gettime_CLOCK; PyObject *__pyx_kp_u_fuse_setattr_fuse_reply__failed; PyObject *__pyx_n_s_fuse_setxattr_async; PyObject *__pyx_kp_u_fuse_setxattr_fuse_reply__failed; PyObject *__pyx_n_u_fuse_stacktrace; PyObject *__pyx_n_s_fuse_statfs_async; PyObject *__pyx_kp_u_fuse_statfs_fuse_reply__failed_w; PyObject *__pyx_n_s_fuse_symlink_async; PyObject *__pyx_kp_u_fuse_symlink_fuse_reply__failed; PyObject *__pyx_n_s_fuse_unlink_async; PyObject *__pyx_kp_u_fuse_unlink_fuse_reply__failed_w; PyObject *__pyx_n_s_fuse_write_async; PyObject *__pyx_n_s_fuse_write_buf_async; PyObject *__pyx_kp_u_fuse_write_buf_fuse_reply__faile; PyObject *__pyx_kp_u_fuse_write_fuse_reply__failed_wi; PyObject *__pyx_n_s_g; PyObject *__pyx_kp_u_gc; PyObject *__pyx_n_u_generation; PyObject *__pyx_n_s_get; PyObject *__pyx_n_s_getLogger; PyObject *__pyx_n_s_get_sup_groups; PyObject *__pyx_n_s_getattr; PyObject *__pyx_n_s_getfilesystemencoding; PyObject *__pyx_n_s_getstate; PyObject *__pyx_n_s_getxattr; PyObject *__pyx_n_s_gids; PyObject *__pyx_n_s_ignore_enoent; PyObject *__pyx_n_s_import; PyObject *__pyx_n_s_init; PyObject *__pyx_n_s_initializing; PyObject *__pyx_n_s_ino; PyObject *__pyx_n_s_inode; PyObject *__pyx_n_s_inode_p; PyObject *__pyx_n_s_invalidate_entry; PyObject *__pyx_n_s_invalidate_entry_async; PyObject *__pyx_n_s_invalidate_inode; PyObject *__pyx_n_s_is_coroutine; PyObject *__pyx_kp_u_isenabled; PyObject *__pyx_n_s_items; PyObject *__pyx_n_s_join; PyObject *__pyx_n_s_k; PyObject *__pyx_n_s_keep_cache; PyObject *__pyx_n_s_len; PyObject *__pyx_n_s_len_s; PyObject *__pyx_n_s_line; PyObject *__pyx_n_s_link; PyObject *__pyx_n_s_listdir; PyObject *__pyx_n_s_listxattr; PyObject *__pyx_n_s_log; PyObject *__pyx_n_s_logging; PyObject *__pyx_n_s_lookup; PyObject *__pyx_n_s_lowlevel; PyObject *__pyx_n_s_main; PyObject *__pyx_n_s_main_2; PyObject *__pyx_n_s_mask; PyObject *__pyx_n_s_max_tasks; PyObject *__pyx_n_s_min_tasks; PyObject *__pyx_n_s_mkdir; PyObject *__pyx_n_s_mknod; PyObject *__pyx_n_s_mountpoint; PyObject *__pyx_kp_u_mountpoint__argument_must_be_of; PyObject *__pyx_n_s_name; PyObject *__pyx_n_s_name_2; PyObject *__pyx_kp_u_name_argument_must_be_of_type_s; PyObject *__pyx_n_s_name_b; PyObject *__pyx_n_s_names; PyObject *__pyx_n_s_namespace; PyObject *__pyx_kp_u_namespace_parameter_must_be_sys; PyObject *__pyx_n_s_new; PyObject *__pyx_n_s_newname; PyObject *__pyx_n_s_newparent; PyObject *__pyx_n_s_next_id; PyObject *__pyx_kp_s_no_default___reduce___due_to_non; PyObject *__pyx_n_s_nonseekable; PyObject *__pyx_n_s_notify_closing; PyObject *__pyx_n_s_notify_loop; PyObject *__pyx_n_s_notify_store; PyObject *__pyx_n_s_now; PyObject *__pyx_n_s_nursery; PyObject *__pyx_kp_b_o; PyObject *__pyx_n_s_off; PyObject *__pyx_n_s_offset; PyObject *__pyx_n_s_open; PyObject *__pyx_n_s_open_nursery; PyObject *__pyx_n_s_opendir; PyObject *__pyx_n_s_ops; PyObject *__pyx_n_s_options; PyObject *__pyx_n_s_os; PyObject *__pyx_n_s_os_path; PyObject *__pyx_n_s_path; PyObject *__pyx_kp_u_path_argument_must_be_of_type_s; PyObject *__pyx_n_s_path_b; PyObject *__pyx_n_s_pbuf; PyObject *__pyx_n_s_pickle; PyObject *__pyx_n_s_pid; PyObject *__pyx_kp_u_proc_d_status; PyObject *__pyx_n_s_put; PyObject *__pyx_kp_u_py_retval_was_not_awaited_please; PyObject *__pyx_n_s_pybuf; PyObject *__pyx_n_b_pyfuse3; PyObject *__pyx_n_s_pyfuse3; PyObject *__pyx_n_u_pyfuse3; PyObject *__pyx_n_s_pyfuse3_2; PyObject *__pyx_kp_u_pyfuse3___init; PyObject *__pyx_kp_u_pyfuse_02d; PyObject *__pyx_n_s_pyx_PickleError; PyObject *__pyx_n_s_pyx_checksum; PyObject *__pyx_n_s_pyx_result; PyObject *__pyx_n_s_pyx_state; PyObject *__pyx_n_s_pyx_type; PyObject *__pyx_n_s_pyx_unpickle_RequestContext; PyObject *__pyx_n_s_pyx_unpickle__WorkerData; PyObject *__pyx_n_s_pyx_vtable; PyObject *__pyx_n_s_queue; PyObject *__pyx_n_u_r; PyObject *__pyx_n_s_range; PyObject *__pyx_n_s_read; PyObject *__pyx_n_s_readdir; PyObject *__pyx_n_s_readdir_reply; PyObject *__pyx_n_s_readlink; PyObject *__pyx_n_s_reduce; PyObject *__pyx_n_s_reduce_cython; PyObject *__pyx_n_s_reduce_ex; PyObject *__pyx_n_s_release; PyObject *__pyx_n_s_releasedir; PyObject *__pyx_n_s_removexattr; PyObject *__pyx_n_s_rename; PyObject *__pyx_n_s_req; PyObject *__pyx_n_s_res; PyObject *__pyx_n_s_ret; PyObject *__pyx_n_s_rmdir; PyObject *__pyx_kp_u_s_No_tasks_waiting_starting_ano; PyObject *__pyx_kp_u_s_terminated; PyObject *__pyx_kp_u_s_too_many_idle_tasks_d_total_d; PyObject *__pyx_n_s_self; PyObject *__pyx_kp_s_self_req_cannot_be_converted_to; PyObject *__pyx_n_s_send; PyObject *__pyx_n_s_session_loop; PyObject *__pyx_n_s_setattr; PyObject *__pyx_n_s_setstate; PyObject *__pyx_n_s_setstate_cython; PyObject *__pyx_n_s_setxattr; PyObject *__pyx_n_s_size_guess; PyObject *__pyx_n_s_slen; PyObject *__pyx_n_s_spec; PyObject *__pyx_n_s_split; PyObject *__pyx_kp_s_src_pyfuse3___init___pyx; PyObject *__pyx_kp_s_src_pyfuse3_handlers_pxi; PyObject *__pyx_kp_s_src_pyfuse3_internal_pxi; PyObject *__pyx_n_u_st_atime_ns; PyObject *__pyx_n_u_st_birthtime_ns; PyObject *__pyx_n_u_st_blksize; PyObject *__pyx_n_u_st_blocks; PyObject *__pyx_n_u_st_ctime_ns; PyObject *__pyx_n_u_st_gid; PyObject *__pyx_n_u_st_ino; PyObject *__pyx_n_u_st_mode; PyObject *__pyx_n_u_st_mtime_ns; PyObject *__pyx_n_u_st_nlink; PyObject *__pyx_n_u_st_rdev; PyObject *__pyx_n_u_st_size; PyObject *__pyx_n_u_st_uid; PyObject *__pyx_n_s_stacktrace; PyObject *__pyx_n_s_start; PyObject *__pyx_n_s_start_soon; PyObject *__pyx_n_s_startswith; PyObject *__pyx_n_s_state; PyObject *__pyx_n_s_statfs; PyObject *__pyx_n_s_stats; PyObject *__pyx_n_s_strerror; PyObject *__pyx_kp_s_stringsource; PyObject *__pyx_n_s_supports_dot_lookup; PyObject *__pyx_n_u_surrogateescape; PyObject *__pyx_n_s_symlink; PyObject *__pyx_n_s_syncfs; PyObject *__pyx_n_s_sys; PyObject *__pyx_n_u_system; PyObject *__pyx_n_s_t; PyObject *__pyx_n_s_target; PyObject *__pyx_n_s_terminate; PyObject *__pyx_kp_u_terminating_notify_thread; PyObject *__pyx_n_s_test; PyObject *__pyx_n_s_threading; PyObject *__pyx_n_s_throw; PyObject *__pyx_n_s_tmp; PyObject *__pyx_n_s_to_set; PyObject *__pyx_n_s_token; PyObject *__pyx_n_s_trio; PyObject *__pyx_n_s_trio_token; PyObject *__pyx_n_s_typing; PyObject *__pyx_kp_u_unknown_flag_s_o; PyObject *__pyx_n_s_unlink; PyObject *__pyx_n_s_unmount; PyObject *__pyx_n_s_update; PyObject *__pyx_kp_u_us_ascii; PyObject *__pyx_n_s_use_setstate; PyObject *__pyx_n_u_user; PyObject *__pyx_n_s_v; PyObject *__pyx_n_s_value; PyObject *__pyx_n_s_version; PyObject *__pyx_n_s_wait_fuse_readable; PyObject *__pyx_n_s_wait_readable; PyObject *__pyx_n_s_write; PyObject *__pyx_n_s_x; PyObject *__pyx_int_0; PyObject *__pyx_int_1; PyObject *__pyx_int_35895208; PyObject *__pyx_int_44617694; PyObject *__pyx_int_144710093; PyObject *__pyx_int_154557683; PyObject *__pyx_int_240542287; PyObject *__pyx_int_244161614; PyObject *__pyx_int_1000000000; PyObject *__pyx_tuple_; PyObject *__pyx_slice__45; PyObject *__pyx_tuple__15; PyObject *__pyx_tuple__34; PyObject *__pyx_tuple__36; PyObject *__pyx_tuple__37; PyObject *__pyx_tuple__38; PyObject *__pyx_tuple__39; PyObject *__pyx_tuple__40; PyObject *__pyx_tuple__41; PyObject *__pyx_tuple__42; PyObject *__pyx_tuple__44; PyObject *__pyx_tuple__46; PyObject *__pyx_tuple__48; PyObject *__pyx_tuple__51; PyObject *__pyx_tuple__53; PyObject *__pyx_tuple__54; PyObject *__pyx_tuple__56; PyObject *__pyx_tuple__58; PyObject *__pyx_tuple__59; PyObject *__pyx_tuple__60; PyObject *__pyx_tuple__61; PyObject *__pyx_tuple__62; PyObject *__pyx_tuple__63; PyObject *__pyx_tuple__64; PyObject *__pyx_tuple__65; PyObject *__pyx_tuple__66; PyObject *__pyx_tuple__67; PyObject *__pyx_tuple__68; PyObject *__pyx_tuple__69; PyObject *__pyx_tuple__70; PyObject *__pyx_tuple__71; PyObject *__pyx_tuple__72; PyObject *__pyx_tuple__75; PyObject *__pyx_tuple__76; PyObject *__pyx_tuple__77; PyObject *__pyx_tuple__78; PyObject *__pyx_tuple__79; PyObject *__pyx_tuple__80; PyObject *__pyx_tuple__81; PyObject *__pyx_tuple__82; PyObject *__pyx_tuple__84; PyObject *__pyx_tuple__87; PyObject *__pyx_tuple__94; PyObject *__pyx_tuple__96; PyObject *__pyx_codeobj__2; PyObject *__pyx_codeobj__3; PyObject *__pyx_codeobj__4; PyObject *__pyx_codeobj__5; PyObject *__pyx_codeobj__6; PyObject *__pyx_codeobj__7; PyObject *__pyx_codeobj__8; PyObject *__pyx_codeobj__9; PyObject *__pyx_tuple__108; PyObject *__pyx_tuple__110; PyObject *__pyx_tuple__112; PyObject *__pyx_tuple__114; PyObject *__pyx_tuple__115; PyObject *__pyx_tuple__117; PyObject *__pyx_tuple__118; PyObject *__pyx_tuple__120; PyObject *__pyx_tuple__122; PyObject *__pyx_tuple__124; PyObject *__pyx_tuple__125; PyObject *__pyx_tuple__127; PyObject *__pyx_tuple__128; PyObject *__pyx_tuple__130; PyObject *__pyx_tuple__132; PyObject *__pyx_tuple__133; PyObject *__pyx_tuple__135; PyObject *__pyx_tuple__137; PyObject *__pyx_tuple__139; PyObject *__pyx_codeobj__10; PyObject *__pyx_codeobj__11; PyObject *__pyx_codeobj__12; PyObject *__pyx_codeobj__13; PyObject *__pyx_codeobj__14; PyObject *__pyx_codeobj__16; PyObject *__pyx_codeobj__17; PyObject *__pyx_codeobj__18; PyObject *__pyx_codeobj__19; PyObject *__pyx_codeobj__20; PyObject *__pyx_codeobj__21; PyObject *__pyx_codeobj__22; PyObject *__pyx_codeobj__23; PyObject *__pyx_codeobj__24; PyObject *__pyx_codeobj__25; PyObject *__pyx_codeobj__26; PyObject *__pyx_codeobj__27; PyObject *__pyx_codeobj__28; PyObject *__pyx_codeobj__30; PyObject *__pyx_codeobj__31; PyObject *__pyx_codeobj__32; PyObject *__pyx_codeobj__33; PyObject *__pyx_codeobj__35; PyObject *__pyx_codeobj__43; PyObject *__pyx_codeobj__55; PyObject *__pyx_codeobj__57; PyObject *__pyx_codeobj__73; PyObject *__pyx_codeobj__74; PyObject *__pyx_codeobj__83; PyObject *__pyx_codeobj__85; PyObject *__pyx_codeobj__86; PyObject *__pyx_codeobj__88; PyObject *__pyx_codeobj__89; PyObject *__pyx_codeobj__90; PyObject *__pyx_codeobj__91; PyObject *__pyx_codeobj__92; PyObject *__pyx_codeobj__93; PyObject *__pyx_codeobj__95; PyObject *__pyx_codeobj__97; PyObject *__pyx_codeobj__98; PyObject *__pyx_codeobj__99; PyObject *__pyx_codeobj__100; PyObject *__pyx_codeobj__101; PyObject *__pyx_codeobj__102; PyObject *__pyx_codeobj__103; PyObject *__pyx_codeobj__104; PyObject *__pyx_codeobj__105; PyObject *__pyx_codeobj__106; PyObject *__pyx_codeobj__107; PyObject *__pyx_codeobj__109; PyObject *__pyx_codeobj__111; PyObject *__pyx_codeobj__113; PyObject *__pyx_codeobj__116; PyObject *__pyx_codeobj__119; PyObject *__pyx_codeobj__121; PyObject *__pyx_codeobj__123; PyObject *__pyx_codeobj__126; PyObject *__pyx_codeobj__129; PyObject *__pyx_codeobj__131; PyObject *__pyx_codeobj__134; PyObject *__pyx_codeobj__136; PyObject *__pyx_codeobj__138; PyObject *__pyx_codeobj__140; PyObject *__pyx_codeobj__141; } __pyx_mstate; #if CYTHON_USE_MODULE_STATE #ifdef __cplusplus namespace { extern struct PyModuleDef __pyx_moduledef; } /* anonymous namespace */ #else static struct PyModuleDef __pyx_moduledef; #endif #define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) #define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) #define __pyx_m (PyState_FindModule(&__pyx_moduledef)) #else static __pyx_mstate __pyx_mstate_global_static = #ifdef __cplusplus {}; #else {0}; #endif static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; #endif /* #### Code section: module_state_clear ### */ #if CYTHON_USE_MODULE_STATE static int __pyx_m_clear(PyObject *m) { __pyx_mstate *clear_module_state = __pyx_mstate(m); if (!clear_module_state) return 0; Py_CLEAR(clear_module_state->__pyx_d); Py_CLEAR(clear_module_state->__pyx_b); Py_CLEAR(clear_module_state->__pyx_cython_runtime); Py_CLEAR(clear_module_state->__pyx_empty_tuple); Py_CLEAR(clear_module_state->__pyx_empty_bytes); Py_CLEAR(clear_module_state->__pyx_empty_unicode); #ifdef __Pyx_CyFunction_USED Py_CLEAR(clear_module_state->__pyx_CyFunctionType); #endif #ifdef __Pyx_FusedFunction_USED Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); #endif Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3__Container); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3__Container); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_ReaddirToken); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_ReaddirToken); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3__WorkerData); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3__WorkerData); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_RequestContext); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_RequestContext); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_SetattrFields); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_SetattrFields); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_EntryAttributes); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_EntryAttributes); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_FileInfo); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_FileInfo); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_StatvfsData); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_StatvfsData); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3_FUSEError); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3_FUSEError); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop); Py_CLEAR(clear_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main); Py_CLEAR(clear_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_31_main); Py_CLEAR(clear_module_state->__pyx_kp_u_Calling_fuse_session_destroy); Py_CLEAR(clear_module_state->__pyx_kp_u_Calling_fuse_session_mount); Py_CLEAR(clear_module_state->__pyx_kp_u_Calling_fuse_session_new); Py_CLEAR(clear_module_state->__pyx_kp_u_Calling_fuse_session_unmount); Py_CLEAR(clear_module_state->__pyx_n_s_ClosedResourceError); Py_CLEAR(clear_module_state->__pyx_n_s_Container); Py_CLEAR(clear_module_state->__pyx_n_s_Container___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Container___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_u_ENOATTR); Py_CLEAR(clear_module_state->__pyx_n_s_EntryAttributes); Py_CLEAR(clear_module_state->__pyx_n_s_EntryAttributes___getstate); Py_CLEAR(clear_module_state->__pyx_n_s_EntryAttributes___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_EntryAttributes___setstate); Py_CLEAR(clear_module_state->__pyx_n_s_EntryAttributes___setstate_cytho); Py_CLEAR(clear_module_state->__pyx_n_s_FUSEError); Py_CLEAR(clear_module_state->__pyx_n_s_FUSEError___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_FUSEError___setstate_cython); Py_CLEAR(clear_module_state->__pyx_kp_u_FUSE_fd_about_to_be_closed); Py_CLEAR(clear_module_state->__pyx_kp_u_FUSE_session_exit_flag_set_while); Py_CLEAR(clear_module_state->__pyx_kp_u_Failed_to_submit_invalidate_entr); Py_CLEAR(clear_module_state->__pyx_n_s_FileHandleT); Py_CLEAR(clear_module_state->__pyx_n_s_FileInfo); Py_CLEAR(clear_module_state->__pyx_n_s_FileInfo___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_FileInfo___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_FileNameT); Py_CLEAR(clear_module_state->__pyx_n_s_FileNotFoundError); Py_CLEAR(clear_module_state->__pyx_n_s_FlagT); Py_CLEAR(clear_module_state->__pyx_kp_u_Groups); Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); Py_CLEAR(clear_module_state->__pyx_kp_u_Initializing_pyfuse3); Py_CLEAR(clear_module_state->__pyx_n_s_InodeT); Py_CLEAR(clear_module_state->__pyx_kp_u_Kernel_too_old_pyfuse3_requires); Py_CLEAR(clear_module_state->__pyx_n_s_Lock); Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError); Py_CLEAR(clear_module_state->__pyx_n_s_ModeT); Py_CLEAR(clear_module_state->__pyx_n_s_NANOS_PER_SEC); Py_CLEAR(clear_module_state->__pyx_kp_u_Need_to_call_init_before_main); Py_CLEAR(clear_module_state->__pyx_n_s_OSError); Py_CLEAR(clear_module_state->__pyx_n_s_O_DIRECTORY); Py_CLEAR(clear_module_state->__pyx_n_s_Operations); Py_CLEAR(clear_module_state->__pyx_n_s_OverflowError); Py_CLEAR(clear_module_state->__pyx_n_s_PickleError); Py_CLEAR(clear_module_state->__pyx_n_s_PicklingError); Py_CLEAR(clear_module_state->__pyx_n_s_Queue); Py_CLEAR(clear_module_state->__pyx_n_u_RENAME_EXCHANGE); Py_CLEAR(clear_module_state->__pyx_n_u_RENAME_NOREPLACE); Py_CLEAR(clear_module_state->__pyx_n_s_ROOT_INODE); Py_CLEAR(clear_module_state->__pyx_n_s_ReaddirToken); Py_CLEAR(clear_module_state->__pyx_n_s_ReaddirToken___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_ReaddirToken___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_RequestContext); Py_CLEAR(clear_module_state->__pyx_n_s_RequestContext___getstate); Py_CLEAR(clear_module_state->__pyx_n_s_RequestContext___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_RequestContext___setstate_cython); Py_CLEAR(clear_module_state->__pyx_kp_u_RequestContext_instances_can_t_b); Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeError); Py_CLEAR(clear_module_state->__pyx_n_s_SetattrFields); Py_CLEAR(clear_module_state->__pyx_n_s_SetattrFields___getstate); Py_CLEAR(clear_module_state->__pyx_n_s_SetattrFields___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_SetattrFields___setstate_cython); Py_CLEAR(clear_module_state->__pyx_kp_u_SetattrFields_instances_can_t_be); Py_CLEAR(clear_module_state->__pyx_kp_u_Starting_notify_worker); Py_CLEAR(clear_module_state->__pyx_n_s_StatvfsData); Py_CLEAR(clear_module_state->__pyx_n_s_StatvfsData___getstate); Py_CLEAR(clear_module_state->__pyx_n_s_StatvfsData___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_StatvfsData___setstate); Py_CLEAR(clear_module_state->__pyx_n_s_StatvfsData___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Thread); Py_CLEAR(clear_module_state->__pyx_n_s_TypeError); Py_CLEAR(clear_module_state->__pyx_kp_u_Unable_to_parse_s); Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); Py_CLEAR(clear_module_state->__pyx_kp_u_Value_too_long_to_convert_to_Pyt); Py_CLEAR(clear_module_state->__pyx_n_s_WorkerData); Py_CLEAR(clear_module_state->__pyx_n_s_WorkerData___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_WorkerData___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_XAttrNameT); Py_CLEAR(clear_module_state->__pyx_kp_b__29); Py_CLEAR(clear_module_state->__pyx_kp_u__47); Py_CLEAR(clear_module_state->__pyx_n_s__49); Py_CLEAR(clear_module_state->__pyx_n_s__50); Py_CLEAR(clear_module_state->__pyx_n_s__52); Py_CLEAR(clear_module_state->__pyx_n_s_abspath); Py_CLEAR(clear_module_state->__pyx_n_s_access); Py_CLEAR(clear_module_state->__pyx_n_s_aenter); Py_CLEAR(clear_module_state->__pyx_n_s_aexit); Py_CLEAR(clear_module_state->__pyx_n_s_allowed); Py_CLEAR(clear_module_state->__pyx_n_s_args); Py_CLEAR(clear_module_state->__pyx_n_s_async_wrapper); Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); Py_CLEAR(clear_module_state->__pyx_n_s_attr); Py_CLEAR(clear_module_state->__pyx_n_s_attr_only); Py_CLEAR(clear_module_state->__pyx_n_u_attr_timeout); Py_CLEAR(clear_module_state->__pyx_n_s_await); Py_CLEAR(clear_module_state->__pyx_n_s_buf); Py_CLEAR(clear_module_state->__pyx_n_s_bufsize); Py_CLEAR(clear_module_state->__pyx_n_s_bufvec); Py_CLEAR(clear_module_state->__pyx_n_s_c); Py_CLEAR(clear_module_state->__pyx_n_s_cbuf); Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); Py_CLEAR(clear_module_state->__pyx_n_s_close); Py_CLEAR(clear_module_state->__pyx_n_s_cname); Py_CLEAR(clear_module_state->__pyx_n_s_cnamespace); Py_CLEAR(clear_module_state->__pyx_n_s_cpath); Py_CLEAR(clear_module_state->__pyx_n_s_create); Py_CLEAR(clear_module_state->__pyx_n_s_ctx); Py_CLEAR(clear_module_state->__pyx_n_s_current_task); Py_CLEAR(clear_module_state->__pyx_n_s_current_trio_token); Py_CLEAR(clear_module_state->__pyx_n_s_cvalue); Py_CLEAR(clear_module_state->__pyx_n_s_daemon); Py_CLEAR(clear_module_state->__pyx_n_s_data); Py_CLEAR(clear_module_state->__pyx_n_s_debug); Py_CLEAR(clear_module_state->__pyx_n_s_decode); Py_CLEAR(clear_module_state->__pyx_n_s_default_options); Py_CLEAR(clear_module_state->__pyx_n_u_default_permissions); Py_CLEAR(clear_module_state->__pyx_n_s_deleted); Py_CLEAR(clear_module_state->__pyx_n_s_dict); Py_CLEAR(clear_module_state->__pyx_n_s_dict_2); Py_CLEAR(clear_module_state->__pyx_n_s_direct_io); Py_CLEAR(clear_module_state->__pyx_n_s_dirp); Py_CLEAR(clear_module_state->__pyx_kp_u_disable); Py_CLEAR(clear_module_state->__pyx_n_s_e); Py_CLEAR(clear_module_state->__pyx_kp_u_enable); Py_CLEAR(clear_module_state->__pyx_n_s_enable_acl); Py_CLEAR(clear_module_state->__pyx_n_s_enable_writeback_cache); Py_CLEAR(clear_module_state->__pyx_n_s_encode); Py_CLEAR(clear_module_state->__pyx_n_s_enter); Py_CLEAR(clear_module_state->__pyx_n_s_entry); Py_CLEAR(clear_module_state->__pyx_n_u_entry_timeout); Py_CLEAR(clear_module_state->__pyx_n_s_enumerate); Py_CLEAR(clear_module_state->__pyx_n_s_errno); Py_CLEAR(clear_module_state->__pyx_kp_u_errno_d); Py_CLEAR(clear_module_state->__pyx_n_s_error); Py_CLEAR(clear_module_state->__pyx_n_s_exc); Py_CLEAR(clear_module_state->__pyx_n_s_exception); Py_CLEAR(clear_module_state->__pyx_n_s_exit); Py_CLEAR(clear_module_state->__pyx_n_s_f_args); Py_CLEAR(clear_module_state->__pyx_n_u_f_bavail); Py_CLEAR(clear_module_state->__pyx_n_u_f_bfree); Py_CLEAR(clear_module_state->__pyx_n_u_f_blocks); Py_CLEAR(clear_module_state->__pyx_n_u_f_bsize); Py_CLEAR(clear_module_state->__pyx_n_u_f_favail); Py_CLEAR(clear_module_state->__pyx_n_u_f_ffree); Py_CLEAR(clear_module_state->__pyx_n_u_f_files); Py_CLEAR(clear_module_state->__pyx_n_u_f_frsize); Py_CLEAR(clear_module_state->__pyx_n_u_f_namemax); Py_CLEAR(clear_module_state->__pyx_n_s_fd); Py_CLEAR(clear_module_state->__pyx_n_s_fh); Py_CLEAR(clear_module_state->__pyx_n_s_fi); Py_CLEAR(clear_module_state->__pyx_n_s_fields); Py_CLEAR(clear_module_state->__pyx_n_s_flags); Py_CLEAR(clear_module_state->__pyx_n_s_flush); Py_CLEAR(clear_module_state->__pyx_n_s_forget); Py_CLEAR(clear_module_state->__pyx_n_s_fse); Py_CLEAR(clear_module_state->__pyx_n_s_fsync); Py_CLEAR(clear_module_state->__pyx_n_s_fsyncdir); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_access_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_access_fuse_reply__failed_w); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_buf_copy_failed_with); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_create_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_create_fuse_reply__failed_w); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_flush_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_flush_fuse_reply__failed_wi); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_fsync_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_fsync_fuse_reply__failed_wi); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_fsyncdir_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_fsyncdir_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_getattr_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_getattr_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_getxattr_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_getxattr_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_link_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_link_fuse_reply__failed_wit); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_listxattr_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_listxattr_fuse_reply__faile); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_lookup_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_lookup_fuse_reply__failed_w); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_lowlevel_notify_delete_retu); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_lowlevel_notify_inval_entry); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_lowlevel_notify_inval_inode); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_lowlevel_notify_store_retur); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_mkdir_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_mknod_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_mknod_fuse_reply__failed_wi); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_open_async); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_opendir_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_opendir_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_read_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_read_fuse_reply__failed_wit); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_readdirplus_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_readdirplus_fuse_reply__fai); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_readlink_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_readlink_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_release_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_release_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_releasedir_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_releasedir_fuse_reply__fail); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_removexattr_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_removexattr_fuse_reply__fai); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_rename_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_rename_fuse_reply__failed_w); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_rmdir_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_session_mount_failed); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_session_new_failed); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_session_receive_buf_failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_setattr_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_setattr_clock_gettime_CLOCK); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_setattr_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_setxattr_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_setxattr_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_u_fuse_stacktrace); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_statfs_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_statfs_fuse_reply__failed_w); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_symlink_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_symlink_fuse_reply__failed); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_unlink_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_unlink_fuse_reply__failed_w); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_write_async); Py_CLEAR(clear_module_state->__pyx_n_s_fuse_write_buf_async); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_write_buf_fuse_reply__faile); Py_CLEAR(clear_module_state->__pyx_kp_u_fuse_write_fuse_reply__failed_wi); Py_CLEAR(clear_module_state->__pyx_n_s_g); Py_CLEAR(clear_module_state->__pyx_kp_u_gc); Py_CLEAR(clear_module_state->__pyx_n_u_generation); Py_CLEAR(clear_module_state->__pyx_n_s_get); Py_CLEAR(clear_module_state->__pyx_n_s_getLogger); Py_CLEAR(clear_module_state->__pyx_n_s_get_sup_groups); Py_CLEAR(clear_module_state->__pyx_n_s_getattr); Py_CLEAR(clear_module_state->__pyx_n_s_getfilesystemencoding); Py_CLEAR(clear_module_state->__pyx_n_s_getstate); Py_CLEAR(clear_module_state->__pyx_n_s_getxattr); Py_CLEAR(clear_module_state->__pyx_n_s_gids); Py_CLEAR(clear_module_state->__pyx_n_s_ignore_enoent); Py_CLEAR(clear_module_state->__pyx_n_s_import); Py_CLEAR(clear_module_state->__pyx_n_s_init); Py_CLEAR(clear_module_state->__pyx_n_s_initializing); Py_CLEAR(clear_module_state->__pyx_n_s_ino); Py_CLEAR(clear_module_state->__pyx_n_s_inode); Py_CLEAR(clear_module_state->__pyx_n_s_inode_p); Py_CLEAR(clear_module_state->__pyx_n_s_invalidate_entry); Py_CLEAR(clear_module_state->__pyx_n_s_invalidate_entry_async); Py_CLEAR(clear_module_state->__pyx_n_s_invalidate_inode); Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); Py_CLEAR(clear_module_state->__pyx_n_s_items); Py_CLEAR(clear_module_state->__pyx_n_s_join); Py_CLEAR(clear_module_state->__pyx_n_s_k); Py_CLEAR(clear_module_state->__pyx_n_s_keep_cache); Py_CLEAR(clear_module_state->__pyx_n_s_len); Py_CLEAR(clear_module_state->__pyx_n_s_len_s); Py_CLEAR(clear_module_state->__pyx_n_s_line); Py_CLEAR(clear_module_state->__pyx_n_s_link); Py_CLEAR(clear_module_state->__pyx_n_s_listdir); Py_CLEAR(clear_module_state->__pyx_n_s_listxattr); Py_CLEAR(clear_module_state->__pyx_n_s_log); Py_CLEAR(clear_module_state->__pyx_n_s_logging); Py_CLEAR(clear_module_state->__pyx_n_s_lookup); Py_CLEAR(clear_module_state->__pyx_n_s_lowlevel); Py_CLEAR(clear_module_state->__pyx_n_s_main); Py_CLEAR(clear_module_state->__pyx_n_s_main_2); Py_CLEAR(clear_module_state->__pyx_n_s_mask); Py_CLEAR(clear_module_state->__pyx_n_s_max_tasks); Py_CLEAR(clear_module_state->__pyx_n_s_min_tasks); Py_CLEAR(clear_module_state->__pyx_n_s_mkdir); Py_CLEAR(clear_module_state->__pyx_n_s_mknod); Py_CLEAR(clear_module_state->__pyx_n_s_mountpoint); Py_CLEAR(clear_module_state->__pyx_kp_u_mountpoint__argument_must_be_of); Py_CLEAR(clear_module_state->__pyx_n_s_name); Py_CLEAR(clear_module_state->__pyx_n_s_name_2); Py_CLEAR(clear_module_state->__pyx_kp_u_name_argument_must_be_of_type_s); Py_CLEAR(clear_module_state->__pyx_n_s_name_b); Py_CLEAR(clear_module_state->__pyx_n_s_names); Py_CLEAR(clear_module_state->__pyx_n_s_namespace); Py_CLEAR(clear_module_state->__pyx_kp_u_namespace_parameter_must_be_sys); Py_CLEAR(clear_module_state->__pyx_n_s_new); Py_CLEAR(clear_module_state->__pyx_n_s_newname); Py_CLEAR(clear_module_state->__pyx_n_s_newparent); Py_CLEAR(clear_module_state->__pyx_n_s_next_id); Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non); Py_CLEAR(clear_module_state->__pyx_n_s_nonseekable); Py_CLEAR(clear_module_state->__pyx_n_s_notify_closing); Py_CLEAR(clear_module_state->__pyx_n_s_notify_loop); Py_CLEAR(clear_module_state->__pyx_n_s_notify_store); Py_CLEAR(clear_module_state->__pyx_n_s_now); Py_CLEAR(clear_module_state->__pyx_n_s_nursery); Py_CLEAR(clear_module_state->__pyx_kp_b_o); Py_CLEAR(clear_module_state->__pyx_n_s_off); Py_CLEAR(clear_module_state->__pyx_n_s_offset); Py_CLEAR(clear_module_state->__pyx_n_s_open); Py_CLEAR(clear_module_state->__pyx_n_s_open_nursery); Py_CLEAR(clear_module_state->__pyx_n_s_opendir); Py_CLEAR(clear_module_state->__pyx_n_s_ops); Py_CLEAR(clear_module_state->__pyx_n_s_options); Py_CLEAR(clear_module_state->__pyx_n_s_os); Py_CLEAR(clear_module_state->__pyx_n_s_os_path); Py_CLEAR(clear_module_state->__pyx_n_s_path); Py_CLEAR(clear_module_state->__pyx_kp_u_path_argument_must_be_of_type_s); Py_CLEAR(clear_module_state->__pyx_n_s_path_b); Py_CLEAR(clear_module_state->__pyx_n_s_pbuf); Py_CLEAR(clear_module_state->__pyx_n_s_pickle); Py_CLEAR(clear_module_state->__pyx_n_s_pid); Py_CLEAR(clear_module_state->__pyx_kp_u_proc_d_status); Py_CLEAR(clear_module_state->__pyx_n_s_put); Py_CLEAR(clear_module_state->__pyx_kp_u_py_retval_was_not_awaited_please); Py_CLEAR(clear_module_state->__pyx_n_s_pybuf); Py_CLEAR(clear_module_state->__pyx_n_b_pyfuse3); Py_CLEAR(clear_module_state->__pyx_n_s_pyfuse3); Py_CLEAR(clear_module_state->__pyx_n_u_pyfuse3); Py_CLEAR(clear_module_state->__pyx_n_s_pyfuse3_2); Py_CLEAR(clear_module_state->__pyx_kp_u_pyfuse3___init); Py_CLEAR(clear_module_state->__pyx_kp_u_pyfuse_02d); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_RequestContext); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__WorkerData); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable); Py_CLEAR(clear_module_state->__pyx_n_s_queue); Py_CLEAR(clear_module_state->__pyx_n_u_r); Py_CLEAR(clear_module_state->__pyx_n_s_range); Py_CLEAR(clear_module_state->__pyx_n_s_read); Py_CLEAR(clear_module_state->__pyx_n_s_readdir); Py_CLEAR(clear_module_state->__pyx_n_s_readdir_reply); Py_CLEAR(clear_module_state->__pyx_n_s_readlink); Py_CLEAR(clear_module_state->__pyx_n_s_reduce); Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex); Py_CLEAR(clear_module_state->__pyx_n_s_release); Py_CLEAR(clear_module_state->__pyx_n_s_releasedir); Py_CLEAR(clear_module_state->__pyx_n_s_removexattr); Py_CLEAR(clear_module_state->__pyx_n_s_rename); Py_CLEAR(clear_module_state->__pyx_n_s_req); Py_CLEAR(clear_module_state->__pyx_n_s_res); Py_CLEAR(clear_module_state->__pyx_n_s_ret); Py_CLEAR(clear_module_state->__pyx_n_s_rmdir); Py_CLEAR(clear_module_state->__pyx_kp_u_s_No_tasks_waiting_starting_ano); Py_CLEAR(clear_module_state->__pyx_kp_u_s_terminated); Py_CLEAR(clear_module_state->__pyx_kp_u_s_too_many_idle_tasks_d_total_d); Py_CLEAR(clear_module_state->__pyx_n_s_self); Py_CLEAR(clear_module_state->__pyx_kp_s_self_req_cannot_be_converted_to); Py_CLEAR(clear_module_state->__pyx_n_s_send); Py_CLEAR(clear_module_state->__pyx_n_s_session_loop); Py_CLEAR(clear_module_state->__pyx_n_s_setattr); Py_CLEAR(clear_module_state->__pyx_n_s_setstate); Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_setxattr); Py_CLEAR(clear_module_state->__pyx_n_s_size_guess); Py_CLEAR(clear_module_state->__pyx_n_s_slen); Py_CLEAR(clear_module_state->__pyx_n_s_spec); Py_CLEAR(clear_module_state->__pyx_n_s_split); Py_CLEAR(clear_module_state->__pyx_kp_s_src_pyfuse3___init___pyx); Py_CLEAR(clear_module_state->__pyx_kp_s_src_pyfuse3_handlers_pxi); Py_CLEAR(clear_module_state->__pyx_kp_s_src_pyfuse3_internal_pxi); Py_CLEAR(clear_module_state->__pyx_n_u_st_atime_ns); Py_CLEAR(clear_module_state->__pyx_n_u_st_birthtime_ns); Py_CLEAR(clear_module_state->__pyx_n_u_st_blksize); Py_CLEAR(clear_module_state->__pyx_n_u_st_blocks); Py_CLEAR(clear_module_state->__pyx_n_u_st_ctime_ns); Py_CLEAR(clear_module_state->__pyx_n_u_st_gid); Py_CLEAR(clear_module_state->__pyx_n_u_st_ino); Py_CLEAR(clear_module_state->__pyx_n_u_st_mode); Py_CLEAR(clear_module_state->__pyx_n_u_st_mtime_ns); Py_CLEAR(clear_module_state->__pyx_n_u_st_nlink); Py_CLEAR(clear_module_state->__pyx_n_u_st_rdev); Py_CLEAR(clear_module_state->__pyx_n_u_st_size); Py_CLEAR(clear_module_state->__pyx_n_u_st_uid); Py_CLEAR(clear_module_state->__pyx_n_s_stacktrace); Py_CLEAR(clear_module_state->__pyx_n_s_start); Py_CLEAR(clear_module_state->__pyx_n_s_start_soon); Py_CLEAR(clear_module_state->__pyx_n_s_startswith); Py_CLEAR(clear_module_state->__pyx_n_s_state); Py_CLEAR(clear_module_state->__pyx_n_s_statfs); Py_CLEAR(clear_module_state->__pyx_n_s_stats); Py_CLEAR(clear_module_state->__pyx_n_s_strerror); Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource); Py_CLEAR(clear_module_state->__pyx_n_s_supports_dot_lookup); Py_CLEAR(clear_module_state->__pyx_n_u_surrogateescape); Py_CLEAR(clear_module_state->__pyx_n_s_symlink); Py_CLEAR(clear_module_state->__pyx_n_s_syncfs); Py_CLEAR(clear_module_state->__pyx_n_s_sys); Py_CLEAR(clear_module_state->__pyx_n_u_system); Py_CLEAR(clear_module_state->__pyx_n_s_t); Py_CLEAR(clear_module_state->__pyx_n_s_target); Py_CLEAR(clear_module_state->__pyx_n_s_terminate); Py_CLEAR(clear_module_state->__pyx_kp_u_terminating_notify_thread); Py_CLEAR(clear_module_state->__pyx_n_s_test); Py_CLEAR(clear_module_state->__pyx_n_s_threading); Py_CLEAR(clear_module_state->__pyx_n_s_throw); Py_CLEAR(clear_module_state->__pyx_n_s_tmp); Py_CLEAR(clear_module_state->__pyx_n_s_to_set); Py_CLEAR(clear_module_state->__pyx_n_s_token); Py_CLEAR(clear_module_state->__pyx_n_s_trio); Py_CLEAR(clear_module_state->__pyx_n_s_trio_token); Py_CLEAR(clear_module_state->__pyx_n_s_typing); Py_CLEAR(clear_module_state->__pyx_kp_u_unknown_flag_s_o); Py_CLEAR(clear_module_state->__pyx_n_s_unlink); Py_CLEAR(clear_module_state->__pyx_n_s_unmount); Py_CLEAR(clear_module_state->__pyx_n_s_update); Py_CLEAR(clear_module_state->__pyx_kp_u_us_ascii); Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate); Py_CLEAR(clear_module_state->__pyx_n_u_user); Py_CLEAR(clear_module_state->__pyx_n_s_v); Py_CLEAR(clear_module_state->__pyx_n_s_value); Py_CLEAR(clear_module_state->__pyx_n_s_version); Py_CLEAR(clear_module_state->__pyx_n_s_wait_fuse_readable); Py_CLEAR(clear_module_state->__pyx_n_s_wait_readable); Py_CLEAR(clear_module_state->__pyx_n_s_write); Py_CLEAR(clear_module_state->__pyx_n_s_x); Py_CLEAR(clear_module_state->__pyx_int_0); Py_CLEAR(clear_module_state->__pyx_int_1); Py_CLEAR(clear_module_state->__pyx_int_35895208); Py_CLEAR(clear_module_state->__pyx_int_44617694); Py_CLEAR(clear_module_state->__pyx_int_144710093); Py_CLEAR(clear_module_state->__pyx_int_154557683); Py_CLEAR(clear_module_state->__pyx_int_240542287); Py_CLEAR(clear_module_state->__pyx_int_244161614); Py_CLEAR(clear_module_state->__pyx_int_1000000000); Py_CLEAR(clear_module_state->__pyx_tuple_); Py_CLEAR(clear_module_state->__pyx_slice__45); Py_CLEAR(clear_module_state->__pyx_tuple__15); Py_CLEAR(clear_module_state->__pyx_tuple__34); Py_CLEAR(clear_module_state->__pyx_tuple__36); Py_CLEAR(clear_module_state->__pyx_tuple__37); Py_CLEAR(clear_module_state->__pyx_tuple__38); Py_CLEAR(clear_module_state->__pyx_tuple__39); Py_CLEAR(clear_module_state->__pyx_tuple__40); Py_CLEAR(clear_module_state->__pyx_tuple__41); Py_CLEAR(clear_module_state->__pyx_tuple__42); Py_CLEAR(clear_module_state->__pyx_tuple__44); Py_CLEAR(clear_module_state->__pyx_tuple__46); Py_CLEAR(clear_module_state->__pyx_tuple__48); Py_CLEAR(clear_module_state->__pyx_tuple__51); Py_CLEAR(clear_module_state->__pyx_tuple__53); Py_CLEAR(clear_module_state->__pyx_tuple__54); Py_CLEAR(clear_module_state->__pyx_tuple__56); Py_CLEAR(clear_module_state->__pyx_tuple__58); Py_CLEAR(clear_module_state->__pyx_tuple__59); Py_CLEAR(clear_module_state->__pyx_tuple__60); Py_CLEAR(clear_module_state->__pyx_tuple__61); Py_CLEAR(clear_module_state->__pyx_tuple__62); Py_CLEAR(clear_module_state->__pyx_tuple__63); Py_CLEAR(clear_module_state->__pyx_tuple__64); Py_CLEAR(clear_module_state->__pyx_tuple__65); Py_CLEAR(clear_module_state->__pyx_tuple__66); Py_CLEAR(clear_module_state->__pyx_tuple__67); Py_CLEAR(clear_module_state->__pyx_tuple__68); Py_CLEAR(clear_module_state->__pyx_tuple__69); Py_CLEAR(clear_module_state->__pyx_tuple__70); Py_CLEAR(clear_module_state->__pyx_tuple__71); Py_CLEAR(clear_module_state->__pyx_tuple__72); Py_CLEAR(clear_module_state->__pyx_tuple__75); Py_CLEAR(clear_module_state->__pyx_tuple__76); Py_CLEAR(clear_module_state->__pyx_tuple__77); Py_CLEAR(clear_module_state->__pyx_tuple__78); Py_CLEAR(clear_module_state->__pyx_tuple__79); Py_CLEAR(clear_module_state->__pyx_tuple__80); Py_CLEAR(clear_module_state->__pyx_tuple__81); Py_CLEAR(clear_module_state->__pyx_tuple__82); Py_CLEAR(clear_module_state->__pyx_tuple__84); Py_CLEAR(clear_module_state->__pyx_tuple__87); Py_CLEAR(clear_module_state->__pyx_tuple__94); Py_CLEAR(clear_module_state->__pyx_tuple__96); Py_CLEAR(clear_module_state->__pyx_codeobj__2); Py_CLEAR(clear_module_state->__pyx_codeobj__3); Py_CLEAR(clear_module_state->__pyx_codeobj__4); Py_CLEAR(clear_module_state->__pyx_codeobj__5); Py_CLEAR(clear_module_state->__pyx_codeobj__6); Py_CLEAR(clear_module_state->__pyx_codeobj__7); Py_CLEAR(clear_module_state->__pyx_codeobj__8); Py_CLEAR(clear_module_state->__pyx_codeobj__9); Py_CLEAR(clear_module_state->__pyx_tuple__108); Py_CLEAR(clear_module_state->__pyx_tuple__110); Py_CLEAR(clear_module_state->__pyx_tuple__112); Py_CLEAR(clear_module_state->__pyx_tuple__114); Py_CLEAR(clear_module_state->__pyx_tuple__115); Py_CLEAR(clear_module_state->__pyx_tuple__117); Py_CLEAR(clear_module_state->__pyx_tuple__118); Py_CLEAR(clear_module_state->__pyx_tuple__120); Py_CLEAR(clear_module_state->__pyx_tuple__122); Py_CLEAR(clear_module_state->__pyx_tuple__124); Py_CLEAR(clear_module_state->__pyx_tuple__125); Py_CLEAR(clear_module_state->__pyx_tuple__127); Py_CLEAR(clear_module_state->__pyx_tuple__128); Py_CLEAR(clear_module_state->__pyx_tuple__130); Py_CLEAR(clear_module_state->__pyx_tuple__132); Py_CLEAR(clear_module_state->__pyx_tuple__133); Py_CLEAR(clear_module_state->__pyx_tuple__135); Py_CLEAR(clear_module_state->__pyx_tuple__137); Py_CLEAR(clear_module_state->__pyx_tuple__139); Py_CLEAR(clear_module_state->__pyx_codeobj__10); Py_CLEAR(clear_module_state->__pyx_codeobj__11); Py_CLEAR(clear_module_state->__pyx_codeobj__12); Py_CLEAR(clear_module_state->__pyx_codeobj__13); Py_CLEAR(clear_module_state->__pyx_codeobj__14); Py_CLEAR(clear_module_state->__pyx_codeobj__16); Py_CLEAR(clear_module_state->__pyx_codeobj__17); Py_CLEAR(clear_module_state->__pyx_codeobj__18); Py_CLEAR(clear_module_state->__pyx_codeobj__19); Py_CLEAR(clear_module_state->__pyx_codeobj__20); Py_CLEAR(clear_module_state->__pyx_codeobj__21); Py_CLEAR(clear_module_state->__pyx_codeobj__22); Py_CLEAR(clear_module_state->__pyx_codeobj__23); Py_CLEAR(clear_module_state->__pyx_codeobj__24); Py_CLEAR(clear_module_state->__pyx_codeobj__25); Py_CLEAR(clear_module_state->__pyx_codeobj__26); Py_CLEAR(clear_module_state->__pyx_codeobj__27); Py_CLEAR(clear_module_state->__pyx_codeobj__28); Py_CLEAR(clear_module_state->__pyx_codeobj__30); Py_CLEAR(clear_module_state->__pyx_codeobj__31); Py_CLEAR(clear_module_state->__pyx_codeobj__32); Py_CLEAR(clear_module_state->__pyx_codeobj__33); Py_CLEAR(clear_module_state->__pyx_codeobj__35); Py_CLEAR(clear_module_state->__pyx_codeobj__43); Py_CLEAR(clear_module_state->__pyx_codeobj__55); Py_CLEAR(clear_module_state->__pyx_codeobj__57); Py_CLEAR(clear_module_state->__pyx_codeobj__73); Py_CLEAR(clear_module_state->__pyx_codeobj__74); Py_CLEAR(clear_module_state->__pyx_codeobj__83); Py_CLEAR(clear_module_state->__pyx_codeobj__85); Py_CLEAR(clear_module_state->__pyx_codeobj__86); Py_CLEAR(clear_module_state->__pyx_codeobj__88); Py_CLEAR(clear_module_state->__pyx_codeobj__89); Py_CLEAR(clear_module_state->__pyx_codeobj__90); Py_CLEAR(clear_module_state->__pyx_codeobj__91); Py_CLEAR(clear_module_state->__pyx_codeobj__92); Py_CLEAR(clear_module_state->__pyx_codeobj__93); Py_CLEAR(clear_module_state->__pyx_codeobj__95); Py_CLEAR(clear_module_state->__pyx_codeobj__97); Py_CLEAR(clear_module_state->__pyx_codeobj__98); Py_CLEAR(clear_module_state->__pyx_codeobj__99); Py_CLEAR(clear_module_state->__pyx_codeobj__100); Py_CLEAR(clear_module_state->__pyx_codeobj__101); Py_CLEAR(clear_module_state->__pyx_codeobj__102); Py_CLEAR(clear_module_state->__pyx_codeobj__103); Py_CLEAR(clear_module_state->__pyx_codeobj__104); Py_CLEAR(clear_module_state->__pyx_codeobj__105); Py_CLEAR(clear_module_state->__pyx_codeobj__106); Py_CLEAR(clear_module_state->__pyx_codeobj__107); Py_CLEAR(clear_module_state->__pyx_codeobj__109); Py_CLEAR(clear_module_state->__pyx_codeobj__111); Py_CLEAR(clear_module_state->__pyx_codeobj__113); Py_CLEAR(clear_module_state->__pyx_codeobj__116); Py_CLEAR(clear_module_state->__pyx_codeobj__119); Py_CLEAR(clear_module_state->__pyx_codeobj__121); Py_CLEAR(clear_module_state->__pyx_codeobj__123); Py_CLEAR(clear_module_state->__pyx_codeobj__126); Py_CLEAR(clear_module_state->__pyx_codeobj__129); Py_CLEAR(clear_module_state->__pyx_codeobj__131); Py_CLEAR(clear_module_state->__pyx_codeobj__134); Py_CLEAR(clear_module_state->__pyx_codeobj__136); Py_CLEAR(clear_module_state->__pyx_codeobj__138); Py_CLEAR(clear_module_state->__pyx_codeobj__140); Py_CLEAR(clear_module_state->__pyx_codeobj__141); return 0; } #endif /* #### Code section: module_state_traverse ### */ #if CYTHON_USE_MODULE_STATE static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { __pyx_mstate *traverse_module_state = __pyx_mstate(m); if (!traverse_module_state) return 0; Py_VISIT(traverse_module_state->__pyx_d); Py_VISIT(traverse_module_state->__pyx_b); Py_VISIT(traverse_module_state->__pyx_cython_runtime); Py_VISIT(traverse_module_state->__pyx_empty_tuple); Py_VISIT(traverse_module_state->__pyx_empty_bytes); Py_VISIT(traverse_module_state->__pyx_empty_unicode); #ifdef __Pyx_CyFunction_USED Py_VISIT(traverse_module_state->__pyx_CyFunctionType); #endif #ifdef __Pyx_FusedFunction_USED Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); #endif Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3__Container); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3__Container); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_ReaddirToken); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_ReaddirToken); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3__WorkerData); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3__WorkerData); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_RequestContext); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_RequestContext); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_SetattrFields); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_SetattrFields); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_EntryAttributes); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_EntryAttributes); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_FileInfo); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_FileInfo); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_StatvfsData); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_StatvfsData); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3_FUSEError); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3_FUSEError); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop); Py_VISIT(traverse_module_state->__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main); Py_VISIT(traverse_module_state->__pyx_type_7pyfuse3___pyx_scope_struct_31_main); Py_VISIT(traverse_module_state->__pyx_kp_u_Calling_fuse_session_destroy); Py_VISIT(traverse_module_state->__pyx_kp_u_Calling_fuse_session_mount); Py_VISIT(traverse_module_state->__pyx_kp_u_Calling_fuse_session_new); Py_VISIT(traverse_module_state->__pyx_kp_u_Calling_fuse_session_unmount); Py_VISIT(traverse_module_state->__pyx_n_s_ClosedResourceError); Py_VISIT(traverse_module_state->__pyx_n_s_Container); Py_VISIT(traverse_module_state->__pyx_n_s_Container___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Container___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_u_ENOATTR); Py_VISIT(traverse_module_state->__pyx_n_s_EntryAttributes); Py_VISIT(traverse_module_state->__pyx_n_s_EntryAttributes___getstate); Py_VISIT(traverse_module_state->__pyx_n_s_EntryAttributes___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_EntryAttributes___setstate); Py_VISIT(traverse_module_state->__pyx_n_s_EntryAttributes___setstate_cytho); Py_VISIT(traverse_module_state->__pyx_n_s_FUSEError); Py_VISIT(traverse_module_state->__pyx_n_s_FUSEError___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_FUSEError___setstate_cython); Py_VISIT(traverse_module_state->__pyx_kp_u_FUSE_fd_about_to_be_closed); Py_VISIT(traverse_module_state->__pyx_kp_u_FUSE_session_exit_flag_set_while); Py_VISIT(traverse_module_state->__pyx_kp_u_Failed_to_submit_invalidate_entr); Py_VISIT(traverse_module_state->__pyx_n_s_FileHandleT); Py_VISIT(traverse_module_state->__pyx_n_s_FileInfo); Py_VISIT(traverse_module_state->__pyx_n_s_FileInfo___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_FileInfo___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_FileNameT); Py_VISIT(traverse_module_state->__pyx_n_s_FileNotFoundError); Py_VISIT(traverse_module_state->__pyx_n_s_FlagT); Py_VISIT(traverse_module_state->__pyx_kp_u_Groups); Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); Py_VISIT(traverse_module_state->__pyx_kp_u_Initializing_pyfuse3); Py_VISIT(traverse_module_state->__pyx_n_s_InodeT); Py_VISIT(traverse_module_state->__pyx_kp_u_Kernel_too_old_pyfuse3_requires); Py_VISIT(traverse_module_state->__pyx_n_s_Lock); Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError); Py_VISIT(traverse_module_state->__pyx_n_s_ModeT); Py_VISIT(traverse_module_state->__pyx_n_s_NANOS_PER_SEC); Py_VISIT(traverse_module_state->__pyx_kp_u_Need_to_call_init_before_main); Py_VISIT(traverse_module_state->__pyx_n_s_OSError); Py_VISIT(traverse_module_state->__pyx_n_s_O_DIRECTORY); Py_VISIT(traverse_module_state->__pyx_n_s_Operations); Py_VISIT(traverse_module_state->__pyx_n_s_OverflowError); Py_VISIT(traverse_module_state->__pyx_n_s_PickleError); Py_VISIT(traverse_module_state->__pyx_n_s_PicklingError); Py_VISIT(traverse_module_state->__pyx_n_s_Queue); Py_VISIT(traverse_module_state->__pyx_n_u_RENAME_EXCHANGE); Py_VISIT(traverse_module_state->__pyx_n_u_RENAME_NOREPLACE); Py_VISIT(traverse_module_state->__pyx_n_s_ROOT_INODE); Py_VISIT(traverse_module_state->__pyx_n_s_ReaddirToken); Py_VISIT(traverse_module_state->__pyx_n_s_ReaddirToken___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_ReaddirToken___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_RequestContext); Py_VISIT(traverse_module_state->__pyx_n_s_RequestContext___getstate); Py_VISIT(traverse_module_state->__pyx_n_s_RequestContext___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_RequestContext___setstate_cython); Py_VISIT(traverse_module_state->__pyx_kp_u_RequestContext_instances_can_t_b); Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeError); Py_VISIT(traverse_module_state->__pyx_n_s_SetattrFields); Py_VISIT(traverse_module_state->__pyx_n_s_SetattrFields___getstate); Py_VISIT(traverse_module_state->__pyx_n_s_SetattrFields___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_SetattrFields___setstate_cython); Py_VISIT(traverse_module_state->__pyx_kp_u_SetattrFields_instances_can_t_be); Py_VISIT(traverse_module_state->__pyx_kp_u_Starting_notify_worker); Py_VISIT(traverse_module_state->__pyx_n_s_StatvfsData); Py_VISIT(traverse_module_state->__pyx_n_s_StatvfsData___getstate); Py_VISIT(traverse_module_state->__pyx_n_s_StatvfsData___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_StatvfsData___setstate); Py_VISIT(traverse_module_state->__pyx_n_s_StatvfsData___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Thread); Py_VISIT(traverse_module_state->__pyx_n_s_TypeError); Py_VISIT(traverse_module_state->__pyx_kp_u_Unable_to_parse_s); Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); Py_VISIT(traverse_module_state->__pyx_kp_u_Value_too_long_to_convert_to_Pyt); Py_VISIT(traverse_module_state->__pyx_n_s_WorkerData); Py_VISIT(traverse_module_state->__pyx_n_s_WorkerData___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_WorkerData___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_XAttrNameT); Py_VISIT(traverse_module_state->__pyx_kp_b__29); Py_VISIT(traverse_module_state->__pyx_kp_u__47); Py_VISIT(traverse_module_state->__pyx_n_s__49); Py_VISIT(traverse_module_state->__pyx_n_s__50); Py_VISIT(traverse_module_state->__pyx_n_s__52); Py_VISIT(traverse_module_state->__pyx_n_s_abspath); Py_VISIT(traverse_module_state->__pyx_n_s_access); Py_VISIT(traverse_module_state->__pyx_n_s_aenter); Py_VISIT(traverse_module_state->__pyx_n_s_aexit); Py_VISIT(traverse_module_state->__pyx_n_s_allowed); Py_VISIT(traverse_module_state->__pyx_n_s_args); Py_VISIT(traverse_module_state->__pyx_n_s_async_wrapper); Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); Py_VISIT(traverse_module_state->__pyx_n_s_attr); Py_VISIT(traverse_module_state->__pyx_n_s_attr_only); Py_VISIT(traverse_module_state->__pyx_n_u_attr_timeout); Py_VISIT(traverse_module_state->__pyx_n_s_await); Py_VISIT(traverse_module_state->__pyx_n_s_buf); Py_VISIT(traverse_module_state->__pyx_n_s_bufsize); Py_VISIT(traverse_module_state->__pyx_n_s_bufvec); Py_VISIT(traverse_module_state->__pyx_n_s_c); Py_VISIT(traverse_module_state->__pyx_n_s_cbuf); Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); Py_VISIT(traverse_module_state->__pyx_n_s_close); Py_VISIT(traverse_module_state->__pyx_n_s_cname); Py_VISIT(traverse_module_state->__pyx_n_s_cnamespace); Py_VISIT(traverse_module_state->__pyx_n_s_cpath); Py_VISIT(traverse_module_state->__pyx_n_s_create); Py_VISIT(traverse_module_state->__pyx_n_s_ctx); Py_VISIT(traverse_module_state->__pyx_n_s_current_task); Py_VISIT(traverse_module_state->__pyx_n_s_current_trio_token); Py_VISIT(traverse_module_state->__pyx_n_s_cvalue); Py_VISIT(traverse_module_state->__pyx_n_s_daemon); Py_VISIT(traverse_module_state->__pyx_n_s_data); Py_VISIT(traverse_module_state->__pyx_n_s_debug); Py_VISIT(traverse_module_state->__pyx_n_s_decode); Py_VISIT(traverse_module_state->__pyx_n_s_default_options); Py_VISIT(traverse_module_state->__pyx_n_u_default_permissions); Py_VISIT(traverse_module_state->__pyx_n_s_deleted); Py_VISIT(traverse_module_state->__pyx_n_s_dict); Py_VISIT(traverse_module_state->__pyx_n_s_dict_2); Py_VISIT(traverse_module_state->__pyx_n_s_direct_io); Py_VISIT(traverse_module_state->__pyx_n_s_dirp); Py_VISIT(traverse_module_state->__pyx_kp_u_disable); Py_VISIT(traverse_module_state->__pyx_n_s_e); Py_VISIT(traverse_module_state->__pyx_kp_u_enable); Py_VISIT(traverse_module_state->__pyx_n_s_enable_acl); Py_VISIT(traverse_module_state->__pyx_n_s_enable_writeback_cache); Py_VISIT(traverse_module_state->__pyx_n_s_encode); Py_VISIT(traverse_module_state->__pyx_n_s_enter); Py_VISIT(traverse_module_state->__pyx_n_s_entry); Py_VISIT(traverse_module_state->__pyx_n_u_entry_timeout); Py_VISIT(traverse_module_state->__pyx_n_s_enumerate); Py_VISIT(traverse_module_state->__pyx_n_s_errno); Py_VISIT(traverse_module_state->__pyx_kp_u_errno_d); Py_VISIT(traverse_module_state->__pyx_n_s_error); Py_VISIT(traverse_module_state->__pyx_n_s_exc); Py_VISIT(traverse_module_state->__pyx_n_s_exception); Py_VISIT(traverse_module_state->__pyx_n_s_exit); Py_VISIT(traverse_module_state->__pyx_n_s_f_args); Py_VISIT(traverse_module_state->__pyx_n_u_f_bavail); Py_VISIT(traverse_module_state->__pyx_n_u_f_bfree); Py_VISIT(traverse_module_state->__pyx_n_u_f_blocks); Py_VISIT(traverse_module_state->__pyx_n_u_f_bsize); Py_VISIT(traverse_module_state->__pyx_n_u_f_favail); Py_VISIT(traverse_module_state->__pyx_n_u_f_ffree); Py_VISIT(traverse_module_state->__pyx_n_u_f_files); Py_VISIT(traverse_module_state->__pyx_n_u_f_frsize); Py_VISIT(traverse_module_state->__pyx_n_u_f_namemax); Py_VISIT(traverse_module_state->__pyx_n_s_fd); Py_VISIT(traverse_module_state->__pyx_n_s_fh); Py_VISIT(traverse_module_state->__pyx_n_s_fi); Py_VISIT(traverse_module_state->__pyx_n_s_fields); Py_VISIT(traverse_module_state->__pyx_n_s_flags); Py_VISIT(traverse_module_state->__pyx_n_s_flush); Py_VISIT(traverse_module_state->__pyx_n_s_forget); Py_VISIT(traverse_module_state->__pyx_n_s_fse); Py_VISIT(traverse_module_state->__pyx_n_s_fsync); Py_VISIT(traverse_module_state->__pyx_n_s_fsyncdir); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_access_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_access_fuse_reply__failed_w); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_buf_copy_failed_with); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_create_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_create_fuse_reply__failed_w); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_flush_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_flush_fuse_reply__failed_wi); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_fsync_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_fsync_fuse_reply__failed_wi); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_fsyncdir_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_fsyncdir_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_getattr_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_getattr_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_getxattr_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_getxattr_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_link_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_link_fuse_reply__failed_wit); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_listxattr_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_listxattr_fuse_reply__faile); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_lookup_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_lookup_fuse_reply__failed_w); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_lowlevel_notify_delete_retu); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_lowlevel_notify_inval_entry); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_lowlevel_notify_inval_inode); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_lowlevel_notify_store_retur); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_mkdir_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_mknod_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_mknod_fuse_reply__failed_wi); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_open_async); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_opendir_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_opendir_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_read_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_read_fuse_reply__failed_wit); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_readdirplus_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_readdirplus_fuse_reply__fai); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_readlink_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_readlink_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_release_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_release_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_releasedir_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_releasedir_fuse_reply__fail); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_removexattr_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_removexattr_fuse_reply__fai); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_rename_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_rename_fuse_reply__failed_w); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_rmdir_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_session_mount_failed); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_session_new_failed); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_session_receive_buf_failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_setattr_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_setattr_clock_gettime_CLOCK); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_setattr_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_setxattr_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_setxattr_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_u_fuse_stacktrace); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_statfs_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_statfs_fuse_reply__failed_w); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_symlink_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_symlink_fuse_reply__failed); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_unlink_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_unlink_fuse_reply__failed_w); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_write_async); Py_VISIT(traverse_module_state->__pyx_n_s_fuse_write_buf_async); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_write_buf_fuse_reply__faile); Py_VISIT(traverse_module_state->__pyx_kp_u_fuse_write_fuse_reply__failed_wi); Py_VISIT(traverse_module_state->__pyx_n_s_g); Py_VISIT(traverse_module_state->__pyx_kp_u_gc); Py_VISIT(traverse_module_state->__pyx_n_u_generation); Py_VISIT(traverse_module_state->__pyx_n_s_get); Py_VISIT(traverse_module_state->__pyx_n_s_getLogger); Py_VISIT(traverse_module_state->__pyx_n_s_get_sup_groups); Py_VISIT(traverse_module_state->__pyx_n_s_getattr); Py_VISIT(traverse_module_state->__pyx_n_s_getfilesystemencoding); Py_VISIT(traverse_module_state->__pyx_n_s_getstate); Py_VISIT(traverse_module_state->__pyx_n_s_getxattr); Py_VISIT(traverse_module_state->__pyx_n_s_gids); Py_VISIT(traverse_module_state->__pyx_n_s_ignore_enoent); Py_VISIT(traverse_module_state->__pyx_n_s_import); Py_VISIT(traverse_module_state->__pyx_n_s_init); Py_VISIT(traverse_module_state->__pyx_n_s_initializing); Py_VISIT(traverse_module_state->__pyx_n_s_ino); Py_VISIT(traverse_module_state->__pyx_n_s_inode); Py_VISIT(traverse_module_state->__pyx_n_s_inode_p); Py_VISIT(traverse_module_state->__pyx_n_s_invalidate_entry); Py_VISIT(traverse_module_state->__pyx_n_s_invalidate_entry_async); Py_VISIT(traverse_module_state->__pyx_n_s_invalidate_inode); Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); Py_VISIT(traverse_module_state->__pyx_n_s_items); Py_VISIT(traverse_module_state->__pyx_n_s_join); Py_VISIT(traverse_module_state->__pyx_n_s_k); Py_VISIT(traverse_module_state->__pyx_n_s_keep_cache); Py_VISIT(traverse_module_state->__pyx_n_s_len); Py_VISIT(traverse_module_state->__pyx_n_s_len_s); Py_VISIT(traverse_module_state->__pyx_n_s_line); Py_VISIT(traverse_module_state->__pyx_n_s_link); Py_VISIT(traverse_module_state->__pyx_n_s_listdir); Py_VISIT(traverse_module_state->__pyx_n_s_listxattr); Py_VISIT(traverse_module_state->__pyx_n_s_log); Py_VISIT(traverse_module_state->__pyx_n_s_logging); Py_VISIT(traverse_module_state->__pyx_n_s_lookup); Py_VISIT(traverse_module_state->__pyx_n_s_lowlevel); Py_VISIT(traverse_module_state->__pyx_n_s_main); Py_VISIT(traverse_module_state->__pyx_n_s_main_2); Py_VISIT(traverse_module_state->__pyx_n_s_mask); Py_VISIT(traverse_module_state->__pyx_n_s_max_tasks); Py_VISIT(traverse_module_state->__pyx_n_s_min_tasks); Py_VISIT(traverse_module_state->__pyx_n_s_mkdir); Py_VISIT(traverse_module_state->__pyx_n_s_mknod); Py_VISIT(traverse_module_state->__pyx_n_s_mountpoint); Py_VISIT(traverse_module_state->__pyx_kp_u_mountpoint__argument_must_be_of); Py_VISIT(traverse_module_state->__pyx_n_s_name); Py_VISIT(traverse_module_state->__pyx_n_s_name_2); Py_VISIT(traverse_module_state->__pyx_kp_u_name_argument_must_be_of_type_s); Py_VISIT(traverse_module_state->__pyx_n_s_name_b); Py_VISIT(traverse_module_state->__pyx_n_s_names); Py_VISIT(traverse_module_state->__pyx_n_s_namespace); Py_VISIT(traverse_module_state->__pyx_kp_u_namespace_parameter_must_be_sys); Py_VISIT(traverse_module_state->__pyx_n_s_new); Py_VISIT(traverse_module_state->__pyx_n_s_newname); Py_VISIT(traverse_module_state->__pyx_n_s_newparent); Py_VISIT(traverse_module_state->__pyx_n_s_next_id); Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non); Py_VISIT(traverse_module_state->__pyx_n_s_nonseekable); Py_VISIT(traverse_module_state->__pyx_n_s_notify_closing); Py_VISIT(traverse_module_state->__pyx_n_s_notify_loop); Py_VISIT(traverse_module_state->__pyx_n_s_notify_store); Py_VISIT(traverse_module_state->__pyx_n_s_now); Py_VISIT(traverse_module_state->__pyx_n_s_nursery); Py_VISIT(traverse_module_state->__pyx_kp_b_o); Py_VISIT(traverse_module_state->__pyx_n_s_off); Py_VISIT(traverse_module_state->__pyx_n_s_offset); Py_VISIT(traverse_module_state->__pyx_n_s_open); Py_VISIT(traverse_module_state->__pyx_n_s_open_nursery); Py_VISIT(traverse_module_state->__pyx_n_s_opendir); Py_VISIT(traverse_module_state->__pyx_n_s_ops); Py_VISIT(traverse_module_state->__pyx_n_s_options); Py_VISIT(traverse_module_state->__pyx_n_s_os); Py_VISIT(traverse_module_state->__pyx_n_s_os_path); Py_VISIT(traverse_module_state->__pyx_n_s_path); Py_VISIT(traverse_module_state->__pyx_kp_u_path_argument_must_be_of_type_s); Py_VISIT(traverse_module_state->__pyx_n_s_path_b); Py_VISIT(traverse_module_state->__pyx_n_s_pbuf); Py_VISIT(traverse_module_state->__pyx_n_s_pickle); Py_VISIT(traverse_module_state->__pyx_n_s_pid); Py_VISIT(traverse_module_state->__pyx_kp_u_proc_d_status); Py_VISIT(traverse_module_state->__pyx_n_s_put); Py_VISIT(traverse_module_state->__pyx_kp_u_py_retval_was_not_awaited_please); Py_VISIT(traverse_module_state->__pyx_n_s_pybuf); Py_VISIT(traverse_module_state->__pyx_n_b_pyfuse3); Py_VISIT(traverse_module_state->__pyx_n_s_pyfuse3); Py_VISIT(traverse_module_state->__pyx_n_u_pyfuse3); Py_VISIT(traverse_module_state->__pyx_n_s_pyfuse3_2); Py_VISIT(traverse_module_state->__pyx_kp_u_pyfuse3___init); Py_VISIT(traverse_module_state->__pyx_kp_u_pyfuse_02d); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_RequestContext); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__WorkerData); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable); Py_VISIT(traverse_module_state->__pyx_n_s_queue); Py_VISIT(traverse_module_state->__pyx_n_u_r); Py_VISIT(traverse_module_state->__pyx_n_s_range); Py_VISIT(traverse_module_state->__pyx_n_s_read); Py_VISIT(traverse_module_state->__pyx_n_s_readdir); Py_VISIT(traverse_module_state->__pyx_n_s_readdir_reply); Py_VISIT(traverse_module_state->__pyx_n_s_readlink); Py_VISIT(traverse_module_state->__pyx_n_s_reduce); Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex); Py_VISIT(traverse_module_state->__pyx_n_s_release); Py_VISIT(traverse_module_state->__pyx_n_s_releasedir); Py_VISIT(traverse_module_state->__pyx_n_s_removexattr); Py_VISIT(traverse_module_state->__pyx_n_s_rename); Py_VISIT(traverse_module_state->__pyx_n_s_req); Py_VISIT(traverse_module_state->__pyx_n_s_res); Py_VISIT(traverse_module_state->__pyx_n_s_ret); Py_VISIT(traverse_module_state->__pyx_n_s_rmdir); Py_VISIT(traverse_module_state->__pyx_kp_u_s_No_tasks_waiting_starting_ano); Py_VISIT(traverse_module_state->__pyx_kp_u_s_terminated); Py_VISIT(traverse_module_state->__pyx_kp_u_s_too_many_idle_tasks_d_total_d); Py_VISIT(traverse_module_state->__pyx_n_s_self); Py_VISIT(traverse_module_state->__pyx_kp_s_self_req_cannot_be_converted_to); Py_VISIT(traverse_module_state->__pyx_n_s_send); Py_VISIT(traverse_module_state->__pyx_n_s_session_loop); Py_VISIT(traverse_module_state->__pyx_n_s_setattr); Py_VISIT(traverse_module_state->__pyx_n_s_setstate); Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_setxattr); Py_VISIT(traverse_module_state->__pyx_n_s_size_guess); Py_VISIT(traverse_module_state->__pyx_n_s_slen); Py_VISIT(traverse_module_state->__pyx_n_s_spec); Py_VISIT(traverse_module_state->__pyx_n_s_split); Py_VISIT(traverse_module_state->__pyx_kp_s_src_pyfuse3___init___pyx); Py_VISIT(traverse_module_state->__pyx_kp_s_src_pyfuse3_handlers_pxi); Py_VISIT(traverse_module_state->__pyx_kp_s_src_pyfuse3_internal_pxi); Py_VISIT(traverse_module_state->__pyx_n_u_st_atime_ns); Py_VISIT(traverse_module_state->__pyx_n_u_st_birthtime_ns); Py_VISIT(traverse_module_state->__pyx_n_u_st_blksize); Py_VISIT(traverse_module_state->__pyx_n_u_st_blocks); Py_VISIT(traverse_module_state->__pyx_n_u_st_ctime_ns); Py_VISIT(traverse_module_state->__pyx_n_u_st_gid); Py_VISIT(traverse_module_state->__pyx_n_u_st_ino); Py_VISIT(traverse_module_state->__pyx_n_u_st_mode); Py_VISIT(traverse_module_state->__pyx_n_u_st_mtime_ns); Py_VISIT(traverse_module_state->__pyx_n_u_st_nlink); Py_VISIT(traverse_module_state->__pyx_n_u_st_rdev); Py_VISIT(traverse_module_state->__pyx_n_u_st_size); Py_VISIT(traverse_module_state->__pyx_n_u_st_uid); Py_VISIT(traverse_module_state->__pyx_n_s_stacktrace); Py_VISIT(traverse_module_state->__pyx_n_s_start); Py_VISIT(traverse_module_state->__pyx_n_s_start_soon); Py_VISIT(traverse_module_state->__pyx_n_s_startswith); Py_VISIT(traverse_module_state->__pyx_n_s_state); Py_VISIT(traverse_module_state->__pyx_n_s_statfs); Py_VISIT(traverse_module_state->__pyx_n_s_stats); Py_VISIT(traverse_module_state->__pyx_n_s_strerror); Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource); Py_VISIT(traverse_module_state->__pyx_n_s_supports_dot_lookup); Py_VISIT(traverse_module_state->__pyx_n_u_surrogateescape); Py_VISIT(traverse_module_state->__pyx_n_s_symlink); Py_VISIT(traverse_module_state->__pyx_n_s_syncfs); Py_VISIT(traverse_module_state->__pyx_n_s_sys); Py_VISIT(traverse_module_state->__pyx_n_u_system); Py_VISIT(traverse_module_state->__pyx_n_s_t); Py_VISIT(traverse_module_state->__pyx_n_s_target); Py_VISIT(traverse_module_state->__pyx_n_s_terminate); Py_VISIT(traverse_module_state->__pyx_kp_u_terminating_notify_thread); Py_VISIT(traverse_module_state->__pyx_n_s_test); Py_VISIT(traverse_module_state->__pyx_n_s_threading); Py_VISIT(traverse_module_state->__pyx_n_s_throw); Py_VISIT(traverse_module_state->__pyx_n_s_tmp); Py_VISIT(traverse_module_state->__pyx_n_s_to_set); Py_VISIT(traverse_module_state->__pyx_n_s_token); Py_VISIT(traverse_module_state->__pyx_n_s_trio); Py_VISIT(traverse_module_state->__pyx_n_s_trio_token); Py_VISIT(traverse_module_state->__pyx_n_s_typing); Py_VISIT(traverse_module_state->__pyx_kp_u_unknown_flag_s_o); Py_VISIT(traverse_module_state->__pyx_n_s_unlink); Py_VISIT(traverse_module_state->__pyx_n_s_unmount); Py_VISIT(traverse_module_state->__pyx_n_s_update); Py_VISIT(traverse_module_state->__pyx_kp_u_us_ascii); Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate); Py_VISIT(traverse_module_state->__pyx_n_u_user); Py_VISIT(traverse_module_state->__pyx_n_s_v); Py_VISIT(traverse_module_state->__pyx_n_s_value); Py_VISIT(traverse_module_state->__pyx_n_s_version); Py_VISIT(traverse_module_state->__pyx_n_s_wait_fuse_readable); Py_VISIT(traverse_module_state->__pyx_n_s_wait_readable); Py_VISIT(traverse_module_state->__pyx_n_s_write); Py_VISIT(traverse_module_state->__pyx_n_s_x); Py_VISIT(traverse_module_state->__pyx_int_0); Py_VISIT(traverse_module_state->__pyx_int_1); Py_VISIT(traverse_module_state->__pyx_int_35895208); Py_VISIT(traverse_module_state->__pyx_int_44617694); Py_VISIT(traverse_module_state->__pyx_int_144710093); Py_VISIT(traverse_module_state->__pyx_int_154557683); Py_VISIT(traverse_module_state->__pyx_int_240542287); Py_VISIT(traverse_module_state->__pyx_int_244161614); Py_VISIT(traverse_module_state->__pyx_int_1000000000); Py_VISIT(traverse_module_state->__pyx_tuple_); Py_VISIT(traverse_module_state->__pyx_slice__45); Py_VISIT(traverse_module_state->__pyx_tuple__15); Py_VISIT(traverse_module_state->__pyx_tuple__34); Py_VISIT(traverse_module_state->__pyx_tuple__36); Py_VISIT(traverse_module_state->__pyx_tuple__37); Py_VISIT(traverse_module_state->__pyx_tuple__38); Py_VISIT(traverse_module_state->__pyx_tuple__39); Py_VISIT(traverse_module_state->__pyx_tuple__40); Py_VISIT(traverse_module_state->__pyx_tuple__41); Py_VISIT(traverse_module_state->__pyx_tuple__42); Py_VISIT(traverse_module_state->__pyx_tuple__44); Py_VISIT(traverse_module_state->__pyx_tuple__46); Py_VISIT(traverse_module_state->__pyx_tuple__48); Py_VISIT(traverse_module_state->__pyx_tuple__51); Py_VISIT(traverse_module_state->__pyx_tuple__53); Py_VISIT(traverse_module_state->__pyx_tuple__54); Py_VISIT(traverse_module_state->__pyx_tuple__56); Py_VISIT(traverse_module_state->__pyx_tuple__58); Py_VISIT(traverse_module_state->__pyx_tuple__59); Py_VISIT(traverse_module_state->__pyx_tuple__60); Py_VISIT(traverse_module_state->__pyx_tuple__61); Py_VISIT(traverse_module_state->__pyx_tuple__62); Py_VISIT(traverse_module_state->__pyx_tuple__63); Py_VISIT(traverse_module_state->__pyx_tuple__64); Py_VISIT(traverse_module_state->__pyx_tuple__65); Py_VISIT(traverse_module_state->__pyx_tuple__66); Py_VISIT(traverse_module_state->__pyx_tuple__67); Py_VISIT(traverse_module_state->__pyx_tuple__68); Py_VISIT(traverse_module_state->__pyx_tuple__69); Py_VISIT(traverse_module_state->__pyx_tuple__70); Py_VISIT(traverse_module_state->__pyx_tuple__71); Py_VISIT(traverse_module_state->__pyx_tuple__72); Py_VISIT(traverse_module_state->__pyx_tuple__75); Py_VISIT(traverse_module_state->__pyx_tuple__76); Py_VISIT(traverse_module_state->__pyx_tuple__77); Py_VISIT(traverse_module_state->__pyx_tuple__78); Py_VISIT(traverse_module_state->__pyx_tuple__79); Py_VISIT(traverse_module_state->__pyx_tuple__80); Py_VISIT(traverse_module_state->__pyx_tuple__81); Py_VISIT(traverse_module_state->__pyx_tuple__82); Py_VISIT(traverse_module_state->__pyx_tuple__84); Py_VISIT(traverse_module_state->__pyx_tuple__87); Py_VISIT(traverse_module_state->__pyx_tuple__94); Py_VISIT(traverse_module_state->__pyx_tuple__96); Py_VISIT(traverse_module_state->__pyx_codeobj__2); Py_VISIT(traverse_module_state->__pyx_codeobj__3); Py_VISIT(traverse_module_state->__pyx_codeobj__4); Py_VISIT(traverse_module_state->__pyx_codeobj__5); Py_VISIT(traverse_module_state->__pyx_codeobj__6); Py_VISIT(traverse_module_state->__pyx_codeobj__7); Py_VISIT(traverse_module_state->__pyx_codeobj__8); Py_VISIT(traverse_module_state->__pyx_codeobj__9); Py_VISIT(traverse_module_state->__pyx_tuple__108); Py_VISIT(traverse_module_state->__pyx_tuple__110); Py_VISIT(traverse_module_state->__pyx_tuple__112); Py_VISIT(traverse_module_state->__pyx_tuple__114); Py_VISIT(traverse_module_state->__pyx_tuple__115); Py_VISIT(traverse_module_state->__pyx_tuple__117); Py_VISIT(traverse_module_state->__pyx_tuple__118); Py_VISIT(traverse_module_state->__pyx_tuple__120); Py_VISIT(traverse_module_state->__pyx_tuple__122); Py_VISIT(traverse_module_state->__pyx_tuple__124); Py_VISIT(traverse_module_state->__pyx_tuple__125); Py_VISIT(traverse_module_state->__pyx_tuple__127); Py_VISIT(traverse_module_state->__pyx_tuple__128); Py_VISIT(traverse_module_state->__pyx_tuple__130); Py_VISIT(traverse_module_state->__pyx_tuple__132); Py_VISIT(traverse_module_state->__pyx_tuple__133); Py_VISIT(traverse_module_state->__pyx_tuple__135); Py_VISIT(traverse_module_state->__pyx_tuple__137); Py_VISIT(traverse_module_state->__pyx_tuple__139); Py_VISIT(traverse_module_state->__pyx_codeobj__10); Py_VISIT(traverse_module_state->__pyx_codeobj__11); Py_VISIT(traverse_module_state->__pyx_codeobj__12); Py_VISIT(traverse_module_state->__pyx_codeobj__13); Py_VISIT(traverse_module_state->__pyx_codeobj__14); Py_VISIT(traverse_module_state->__pyx_codeobj__16); Py_VISIT(traverse_module_state->__pyx_codeobj__17); Py_VISIT(traverse_module_state->__pyx_codeobj__18); Py_VISIT(traverse_module_state->__pyx_codeobj__19); Py_VISIT(traverse_module_state->__pyx_codeobj__20); Py_VISIT(traverse_module_state->__pyx_codeobj__21); Py_VISIT(traverse_module_state->__pyx_codeobj__22); Py_VISIT(traverse_module_state->__pyx_codeobj__23); Py_VISIT(traverse_module_state->__pyx_codeobj__24); Py_VISIT(traverse_module_state->__pyx_codeobj__25); Py_VISIT(traverse_module_state->__pyx_codeobj__26); Py_VISIT(traverse_module_state->__pyx_codeobj__27); Py_VISIT(traverse_module_state->__pyx_codeobj__28); Py_VISIT(traverse_module_state->__pyx_codeobj__30); Py_VISIT(traverse_module_state->__pyx_codeobj__31); Py_VISIT(traverse_module_state->__pyx_codeobj__32); Py_VISIT(traverse_module_state->__pyx_codeobj__33); Py_VISIT(traverse_module_state->__pyx_codeobj__35); Py_VISIT(traverse_module_state->__pyx_codeobj__43); Py_VISIT(traverse_module_state->__pyx_codeobj__55); Py_VISIT(traverse_module_state->__pyx_codeobj__57); Py_VISIT(traverse_module_state->__pyx_codeobj__73); Py_VISIT(traverse_module_state->__pyx_codeobj__74); Py_VISIT(traverse_module_state->__pyx_codeobj__83); Py_VISIT(traverse_module_state->__pyx_codeobj__85); Py_VISIT(traverse_module_state->__pyx_codeobj__86); Py_VISIT(traverse_module_state->__pyx_codeobj__88); Py_VISIT(traverse_module_state->__pyx_codeobj__89); Py_VISIT(traverse_module_state->__pyx_codeobj__90); Py_VISIT(traverse_module_state->__pyx_codeobj__91); Py_VISIT(traverse_module_state->__pyx_codeobj__92); Py_VISIT(traverse_module_state->__pyx_codeobj__93); Py_VISIT(traverse_module_state->__pyx_codeobj__95); Py_VISIT(traverse_module_state->__pyx_codeobj__97); Py_VISIT(traverse_module_state->__pyx_codeobj__98); Py_VISIT(traverse_module_state->__pyx_codeobj__99); Py_VISIT(traverse_module_state->__pyx_codeobj__100); Py_VISIT(traverse_module_state->__pyx_codeobj__101); Py_VISIT(traverse_module_state->__pyx_codeobj__102); Py_VISIT(traverse_module_state->__pyx_codeobj__103); Py_VISIT(traverse_module_state->__pyx_codeobj__104); Py_VISIT(traverse_module_state->__pyx_codeobj__105); Py_VISIT(traverse_module_state->__pyx_codeobj__106); Py_VISIT(traverse_module_state->__pyx_codeobj__107); Py_VISIT(traverse_module_state->__pyx_codeobj__109); Py_VISIT(traverse_module_state->__pyx_codeobj__111); Py_VISIT(traverse_module_state->__pyx_codeobj__113); Py_VISIT(traverse_module_state->__pyx_codeobj__116); Py_VISIT(traverse_module_state->__pyx_codeobj__119); Py_VISIT(traverse_module_state->__pyx_codeobj__121); Py_VISIT(traverse_module_state->__pyx_codeobj__123); Py_VISIT(traverse_module_state->__pyx_codeobj__126); Py_VISIT(traverse_module_state->__pyx_codeobj__129); Py_VISIT(traverse_module_state->__pyx_codeobj__131); Py_VISIT(traverse_module_state->__pyx_codeobj__134); Py_VISIT(traverse_module_state->__pyx_codeobj__136); Py_VISIT(traverse_module_state->__pyx_codeobj__138); Py_VISIT(traverse_module_state->__pyx_codeobj__140); Py_VISIT(traverse_module_state->__pyx_codeobj__141); return 0; } #endif /* #### Code section: module_state_defines ### */ #define __pyx_d __pyx_mstate_global->__pyx_d #define __pyx_b __pyx_mstate_global->__pyx_b #define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime #define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple #define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes #define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode #ifdef __Pyx_CyFunction_USED #define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType #endif #ifdef __Pyx_FusedFunction_USED #define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType #endif #ifdef __Pyx_Generator_USED #define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType #endif #ifdef __Pyx_IterableCoroutine_USED #define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType #endif #ifdef __Pyx_Coroutine_USED #define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType #endif #ifdef __Pyx_Coroutine_USED #define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #define __pyx_type_7pyfuse3__Container __pyx_mstate_global->__pyx_type_7pyfuse3__Container #define __pyx_type_7pyfuse3_ReaddirToken __pyx_mstate_global->__pyx_type_7pyfuse3_ReaddirToken #define __pyx_type_7pyfuse3__WorkerData __pyx_mstate_global->__pyx_type_7pyfuse3__WorkerData #define __pyx_type_7pyfuse3_RequestContext __pyx_mstate_global->__pyx_type_7pyfuse3_RequestContext #define __pyx_type_7pyfuse3_SetattrFields __pyx_mstate_global->__pyx_type_7pyfuse3_SetattrFields #define __pyx_type_7pyfuse3_EntryAttributes __pyx_mstate_global->__pyx_type_7pyfuse3_EntryAttributes #define __pyx_type_7pyfuse3_FileInfo __pyx_mstate_global->__pyx_type_7pyfuse3_FileInfo #define __pyx_type_7pyfuse3_StatvfsData __pyx_mstate_global->__pyx_type_7pyfuse3_StatvfsData #define __pyx_type_7pyfuse3_FUSEError __pyx_mstate_global->__pyx_type_7pyfuse3_FUSEError #define __pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async #define __pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async #define __pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async #define __pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async #define __pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async #define __pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async #define __pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async #define __pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async #define __pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async #define __pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async #define __pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async #define __pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async #define __pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async #define __pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async #define __pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async #define __pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async #define __pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async #define __pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async #define __pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async #define __pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async #define __pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async #define __pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async #define __pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async #define __pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async #define __pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async #define __pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async #define __pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async #define __pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async #define __pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async #define __pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable #define __pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop #define __pyx_type_7pyfuse3___pyx_scope_struct_31_main __pyx_mstate_global->__pyx_type_7pyfuse3___pyx_scope_struct_31_main #endif #define __pyx_ptype_7pyfuse3__Container __pyx_mstate_global->__pyx_ptype_7pyfuse3__Container #define __pyx_ptype_7pyfuse3_ReaddirToken __pyx_mstate_global->__pyx_ptype_7pyfuse3_ReaddirToken #define __pyx_ptype_7pyfuse3__WorkerData __pyx_mstate_global->__pyx_ptype_7pyfuse3__WorkerData #define __pyx_ptype_7pyfuse3_RequestContext __pyx_mstate_global->__pyx_ptype_7pyfuse3_RequestContext #define __pyx_ptype_7pyfuse3_SetattrFields __pyx_mstate_global->__pyx_ptype_7pyfuse3_SetattrFields #define __pyx_ptype_7pyfuse3_EntryAttributes __pyx_mstate_global->__pyx_ptype_7pyfuse3_EntryAttributes #define __pyx_ptype_7pyfuse3_FileInfo __pyx_mstate_global->__pyx_ptype_7pyfuse3_FileInfo #define __pyx_ptype_7pyfuse3_StatvfsData __pyx_mstate_global->__pyx_ptype_7pyfuse3_StatvfsData #define __pyx_ptype_7pyfuse3_FUSEError __pyx_mstate_global->__pyx_ptype_7pyfuse3_FUSEError #define __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async #define __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable #define __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop #define __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main __pyx_mstate_global->__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main #define __pyx_kp_u_Calling_fuse_session_destroy __pyx_mstate_global->__pyx_kp_u_Calling_fuse_session_destroy #define __pyx_kp_u_Calling_fuse_session_mount __pyx_mstate_global->__pyx_kp_u_Calling_fuse_session_mount #define __pyx_kp_u_Calling_fuse_session_new __pyx_mstate_global->__pyx_kp_u_Calling_fuse_session_new #define __pyx_kp_u_Calling_fuse_session_unmount __pyx_mstate_global->__pyx_kp_u_Calling_fuse_session_unmount #define __pyx_n_s_ClosedResourceError __pyx_mstate_global->__pyx_n_s_ClosedResourceError #define __pyx_n_s_Container __pyx_mstate_global->__pyx_n_s_Container #define __pyx_n_s_Container___reduce_cython __pyx_mstate_global->__pyx_n_s_Container___reduce_cython #define __pyx_n_s_Container___setstate_cython __pyx_mstate_global->__pyx_n_s_Container___setstate_cython #define __pyx_n_u_ENOATTR __pyx_mstate_global->__pyx_n_u_ENOATTR #define __pyx_n_s_EntryAttributes __pyx_mstate_global->__pyx_n_s_EntryAttributes #define __pyx_n_s_EntryAttributes___getstate __pyx_mstate_global->__pyx_n_s_EntryAttributes___getstate #define __pyx_n_s_EntryAttributes___reduce_cython __pyx_mstate_global->__pyx_n_s_EntryAttributes___reduce_cython #define __pyx_n_s_EntryAttributes___setstate __pyx_mstate_global->__pyx_n_s_EntryAttributes___setstate #define __pyx_n_s_EntryAttributes___setstate_cytho __pyx_mstate_global->__pyx_n_s_EntryAttributes___setstate_cytho #define __pyx_n_s_FUSEError __pyx_mstate_global->__pyx_n_s_FUSEError #define __pyx_n_s_FUSEError___reduce_cython __pyx_mstate_global->__pyx_n_s_FUSEError___reduce_cython #define __pyx_n_s_FUSEError___setstate_cython __pyx_mstate_global->__pyx_n_s_FUSEError___setstate_cython #define __pyx_kp_u_FUSE_fd_about_to_be_closed __pyx_mstate_global->__pyx_kp_u_FUSE_fd_about_to_be_closed #define __pyx_kp_u_FUSE_session_exit_flag_set_while __pyx_mstate_global->__pyx_kp_u_FUSE_session_exit_flag_set_while #define __pyx_kp_u_Failed_to_submit_invalidate_entr __pyx_mstate_global->__pyx_kp_u_Failed_to_submit_invalidate_entr #define __pyx_n_s_FileHandleT __pyx_mstate_global->__pyx_n_s_FileHandleT #define __pyx_n_s_FileInfo __pyx_mstate_global->__pyx_n_s_FileInfo #define __pyx_n_s_FileInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_FileInfo___reduce_cython #define __pyx_n_s_FileInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_FileInfo___setstate_cython #define __pyx_n_s_FileNameT __pyx_mstate_global->__pyx_n_s_FileNameT #define __pyx_n_s_FileNotFoundError __pyx_mstate_global->__pyx_n_s_FileNotFoundError #define __pyx_n_s_FlagT __pyx_mstate_global->__pyx_n_s_FlagT #define __pyx_kp_u_Groups __pyx_mstate_global->__pyx_kp_u_Groups #define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0 #define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 #define __pyx_kp_u_Initializing_pyfuse3 __pyx_mstate_global->__pyx_kp_u_Initializing_pyfuse3 #define __pyx_n_s_InodeT __pyx_mstate_global->__pyx_n_s_InodeT #define __pyx_kp_u_Kernel_too_old_pyfuse3_requires __pyx_mstate_global->__pyx_kp_u_Kernel_too_old_pyfuse3_requires #define __pyx_n_s_Lock __pyx_mstate_global->__pyx_n_s_Lock #define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError #define __pyx_n_s_ModeT __pyx_mstate_global->__pyx_n_s_ModeT #define __pyx_n_s_NANOS_PER_SEC __pyx_mstate_global->__pyx_n_s_NANOS_PER_SEC #define __pyx_kp_u_Need_to_call_init_before_main __pyx_mstate_global->__pyx_kp_u_Need_to_call_init_before_main #define __pyx_n_s_OSError __pyx_mstate_global->__pyx_n_s_OSError #define __pyx_n_s_O_DIRECTORY __pyx_mstate_global->__pyx_n_s_O_DIRECTORY #define __pyx_n_s_Operations __pyx_mstate_global->__pyx_n_s_Operations #define __pyx_n_s_OverflowError __pyx_mstate_global->__pyx_n_s_OverflowError #define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError #define __pyx_n_s_PicklingError __pyx_mstate_global->__pyx_n_s_PicklingError #define __pyx_n_s_Queue __pyx_mstate_global->__pyx_n_s_Queue #define __pyx_n_u_RENAME_EXCHANGE __pyx_mstate_global->__pyx_n_u_RENAME_EXCHANGE #define __pyx_n_u_RENAME_NOREPLACE __pyx_mstate_global->__pyx_n_u_RENAME_NOREPLACE #define __pyx_n_s_ROOT_INODE __pyx_mstate_global->__pyx_n_s_ROOT_INODE #define __pyx_n_s_ReaddirToken __pyx_mstate_global->__pyx_n_s_ReaddirToken #define __pyx_n_s_ReaddirToken___reduce_cython __pyx_mstate_global->__pyx_n_s_ReaddirToken___reduce_cython #define __pyx_n_s_ReaddirToken___setstate_cython __pyx_mstate_global->__pyx_n_s_ReaddirToken___setstate_cython #define __pyx_n_s_RequestContext __pyx_mstate_global->__pyx_n_s_RequestContext #define __pyx_n_s_RequestContext___getstate __pyx_mstate_global->__pyx_n_s_RequestContext___getstate #define __pyx_n_s_RequestContext___reduce_cython __pyx_mstate_global->__pyx_n_s_RequestContext___reduce_cython #define __pyx_n_s_RequestContext___setstate_cython __pyx_mstate_global->__pyx_n_s_RequestContext___setstate_cython #define __pyx_kp_u_RequestContext_instances_can_t_b __pyx_mstate_global->__pyx_kp_u_RequestContext_instances_can_t_b #define __pyx_n_s_RuntimeError __pyx_mstate_global->__pyx_n_s_RuntimeError #define __pyx_n_s_SetattrFields __pyx_mstate_global->__pyx_n_s_SetattrFields #define __pyx_n_s_SetattrFields___getstate __pyx_mstate_global->__pyx_n_s_SetattrFields___getstate #define __pyx_n_s_SetattrFields___reduce_cython __pyx_mstate_global->__pyx_n_s_SetattrFields___reduce_cython #define __pyx_n_s_SetattrFields___setstate_cython __pyx_mstate_global->__pyx_n_s_SetattrFields___setstate_cython #define __pyx_kp_u_SetattrFields_instances_can_t_be __pyx_mstate_global->__pyx_kp_u_SetattrFields_instances_can_t_be #define __pyx_kp_u_Starting_notify_worker __pyx_mstate_global->__pyx_kp_u_Starting_notify_worker #define __pyx_n_s_StatvfsData __pyx_mstate_global->__pyx_n_s_StatvfsData #define __pyx_n_s_StatvfsData___getstate __pyx_mstate_global->__pyx_n_s_StatvfsData___getstate #define __pyx_n_s_StatvfsData___reduce_cython __pyx_mstate_global->__pyx_n_s_StatvfsData___reduce_cython #define __pyx_n_s_StatvfsData___setstate __pyx_mstate_global->__pyx_n_s_StatvfsData___setstate #define __pyx_n_s_StatvfsData___setstate_cython __pyx_mstate_global->__pyx_n_s_StatvfsData___setstate_cython #define __pyx_n_s_Thread __pyx_mstate_global->__pyx_n_s_Thread #define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError #define __pyx_kp_u_Unable_to_parse_s __pyx_mstate_global->__pyx_kp_u_Unable_to_parse_s #define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError #define __pyx_kp_u_Value_too_long_to_convert_to_Pyt __pyx_mstate_global->__pyx_kp_u_Value_too_long_to_convert_to_Pyt #define __pyx_n_s_WorkerData __pyx_mstate_global->__pyx_n_s_WorkerData #define __pyx_n_s_WorkerData___reduce_cython __pyx_mstate_global->__pyx_n_s_WorkerData___reduce_cython #define __pyx_n_s_WorkerData___setstate_cython __pyx_mstate_global->__pyx_n_s_WorkerData___setstate_cython #define __pyx_n_s_XAttrNameT __pyx_mstate_global->__pyx_n_s_XAttrNameT #define __pyx_kp_b__29 __pyx_mstate_global->__pyx_kp_b__29 #define __pyx_kp_u__47 __pyx_mstate_global->__pyx_kp_u__47 #define __pyx_n_s__49 __pyx_mstate_global->__pyx_n_s__49 #define __pyx_n_s__50 __pyx_mstate_global->__pyx_n_s__50 #define __pyx_n_s__52 __pyx_mstate_global->__pyx_n_s__52 #define __pyx_n_s_abspath __pyx_mstate_global->__pyx_n_s_abspath #define __pyx_n_s_access __pyx_mstate_global->__pyx_n_s_access #define __pyx_n_s_aenter __pyx_mstate_global->__pyx_n_s_aenter #define __pyx_n_s_aexit __pyx_mstate_global->__pyx_n_s_aexit #define __pyx_n_s_allowed __pyx_mstate_global->__pyx_n_s_allowed #define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args #define __pyx_n_s_async_wrapper __pyx_mstate_global->__pyx_n_s_async_wrapper #define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines #define __pyx_n_s_attr __pyx_mstate_global->__pyx_n_s_attr #define __pyx_n_s_attr_only __pyx_mstate_global->__pyx_n_s_attr_only #define __pyx_n_u_attr_timeout __pyx_mstate_global->__pyx_n_u_attr_timeout #define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await #define __pyx_n_s_buf __pyx_mstate_global->__pyx_n_s_buf #define __pyx_n_s_bufsize __pyx_mstate_global->__pyx_n_s_bufsize #define __pyx_n_s_bufvec __pyx_mstate_global->__pyx_n_s_bufvec #define __pyx_n_s_c __pyx_mstate_global->__pyx_n_s_c #define __pyx_n_s_cbuf __pyx_mstate_global->__pyx_n_s_cbuf #define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback #define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close #define __pyx_n_s_cname __pyx_mstate_global->__pyx_n_s_cname #define __pyx_n_s_cnamespace __pyx_mstate_global->__pyx_n_s_cnamespace #define __pyx_n_s_cpath __pyx_mstate_global->__pyx_n_s_cpath #define __pyx_n_s_create __pyx_mstate_global->__pyx_n_s_create #define __pyx_n_s_ctx __pyx_mstate_global->__pyx_n_s_ctx #define __pyx_n_s_current_task __pyx_mstate_global->__pyx_n_s_current_task #define __pyx_n_s_current_trio_token __pyx_mstate_global->__pyx_n_s_current_trio_token #define __pyx_n_s_cvalue __pyx_mstate_global->__pyx_n_s_cvalue #define __pyx_n_s_daemon __pyx_mstate_global->__pyx_n_s_daemon #define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data #define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug #define __pyx_n_s_decode __pyx_mstate_global->__pyx_n_s_decode #define __pyx_n_s_default_options __pyx_mstate_global->__pyx_n_s_default_options #define __pyx_n_u_default_permissions __pyx_mstate_global->__pyx_n_u_default_permissions #define __pyx_n_s_deleted __pyx_mstate_global->__pyx_n_s_deleted #define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict #define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2 #define __pyx_n_s_direct_io __pyx_mstate_global->__pyx_n_s_direct_io #define __pyx_n_s_dirp __pyx_mstate_global->__pyx_n_s_dirp #define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable #define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e #define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable #define __pyx_n_s_enable_acl __pyx_mstate_global->__pyx_n_s_enable_acl #define __pyx_n_s_enable_writeback_cache __pyx_mstate_global->__pyx_n_s_enable_writeback_cache #define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode #define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter #define __pyx_n_s_entry __pyx_mstate_global->__pyx_n_s_entry #define __pyx_n_u_entry_timeout __pyx_mstate_global->__pyx_n_u_entry_timeout #define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate #define __pyx_n_s_errno __pyx_mstate_global->__pyx_n_s_errno #define __pyx_kp_u_errno_d __pyx_mstate_global->__pyx_kp_u_errno_d #define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error #define __pyx_n_s_exc __pyx_mstate_global->__pyx_n_s_exc #define __pyx_n_s_exception __pyx_mstate_global->__pyx_n_s_exception #define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit #define __pyx_n_s_f_args __pyx_mstate_global->__pyx_n_s_f_args #define __pyx_n_u_f_bavail __pyx_mstate_global->__pyx_n_u_f_bavail #define __pyx_n_u_f_bfree __pyx_mstate_global->__pyx_n_u_f_bfree #define __pyx_n_u_f_blocks __pyx_mstate_global->__pyx_n_u_f_blocks #define __pyx_n_u_f_bsize __pyx_mstate_global->__pyx_n_u_f_bsize #define __pyx_n_u_f_favail __pyx_mstate_global->__pyx_n_u_f_favail #define __pyx_n_u_f_ffree __pyx_mstate_global->__pyx_n_u_f_ffree #define __pyx_n_u_f_files __pyx_mstate_global->__pyx_n_u_f_files #define __pyx_n_u_f_frsize __pyx_mstate_global->__pyx_n_u_f_frsize #define __pyx_n_u_f_namemax __pyx_mstate_global->__pyx_n_u_f_namemax #define __pyx_n_s_fd __pyx_mstate_global->__pyx_n_s_fd #define __pyx_n_s_fh __pyx_mstate_global->__pyx_n_s_fh #define __pyx_n_s_fi __pyx_mstate_global->__pyx_n_s_fi #define __pyx_n_s_fields __pyx_mstate_global->__pyx_n_s_fields #define __pyx_n_s_flags __pyx_mstate_global->__pyx_n_s_flags #define __pyx_n_s_flush __pyx_mstate_global->__pyx_n_s_flush #define __pyx_n_s_forget __pyx_mstate_global->__pyx_n_s_forget #define __pyx_n_s_fse __pyx_mstate_global->__pyx_n_s_fse #define __pyx_n_s_fsync __pyx_mstate_global->__pyx_n_s_fsync #define __pyx_n_s_fsyncdir __pyx_mstate_global->__pyx_n_s_fsyncdir #define __pyx_n_s_fuse_access_async __pyx_mstate_global->__pyx_n_s_fuse_access_async #define __pyx_kp_u_fuse_access_fuse_reply__failed_w __pyx_mstate_global->__pyx_kp_u_fuse_access_fuse_reply__failed_w #define __pyx_kp_u_fuse_buf_copy_failed_with __pyx_mstate_global->__pyx_kp_u_fuse_buf_copy_failed_with #define __pyx_n_s_fuse_create_async __pyx_mstate_global->__pyx_n_s_fuse_create_async #define __pyx_kp_u_fuse_create_fuse_reply__failed_w __pyx_mstate_global->__pyx_kp_u_fuse_create_fuse_reply__failed_w #define __pyx_n_s_fuse_flush_async __pyx_mstate_global->__pyx_n_s_fuse_flush_async #define __pyx_kp_u_fuse_flush_fuse_reply__failed_wi __pyx_mstate_global->__pyx_kp_u_fuse_flush_fuse_reply__failed_wi #define __pyx_n_s_fuse_fsync_async __pyx_mstate_global->__pyx_n_s_fuse_fsync_async #define __pyx_kp_u_fuse_fsync_fuse_reply__failed_wi __pyx_mstate_global->__pyx_kp_u_fuse_fsync_fuse_reply__failed_wi #define __pyx_n_s_fuse_fsyncdir_async __pyx_mstate_global->__pyx_n_s_fuse_fsyncdir_async #define __pyx_kp_u_fuse_fsyncdir_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_fsyncdir_fuse_reply__failed #define __pyx_n_s_fuse_getattr_async __pyx_mstate_global->__pyx_n_s_fuse_getattr_async #define __pyx_kp_u_fuse_getattr_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_getattr_fuse_reply__failed #define __pyx_n_s_fuse_getxattr_async __pyx_mstate_global->__pyx_n_s_fuse_getxattr_async #define __pyx_kp_u_fuse_getxattr_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_getxattr_fuse_reply__failed #define __pyx_n_s_fuse_link_async __pyx_mstate_global->__pyx_n_s_fuse_link_async #define __pyx_kp_u_fuse_link_fuse_reply__failed_wit __pyx_mstate_global->__pyx_kp_u_fuse_link_fuse_reply__failed_wit #define __pyx_n_s_fuse_listxattr_async __pyx_mstate_global->__pyx_n_s_fuse_listxattr_async #define __pyx_kp_u_fuse_listxattr_fuse_reply__faile __pyx_mstate_global->__pyx_kp_u_fuse_listxattr_fuse_reply__faile #define __pyx_n_s_fuse_lookup_async __pyx_mstate_global->__pyx_n_s_fuse_lookup_async #define __pyx_kp_u_fuse_lookup_fuse_reply__failed_w __pyx_mstate_global->__pyx_kp_u_fuse_lookup_fuse_reply__failed_w #define __pyx_kp_u_fuse_lowlevel_notify_delete_retu __pyx_mstate_global->__pyx_kp_u_fuse_lowlevel_notify_delete_retu #define __pyx_kp_u_fuse_lowlevel_notify_inval_entry __pyx_mstate_global->__pyx_kp_u_fuse_lowlevel_notify_inval_entry #define __pyx_kp_u_fuse_lowlevel_notify_inval_inode __pyx_mstate_global->__pyx_kp_u_fuse_lowlevel_notify_inval_inode #define __pyx_kp_u_fuse_lowlevel_notify_store_retur __pyx_mstate_global->__pyx_kp_u_fuse_lowlevel_notify_store_retur #define __pyx_n_s_fuse_mkdir_async __pyx_mstate_global->__pyx_n_s_fuse_mkdir_async #define __pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi __pyx_mstate_global->__pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi #define __pyx_n_s_fuse_mknod_async __pyx_mstate_global->__pyx_n_s_fuse_mknod_async #define __pyx_kp_u_fuse_mknod_fuse_reply__failed_wi __pyx_mstate_global->__pyx_kp_u_fuse_mknod_fuse_reply__failed_wi #define __pyx_n_s_fuse_open_async __pyx_mstate_global->__pyx_n_s_fuse_open_async #define __pyx_n_s_fuse_opendir_async __pyx_mstate_global->__pyx_n_s_fuse_opendir_async #define __pyx_kp_u_fuse_opendir_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_opendir_fuse_reply__failed #define __pyx_n_s_fuse_read_async __pyx_mstate_global->__pyx_n_s_fuse_read_async #define __pyx_kp_u_fuse_read_fuse_reply__failed_wit __pyx_mstate_global->__pyx_kp_u_fuse_read_fuse_reply__failed_wit #define __pyx_n_s_fuse_readdirplus_async __pyx_mstate_global->__pyx_n_s_fuse_readdirplus_async #define __pyx_kp_u_fuse_readdirplus_fuse_reply__fai __pyx_mstate_global->__pyx_kp_u_fuse_readdirplus_fuse_reply__fai #define __pyx_n_s_fuse_readlink_async __pyx_mstate_global->__pyx_n_s_fuse_readlink_async #define __pyx_kp_u_fuse_readlink_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_readlink_fuse_reply__failed #define __pyx_n_s_fuse_release_async __pyx_mstate_global->__pyx_n_s_fuse_release_async #define __pyx_kp_u_fuse_release_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_release_fuse_reply__failed #define __pyx_n_s_fuse_releasedir_async __pyx_mstate_global->__pyx_n_s_fuse_releasedir_async #define __pyx_kp_u_fuse_releasedir_fuse_reply__fail __pyx_mstate_global->__pyx_kp_u_fuse_releasedir_fuse_reply__fail #define __pyx_n_s_fuse_removexattr_async __pyx_mstate_global->__pyx_n_s_fuse_removexattr_async #define __pyx_kp_u_fuse_removexattr_fuse_reply__fai __pyx_mstate_global->__pyx_kp_u_fuse_removexattr_fuse_reply__fai #define __pyx_n_s_fuse_rename_async __pyx_mstate_global->__pyx_n_s_fuse_rename_async #define __pyx_kp_u_fuse_rename_fuse_reply__failed_w __pyx_mstate_global->__pyx_kp_u_fuse_rename_fuse_reply__failed_w #define __pyx_n_s_fuse_rmdir_async __pyx_mstate_global->__pyx_n_s_fuse_rmdir_async #define __pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi __pyx_mstate_global->__pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi #define __pyx_kp_u_fuse_session_mount_failed __pyx_mstate_global->__pyx_kp_u_fuse_session_mount_failed #define __pyx_kp_u_fuse_session_new_failed __pyx_mstate_global->__pyx_kp_u_fuse_session_new_failed #define __pyx_kp_u_fuse_session_receive_buf_failed __pyx_mstate_global->__pyx_kp_u_fuse_session_receive_buf_failed #define __pyx_n_s_fuse_setattr_async __pyx_mstate_global->__pyx_n_s_fuse_setattr_async #define __pyx_kp_u_fuse_setattr_clock_gettime_CLOCK __pyx_mstate_global->__pyx_kp_u_fuse_setattr_clock_gettime_CLOCK #define __pyx_kp_u_fuse_setattr_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_setattr_fuse_reply__failed #define __pyx_n_s_fuse_setxattr_async __pyx_mstate_global->__pyx_n_s_fuse_setxattr_async #define __pyx_kp_u_fuse_setxattr_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_setxattr_fuse_reply__failed #define __pyx_n_u_fuse_stacktrace __pyx_mstate_global->__pyx_n_u_fuse_stacktrace #define __pyx_n_s_fuse_statfs_async __pyx_mstate_global->__pyx_n_s_fuse_statfs_async #define __pyx_kp_u_fuse_statfs_fuse_reply__failed_w __pyx_mstate_global->__pyx_kp_u_fuse_statfs_fuse_reply__failed_w #define __pyx_n_s_fuse_symlink_async __pyx_mstate_global->__pyx_n_s_fuse_symlink_async #define __pyx_kp_u_fuse_symlink_fuse_reply__failed __pyx_mstate_global->__pyx_kp_u_fuse_symlink_fuse_reply__failed #define __pyx_n_s_fuse_unlink_async __pyx_mstate_global->__pyx_n_s_fuse_unlink_async #define __pyx_kp_u_fuse_unlink_fuse_reply__failed_w __pyx_mstate_global->__pyx_kp_u_fuse_unlink_fuse_reply__failed_w #define __pyx_n_s_fuse_write_async __pyx_mstate_global->__pyx_n_s_fuse_write_async #define __pyx_n_s_fuse_write_buf_async __pyx_mstate_global->__pyx_n_s_fuse_write_buf_async #define __pyx_kp_u_fuse_write_buf_fuse_reply__faile __pyx_mstate_global->__pyx_kp_u_fuse_write_buf_fuse_reply__faile #define __pyx_kp_u_fuse_write_fuse_reply__failed_wi __pyx_mstate_global->__pyx_kp_u_fuse_write_fuse_reply__failed_wi #define __pyx_n_s_g __pyx_mstate_global->__pyx_n_s_g #define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc #define __pyx_n_u_generation __pyx_mstate_global->__pyx_n_u_generation #define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get #define __pyx_n_s_getLogger __pyx_mstate_global->__pyx_n_s_getLogger #define __pyx_n_s_get_sup_groups __pyx_mstate_global->__pyx_n_s_get_sup_groups #define __pyx_n_s_getattr __pyx_mstate_global->__pyx_n_s_getattr #define __pyx_n_s_getfilesystemencoding __pyx_mstate_global->__pyx_n_s_getfilesystemencoding #define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate #define __pyx_n_s_getxattr __pyx_mstate_global->__pyx_n_s_getxattr #define __pyx_n_s_gids __pyx_mstate_global->__pyx_n_s_gids #define __pyx_n_s_ignore_enoent __pyx_mstate_global->__pyx_n_s_ignore_enoent #define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import #define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init #define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing #define __pyx_n_s_ino __pyx_mstate_global->__pyx_n_s_ino #define __pyx_n_s_inode __pyx_mstate_global->__pyx_n_s_inode #define __pyx_n_s_inode_p __pyx_mstate_global->__pyx_n_s_inode_p #define __pyx_n_s_invalidate_entry __pyx_mstate_global->__pyx_n_s_invalidate_entry #define __pyx_n_s_invalidate_entry_async __pyx_mstate_global->__pyx_n_s_invalidate_entry_async #define __pyx_n_s_invalidate_inode __pyx_mstate_global->__pyx_n_s_invalidate_inode #define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine #define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled #define __pyx_n_s_items __pyx_mstate_global->__pyx_n_s_items #define __pyx_n_s_join __pyx_mstate_global->__pyx_n_s_join #define __pyx_n_s_k __pyx_mstate_global->__pyx_n_s_k #define __pyx_n_s_keep_cache __pyx_mstate_global->__pyx_n_s_keep_cache #define __pyx_n_s_len __pyx_mstate_global->__pyx_n_s_len #define __pyx_n_s_len_s __pyx_mstate_global->__pyx_n_s_len_s #define __pyx_n_s_line __pyx_mstate_global->__pyx_n_s_line #define __pyx_n_s_link __pyx_mstate_global->__pyx_n_s_link #define __pyx_n_s_listdir __pyx_mstate_global->__pyx_n_s_listdir #define __pyx_n_s_listxattr __pyx_mstate_global->__pyx_n_s_listxattr #define __pyx_n_s_log __pyx_mstate_global->__pyx_n_s_log #define __pyx_n_s_logging __pyx_mstate_global->__pyx_n_s_logging #define __pyx_n_s_lookup __pyx_mstate_global->__pyx_n_s_lookup #define __pyx_n_s_lowlevel __pyx_mstate_global->__pyx_n_s_lowlevel #define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main #define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2 #define __pyx_n_s_mask __pyx_mstate_global->__pyx_n_s_mask #define __pyx_n_s_max_tasks __pyx_mstate_global->__pyx_n_s_max_tasks #define __pyx_n_s_min_tasks __pyx_mstate_global->__pyx_n_s_min_tasks #define __pyx_n_s_mkdir __pyx_mstate_global->__pyx_n_s_mkdir #define __pyx_n_s_mknod __pyx_mstate_global->__pyx_n_s_mknod #define __pyx_n_s_mountpoint __pyx_mstate_global->__pyx_n_s_mountpoint #define __pyx_kp_u_mountpoint__argument_must_be_of __pyx_mstate_global->__pyx_kp_u_mountpoint__argument_must_be_of #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name #define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2 #define __pyx_kp_u_name_argument_must_be_of_type_s __pyx_mstate_global->__pyx_kp_u_name_argument_must_be_of_type_s #define __pyx_n_s_name_b __pyx_mstate_global->__pyx_n_s_name_b #define __pyx_n_s_names __pyx_mstate_global->__pyx_n_s_names #define __pyx_n_s_namespace __pyx_mstate_global->__pyx_n_s_namespace #define __pyx_kp_u_namespace_parameter_must_be_sys __pyx_mstate_global->__pyx_kp_u_namespace_parameter_must_be_sys #define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new #define __pyx_n_s_newname __pyx_mstate_global->__pyx_n_s_newname #define __pyx_n_s_newparent __pyx_mstate_global->__pyx_n_s_newparent #define __pyx_n_s_next_id __pyx_mstate_global->__pyx_n_s_next_id #define __pyx_kp_s_no_default___reduce___due_to_non __pyx_mstate_global->__pyx_kp_s_no_default___reduce___due_to_non #define __pyx_n_s_nonseekable __pyx_mstate_global->__pyx_n_s_nonseekable #define __pyx_n_s_notify_closing __pyx_mstate_global->__pyx_n_s_notify_closing #define __pyx_n_s_notify_loop __pyx_mstate_global->__pyx_n_s_notify_loop #define __pyx_n_s_notify_store __pyx_mstate_global->__pyx_n_s_notify_store #define __pyx_n_s_now __pyx_mstate_global->__pyx_n_s_now #define __pyx_n_s_nursery __pyx_mstate_global->__pyx_n_s_nursery #define __pyx_kp_b_o __pyx_mstate_global->__pyx_kp_b_o #define __pyx_n_s_off __pyx_mstate_global->__pyx_n_s_off #define __pyx_n_s_offset __pyx_mstate_global->__pyx_n_s_offset #define __pyx_n_s_open __pyx_mstate_global->__pyx_n_s_open #define __pyx_n_s_open_nursery __pyx_mstate_global->__pyx_n_s_open_nursery #define __pyx_n_s_opendir __pyx_mstate_global->__pyx_n_s_opendir #define __pyx_n_s_ops __pyx_mstate_global->__pyx_n_s_ops #define __pyx_n_s_options __pyx_mstate_global->__pyx_n_s_options #define __pyx_n_s_os __pyx_mstate_global->__pyx_n_s_os #define __pyx_n_s_os_path __pyx_mstate_global->__pyx_n_s_os_path #define __pyx_n_s_path __pyx_mstate_global->__pyx_n_s_path #define __pyx_kp_u_path_argument_must_be_of_type_s __pyx_mstate_global->__pyx_kp_u_path_argument_must_be_of_type_s #define __pyx_n_s_path_b __pyx_mstate_global->__pyx_n_s_path_b #define __pyx_n_s_pbuf __pyx_mstate_global->__pyx_n_s_pbuf #define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle #define __pyx_n_s_pid __pyx_mstate_global->__pyx_n_s_pid #define __pyx_kp_u_proc_d_status __pyx_mstate_global->__pyx_kp_u_proc_d_status #define __pyx_n_s_put __pyx_mstate_global->__pyx_n_s_put #define __pyx_kp_u_py_retval_was_not_awaited_please __pyx_mstate_global->__pyx_kp_u_py_retval_was_not_awaited_please #define __pyx_n_s_pybuf __pyx_mstate_global->__pyx_n_s_pybuf #define __pyx_n_b_pyfuse3 __pyx_mstate_global->__pyx_n_b_pyfuse3 #define __pyx_n_s_pyfuse3 __pyx_mstate_global->__pyx_n_s_pyfuse3 #define __pyx_n_u_pyfuse3 __pyx_mstate_global->__pyx_n_u_pyfuse3 #define __pyx_n_s_pyfuse3_2 __pyx_mstate_global->__pyx_n_s_pyfuse3_2 #define __pyx_kp_u_pyfuse3___init __pyx_mstate_global->__pyx_kp_u_pyfuse3___init #define __pyx_kp_u_pyfuse_02d __pyx_mstate_global->__pyx_kp_u_pyfuse_02d #define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError #define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum #define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result #define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state #define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type #define __pyx_n_s_pyx_unpickle_RequestContext __pyx_mstate_global->__pyx_n_s_pyx_unpickle_RequestContext #define __pyx_n_s_pyx_unpickle__WorkerData __pyx_mstate_global->__pyx_n_s_pyx_unpickle__WorkerData #define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable #define __pyx_n_s_queue __pyx_mstate_global->__pyx_n_s_queue #define __pyx_n_u_r __pyx_mstate_global->__pyx_n_u_r #define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range #define __pyx_n_s_read __pyx_mstate_global->__pyx_n_s_read #define __pyx_n_s_readdir __pyx_mstate_global->__pyx_n_s_readdir #define __pyx_n_s_readdir_reply __pyx_mstate_global->__pyx_n_s_readdir_reply #define __pyx_n_s_readlink __pyx_mstate_global->__pyx_n_s_readlink #define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce #define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython #define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex #define __pyx_n_s_release __pyx_mstate_global->__pyx_n_s_release #define __pyx_n_s_releasedir __pyx_mstate_global->__pyx_n_s_releasedir #define __pyx_n_s_removexattr __pyx_mstate_global->__pyx_n_s_removexattr #define __pyx_n_s_rename __pyx_mstate_global->__pyx_n_s_rename #define __pyx_n_s_req __pyx_mstate_global->__pyx_n_s_req #define __pyx_n_s_res __pyx_mstate_global->__pyx_n_s_res #define __pyx_n_s_ret __pyx_mstate_global->__pyx_n_s_ret #define __pyx_n_s_rmdir __pyx_mstate_global->__pyx_n_s_rmdir #define __pyx_kp_u_s_No_tasks_waiting_starting_ano __pyx_mstate_global->__pyx_kp_u_s_No_tasks_waiting_starting_ano #define __pyx_kp_u_s_terminated __pyx_mstate_global->__pyx_kp_u_s_terminated #define __pyx_kp_u_s_too_many_idle_tasks_d_total_d __pyx_mstate_global->__pyx_kp_u_s_too_many_idle_tasks_d_total_d #define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self #define __pyx_kp_s_self_req_cannot_be_converted_to __pyx_mstate_global->__pyx_kp_s_self_req_cannot_be_converted_to #define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send #define __pyx_n_s_session_loop __pyx_mstate_global->__pyx_n_s_session_loop #define __pyx_n_s_setattr __pyx_mstate_global->__pyx_n_s_setattr #define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate #define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython #define __pyx_n_s_setxattr __pyx_mstate_global->__pyx_n_s_setxattr #define __pyx_n_s_size_guess __pyx_mstate_global->__pyx_n_s_size_guess #define __pyx_n_s_slen __pyx_mstate_global->__pyx_n_s_slen #define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec #define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split #define __pyx_kp_s_src_pyfuse3___init___pyx __pyx_mstate_global->__pyx_kp_s_src_pyfuse3___init___pyx #define __pyx_kp_s_src_pyfuse3_handlers_pxi __pyx_mstate_global->__pyx_kp_s_src_pyfuse3_handlers_pxi #define __pyx_kp_s_src_pyfuse3_internal_pxi __pyx_mstate_global->__pyx_kp_s_src_pyfuse3_internal_pxi #define __pyx_n_u_st_atime_ns __pyx_mstate_global->__pyx_n_u_st_atime_ns #define __pyx_n_u_st_birthtime_ns __pyx_mstate_global->__pyx_n_u_st_birthtime_ns #define __pyx_n_u_st_blksize __pyx_mstate_global->__pyx_n_u_st_blksize #define __pyx_n_u_st_blocks __pyx_mstate_global->__pyx_n_u_st_blocks #define __pyx_n_u_st_ctime_ns __pyx_mstate_global->__pyx_n_u_st_ctime_ns #define __pyx_n_u_st_gid __pyx_mstate_global->__pyx_n_u_st_gid #define __pyx_n_u_st_ino __pyx_mstate_global->__pyx_n_u_st_ino #define __pyx_n_u_st_mode __pyx_mstate_global->__pyx_n_u_st_mode #define __pyx_n_u_st_mtime_ns __pyx_mstate_global->__pyx_n_u_st_mtime_ns #define __pyx_n_u_st_nlink __pyx_mstate_global->__pyx_n_u_st_nlink #define __pyx_n_u_st_rdev __pyx_mstate_global->__pyx_n_u_st_rdev #define __pyx_n_u_st_size __pyx_mstate_global->__pyx_n_u_st_size #define __pyx_n_u_st_uid __pyx_mstate_global->__pyx_n_u_st_uid #define __pyx_n_s_stacktrace __pyx_mstate_global->__pyx_n_s_stacktrace #define __pyx_n_s_start __pyx_mstate_global->__pyx_n_s_start #define __pyx_n_s_start_soon __pyx_mstate_global->__pyx_n_s_start_soon #define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith #define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state #define __pyx_n_s_statfs __pyx_mstate_global->__pyx_n_s_statfs #define __pyx_n_s_stats __pyx_mstate_global->__pyx_n_s_stats #define __pyx_n_s_strerror __pyx_mstate_global->__pyx_n_s_strerror #define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource #define __pyx_n_s_supports_dot_lookup __pyx_mstate_global->__pyx_n_s_supports_dot_lookup #define __pyx_n_u_surrogateescape __pyx_mstate_global->__pyx_n_u_surrogateescape #define __pyx_n_s_symlink __pyx_mstate_global->__pyx_n_s_symlink #define __pyx_n_s_syncfs __pyx_mstate_global->__pyx_n_s_syncfs #define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys #define __pyx_n_u_system __pyx_mstate_global->__pyx_n_u_system #define __pyx_n_s_t __pyx_mstate_global->__pyx_n_s_t #define __pyx_n_s_target __pyx_mstate_global->__pyx_n_s_target #define __pyx_n_s_terminate __pyx_mstate_global->__pyx_n_s_terminate #define __pyx_kp_u_terminating_notify_thread __pyx_mstate_global->__pyx_kp_u_terminating_notify_thread #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test #define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading #define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw #define __pyx_n_s_tmp __pyx_mstate_global->__pyx_n_s_tmp #define __pyx_n_s_to_set __pyx_mstate_global->__pyx_n_s_to_set #define __pyx_n_s_token __pyx_mstate_global->__pyx_n_s_token #define __pyx_n_s_trio __pyx_mstate_global->__pyx_n_s_trio #define __pyx_n_s_trio_token __pyx_mstate_global->__pyx_n_s_trio_token #define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing #define __pyx_kp_u_unknown_flag_s_o __pyx_mstate_global->__pyx_kp_u_unknown_flag_s_o #define __pyx_n_s_unlink __pyx_mstate_global->__pyx_n_s_unlink #define __pyx_n_s_unmount __pyx_mstate_global->__pyx_n_s_unmount #define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update #define __pyx_kp_u_us_ascii __pyx_mstate_global->__pyx_kp_u_us_ascii #define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate #define __pyx_n_u_user __pyx_mstate_global->__pyx_n_u_user #define __pyx_n_s_v __pyx_mstate_global->__pyx_n_s_v #define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value #define __pyx_n_s_version __pyx_mstate_global->__pyx_n_s_version #define __pyx_n_s_wait_fuse_readable __pyx_mstate_global->__pyx_n_s_wait_fuse_readable #define __pyx_n_s_wait_readable __pyx_mstate_global->__pyx_n_s_wait_readable #define __pyx_n_s_write __pyx_mstate_global->__pyx_n_s_write #define __pyx_n_s_x __pyx_mstate_global->__pyx_n_s_x #define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 #define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 #define __pyx_int_35895208 __pyx_mstate_global->__pyx_int_35895208 #define __pyx_int_44617694 __pyx_mstate_global->__pyx_int_44617694 #define __pyx_int_144710093 __pyx_mstate_global->__pyx_int_144710093 #define __pyx_int_154557683 __pyx_mstate_global->__pyx_int_154557683 #define __pyx_int_240542287 __pyx_mstate_global->__pyx_int_240542287 #define __pyx_int_244161614 __pyx_mstate_global->__pyx_int_244161614 #define __pyx_int_1000000000 __pyx_mstate_global->__pyx_int_1000000000 #define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_ #define __pyx_slice__45 __pyx_mstate_global->__pyx_slice__45 #define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15 #define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34 #define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 #define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 #define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38 #define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39 #define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40 #define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41 #define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42 #define __pyx_tuple__44 __pyx_mstate_global->__pyx_tuple__44 #define __pyx_tuple__46 __pyx_mstate_global->__pyx_tuple__46 #define __pyx_tuple__48 __pyx_mstate_global->__pyx_tuple__48 #define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51 #define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53 #define __pyx_tuple__54 __pyx_mstate_global->__pyx_tuple__54 #define __pyx_tuple__56 __pyx_mstate_global->__pyx_tuple__56 #define __pyx_tuple__58 __pyx_mstate_global->__pyx_tuple__58 #define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59 #define __pyx_tuple__60 __pyx_mstate_global->__pyx_tuple__60 #define __pyx_tuple__61 __pyx_mstate_global->__pyx_tuple__61 #define __pyx_tuple__62 __pyx_mstate_global->__pyx_tuple__62 #define __pyx_tuple__63 __pyx_mstate_global->__pyx_tuple__63 #define __pyx_tuple__64 __pyx_mstate_global->__pyx_tuple__64 #define __pyx_tuple__65 __pyx_mstate_global->__pyx_tuple__65 #define __pyx_tuple__66 __pyx_mstate_global->__pyx_tuple__66 #define __pyx_tuple__67 __pyx_mstate_global->__pyx_tuple__67 #define __pyx_tuple__68 __pyx_mstate_global->__pyx_tuple__68 #define __pyx_tuple__69 __pyx_mstate_global->__pyx_tuple__69 #define __pyx_tuple__70 __pyx_mstate_global->__pyx_tuple__70 #define __pyx_tuple__71 __pyx_mstate_global->__pyx_tuple__71 #define __pyx_tuple__72 __pyx_mstate_global->__pyx_tuple__72 #define __pyx_tuple__75 __pyx_mstate_global->__pyx_tuple__75 #define __pyx_tuple__76 __pyx_mstate_global->__pyx_tuple__76 #define __pyx_tuple__77 __pyx_mstate_global->__pyx_tuple__77 #define __pyx_tuple__78 __pyx_mstate_global->__pyx_tuple__78 #define __pyx_tuple__79 __pyx_mstate_global->__pyx_tuple__79 #define __pyx_tuple__80 __pyx_mstate_global->__pyx_tuple__80 #define __pyx_tuple__81 __pyx_mstate_global->__pyx_tuple__81 #define __pyx_tuple__82 __pyx_mstate_global->__pyx_tuple__82 #define __pyx_tuple__84 __pyx_mstate_global->__pyx_tuple__84 #define __pyx_tuple__87 __pyx_mstate_global->__pyx_tuple__87 #define __pyx_tuple__94 __pyx_mstate_global->__pyx_tuple__94 #define __pyx_tuple__96 __pyx_mstate_global->__pyx_tuple__96 #define __pyx_codeobj__2 __pyx_mstate_global->__pyx_codeobj__2 #define __pyx_codeobj__3 __pyx_mstate_global->__pyx_codeobj__3 #define __pyx_codeobj__4 __pyx_mstate_global->__pyx_codeobj__4 #define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 #define __pyx_codeobj__6 __pyx_mstate_global->__pyx_codeobj__6 #define __pyx_codeobj__7 __pyx_mstate_global->__pyx_codeobj__7 #define __pyx_codeobj__8 __pyx_mstate_global->__pyx_codeobj__8 #define __pyx_codeobj__9 __pyx_mstate_global->__pyx_codeobj__9 #define __pyx_tuple__108 __pyx_mstate_global->__pyx_tuple__108 #define __pyx_tuple__110 __pyx_mstate_global->__pyx_tuple__110 #define __pyx_tuple__112 __pyx_mstate_global->__pyx_tuple__112 #define __pyx_tuple__114 __pyx_mstate_global->__pyx_tuple__114 #define __pyx_tuple__115 __pyx_mstate_global->__pyx_tuple__115 #define __pyx_tuple__117 __pyx_mstate_global->__pyx_tuple__117 #define __pyx_tuple__118 __pyx_mstate_global->__pyx_tuple__118 #define __pyx_tuple__120 __pyx_mstate_global->__pyx_tuple__120 #define __pyx_tuple__122 __pyx_mstate_global->__pyx_tuple__122 #define __pyx_tuple__124 __pyx_mstate_global->__pyx_tuple__124 #define __pyx_tuple__125 __pyx_mstate_global->__pyx_tuple__125 #define __pyx_tuple__127 __pyx_mstate_global->__pyx_tuple__127 #define __pyx_tuple__128 __pyx_mstate_global->__pyx_tuple__128 #define __pyx_tuple__130 __pyx_mstate_global->__pyx_tuple__130 #define __pyx_tuple__132 __pyx_mstate_global->__pyx_tuple__132 #define __pyx_tuple__133 __pyx_mstate_global->__pyx_tuple__133 #define __pyx_tuple__135 __pyx_mstate_global->__pyx_tuple__135 #define __pyx_tuple__137 __pyx_mstate_global->__pyx_tuple__137 #define __pyx_tuple__139 __pyx_mstate_global->__pyx_tuple__139 #define __pyx_codeobj__10 __pyx_mstate_global->__pyx_codeobj__10 #define __pyx_codeobj__11 __pyx_mstate_global->__pyx_codeobj__11 #define __pyx_codeobj__12 __pyx_mstate_global->__pyx_codeobj__12 #define __pyx_codeobj__13 __pyx_mstate_global->__pyx_codeobj__13 #define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14 #define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16 #define __pyx_codeobj__17 __pyx_mstate_global->__pyx_codeobj__17 #define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18 #define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19 #define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20 #define __pyx_codeobj__21 __pyx_mstate_global->__pyx_codeobj__21 #define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22 #define __pyx_codeobj__23 __pyx_mstate_global->__pyx_codeobj__23 #define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 #define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25 #define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26 #define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27 #define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28 #define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30 #define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31 #define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32 #define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33 #define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35 #define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43 #define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55 #define __pyx_codeobj__57 __pyx_mstate_global->__pyx_codeobj__57 #define __pyx_codeobj__73 __pyx_mstate_global->__pyx_codeobj__73 #define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74 #define __pyx_codeobj__83 __pyx_mstate_global->__pyx_codeobj__83 #define __pyx_codeobj__85 __pyx_mstate_global->__pyx_codeobj__85 #define __pyx_codeobj__86 __pyx_mstate_global->__pyx_codeobj__86 #define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88 #define __pyx_codeobj__89 __pyx_mstate_global->__pyx_codeobj__89 #define __pyx_codeobj__90 __pyx_mstate_global->__pyx_codeobj__90 #define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91 #define __pyx_codeobj__92 __pyx_mstate_global->__pyx_codeobj__92 #define __pyx_codeobj__93 __pyx_mstate_global->__pyx_codeobj__93 #define __pyx_codeobj__95 __pyx_mstate_global->__pyx_codeobj__95 #define __pyx_codeobj__97 __pyx_mstate_global->__pyx_codeobj__97 #define __pyx_codeobj__98 __pyx_mstate_global->__pyx_codeobj__98 #define __pyx_codeobj__99 __pyx_mstate_global->__pyx_codeobj__99 #define __pyx_codeobj__100 __pyx_mstate_global->__pyx_codeobj__100 #define __pyx_codeobj__101 __pyx_mstate_global->__pyx_codeobj__101 #define __pyx_codeobj__102 __pyx_mstate_global->__pyx_codeobj__102 #define __pyx_codeobj__103 __pyx_mstate_global->__pyx_codeobj__103 #define __pyx_codeobj__104 __pyx_mstate_global->__pyx_codeobj__104 #define __pyx_codeobj__105 __pyx_mstate_global->__pyx_codeobj__105 #define __pyx_codeobj__106 __pyx_mstate_global->__pyx_codeobj__106 #define __pyx_codeobj__107 __pyx_mstate_global->__pyx_codeobj__107 #define __pyx_codeobj__109 __pyx_mstate_global->__pyx_codeobj__109 #define __pyx_codeobj__111 __pyx_mstate_global->__pyx_codeobj__111 #define __pyx_codeobj__113 __pyx_mstate_global->__pyx_codeobj__113 #define __pyx_codeobj__116 __pyx_mstate_global->__pyx_codeobj__116 #define __pyx_codeobj__119 __pyx_mstate_global->__pyx_codeobj__119 #define __pyx_codeobj__121 __pyx_mstate_global->__pyx_codeobj__121 #define __pyx_codeobj__123 __pyx_mstate_global->__pyx_codeobj__123 #define __pyx_codeobj__126 __pyx_mstate_global->__pyx_codeobj__126 #define __pyx_codeobj__129 __pyx_mstate_global->__pyx_codeobj__129 #define __pyx_codeobj__131 __pyx_mstate_global->__pyx_codeobj__131 #define __pyx_codeobj__134 __pyx_mstate_global->__pyx_codeobj__134 #define __pyx_codeobj__136 __pyx_mstate_global->__pyx_codeobj__136 #define __pyx_codeobj__138 __pyx_mstate_global->__pyx_codeobj__138 #define __pyx_codeobj__140 __pyx_mstate_global->__pyx_codeobj__140 #define __pyx_codeobj__141 __pyx_mstate_global->__pyx_codeobj__141 /* #### Code section: module_code ### */ /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_10_Container_1__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_10_Container___reduce_cython__, "_Container.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_10_Container_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_10_Container_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_10_Container___reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_10_Container_1__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_10_Container___reduce_cython__(((struct __pyx_obj_7pyfuse3__Container *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_10_Container___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3__Container *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_req_cannot_be_converted_to, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3._Container.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_10_Container_3__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_10_Container_2__setstate_cython__, "_Container.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_10_Container_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_10_Container_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_10_Container_2__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_10_Container_3__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3._Container.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_10_Container_2__setstate_cython__(((struct __pyx_obj_7pyfuse3__Container *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_10_Container_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3__Container *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.req cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_req_cannot_be_converted_to, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3._Container.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":33 * cdef uint64_t fh * * cdef void fuse_init (void *userdata, fuse_conn_info *conn): # <<<<<<<<<<<<<< * if not conn.capable & FUSE_CAP_READDIRPLUS: * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') */ static void __pyx_f_7pyfuse3_fuse_init(CYTHON_UNUSED void *__pyx_v_userdata, struct fuse_conn_info *__pyx_v_conn) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_init", 1); /* "src/pyfuse3/handlers.pxi":34 * * cdef void fuse_init (void *userdata, fuse_conn_info *conn): * if not conn.capable & FUSE_CAP_READDIRPLUS: # <<<<<<<<<<<<<< * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) */ __pyx_t_1 = (!((__pyx_v_conn->capable & FUSE_CAP_READDIRPLUS) != 0)); if (unlikely(__pyx_t_1)) { /* "src/pyfuse3/handlers.pxi":35 * cdef void fuse_init (void *userdata, fuse_conn_info *conn): * if not conn.capable & FUSE_CAP_READDIRPLUS: * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') # <<<<<<<<<<<<<< * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 35, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":34 * * cdef void fuse_init (void *userdata, fuse_conn_info *conn): * if not conn.capable & FUSE_CAP_READDIRPLUS: # <<<<<<<<<<<<<< * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) */ } /* "src/pyfuse3/handlers.pxi":36 * if not conn.capable & FUSE_CAP_READDIRPLUS: * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) # <<<<<<<<<<<<<< * * if (operations.supports_dot_lookup and */ __pyx_v_conn->want = (__pyx_v_conn->want & (~((unsigned int)FUSE_CAP_READDIRPLUS_AUTO))); /* "src/pyfuse3/handlers.pxi":38 * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) * * if (operations.supports_dot_lookup and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_supports_dot_lookup); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 38, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L5_bool_binop_done; } /* "src/pyfuse3/handlers.pxi":39 * * if (operations.supports_dot_lookup and * conn.capable & FUSE_CAP_EXPORT_SUPPORT): # <<<<<<<<<<<<<< * conn.want |= FUSE_CAP_EXPORT_SUPPORT * if (operations.enable_writeback_cache and */ __pyx_t_3 = ((__pyx_v_conn->capable & FUSE_CAP_EXPORT_SUPPORT) != 0); __pyx_t_1 = __pyx_t_3; __pyx_L5_bool_binop_done:; /* "src/pyfuse3/handlers.pxi":38 * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) * * if (operations.supports_dot_lookup and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT */ if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":40 * if (operations.supports_dot_lookup and * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT # <<<<<<<<<<<<<< * if (operations.enable_writeback_cache and * conn.capable & FUSE_CAP_WRITEBACK_CACHE): */ __pyx_v_conn->want = (__pyx_v_conn->want | FUSE_CAP_EXPORT_SUPPORT); /* "src/pyfuse3/handlers.pxi":38 * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) * * if (operations.supports_dot_lookup and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT */ } /* "src/pyfuse3/handlers.pxi":41 * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT * if (operations.enable_writeback_cache and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_enable_writeback_cache); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 41, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L8_bool_binop_done; } /* "src/pyfuse3/handlers.pxi":42 * conn.want |= FUSE_CAP_EXPORT_SUPPORT * if (operations.enable_writeback_cache and * conn.capable & FUSE_CAP_WRITEBACK_CACHE): # <<<<<<<<<<<<<< * conn.want |= FUSE_CAP_WRITEBACK_CACHE * if (operations.enable_acl and */ __pyx_t_3 = ((__pyx_v_conn->capable & FUSE_CAP_WRITEBACK_CACHE) != 0); __pyx_t_1 = __pyx_t_3; __pyx_L8_bool_binop_done:; /* "src/pyfuse3/handlers.pxi":41 * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT * if (operations.enable_writeback_cache and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE */ if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":43 * if (operations.enable_writeback_cache and * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE # <<<<<<<<<<<<<< * if (operations.enable_acl and * conn.capable & FUSE_CAP_POSIX_ACL): */ __pyx_v_conn->want = (__pyx_v_conn->want | FUSE_CAP_WRITEBACK_CACHE); /* "src/pyfuse3/handlers.pxi":41 * conn.capable & FUSE_CAP_EXPORT_SUPPORT): * conn.want |= FUSE_CAP_EXPORT_SUPPORT * if (operations.enable_writeback_cache and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE */ } /* "src/pyfuse3/handlers.pxi":44 * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE * if (operations.enable_acl and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_POSIX_ACL): * conn.want |= FUSE_CAP_POSIX_ACL */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_enable_acl); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 44, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L11_bool_binop_done; } /* "src/pyfuse3/handlers.pxi":45 * conn.want |= FUSE_CAP_WRITEBACK_CACHE * if (operations.enable_acl and * conn.capable & FUSE_CAP_POSIX_ACL): # <<<<<<<<<<<<<< * conn.want |= FUSE_CAP_POSIX_ACL * */ __pyx_t_3 = ((__pyx_v_conn->capable & FUSE_CAP_POSIX_ACL) != 0); __pyx_t_1 = __pyx_t_3; __pyx_L11_bool_binop_done:; /* "src/pyfuse3/handlers.pxi":44 * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE * if (operations.enable_acl and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_POSIX_ACL): * conn.want |= FUSE_CAP_POSIX_ACL */ if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":46 * if (operations.enable_acl and * conn.capable & FUSE_CAP_POSIX_ACL): * conn.want |= FUSE_CAP_POSIX_ACL # <<<<<<<<<<<<<< * * # Blocking rather than async, in case we decide to let the */ __pyx_v_conn->want = (__pyx_v_conn->want | FUSE_CAP_POSIX_ACL); /* "src/pyfuse3/handlers.pxi":44 * conn.capable & FUSE_CAP_WRITEBACK_CACHE): * conn.want |= FUSE_CAP_WRITEBACK_CACHE * if (operations.enable_acl and # <<<<<<<<<<<<<< * conn.capable & FUSE_CAP_POSIX_ACL): * conn.want |= FUSE_CAP_POSIX_ACL */ } /* "src/pyfuse3/handlers.pxi":50 * # Blocking rather than async, in case we decide to let the * # init handler modify `conn` in the future. * operations.init() # <<<<<<<<<<<<<< * * cdef void fuse_lookup (fuse_req_t req, fuse_ino_t parent, */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":33 * cdef uint64_t fh * * cdef void fuse_init (void *userdata, fuse_conn_info *conn): # <<<<<<<<<<<<<< * if not conn.capable & FUSE_CAP_READDIRPLUS: * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.fuse_init", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "src/pyfuse3/handlers.pxi":52 * operations.init() * * cdef void fuse_lookup (fuse_req_t req, fuse_ino_t parent, # <<<<<<<<<<<<<< * const_char *name): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_lookup(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_lookup", 1); /* "src/pyfuse3/handlers.pxi":54 * cdef void fuse_lookup (fuse_req_t req, fuse_ino_t parent, * const_char *name): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":55 * const_char *name): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":56 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":57 * c.req = req * c.parent = parent * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_lookup_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_lookup_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":52 * operations.init() * * cdef void fuse_lookup (fuse_req_t req, fuse_ino_t parent, # <<<<<<<<<<<<<< * const_char *name): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":59 * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) * * async def fuse_lookup_async (_Container c, name): # <<<<<<<<<<<<<< * cdef EntryAttributes entry * cdef int ret */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_1fuse_lookup_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_fuse_lookup_async, "fuse_lookup_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_1fuse_lookup_async = {"fuse_lookup_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_1fuse_lookup_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_fuse_lookup_async}; static PyObject *__pyx_pw_7pyfuse3_1fuse_lookup_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_lookup_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 59, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_lookup_async", 1, 2, 2, 1); __PYX_ERR(1, 59, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_lookup_async") < 0)) __PYX_ERR(1, 59, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_lookup_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 59, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_lookup_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 59, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_fuse_lookup_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_fuse_lookup_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_lookup_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct__fuse_lookup_async(__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 59, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_2generator, __pyx_codeobj__2, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_lookup_async, __pyx_n_s_fuse_lookup_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_lookup_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_lookup_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 59, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":63 * cdef int ret * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * entry = await operations.lookup( */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":64 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.lookup( * c.parent, name, ctx) */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":65 * ctx = get_request_context(c.req) * try: * entry = await operations.lookup( # <<<<<<<<<<<<<< * c.parent, name, ctx) * except FUSEError as e: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_lookup); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 65, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); /* "src/pyfuse3/handlers.pxi":66 * try: * entry = await operations.lookup( * c.parent, name, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 66, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 65, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 65, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 65, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } /* "src/pyfuse3/handlers.pxi":65 * ctx = get_request_context(c.req) * try: * entry = await operations.lookup( # <<<<<<<<<<<<<< * c.parent, name, ctx) * except FUSEError as e: */ if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 65, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":64 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.lookup( * c.parent, name, ctx) */ } /* "src/pyfuse3/handlers.pxi":70 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_entry(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_entry->fuse_param)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":67 * entry = await operations.lookup( * c.parent, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_lookup_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(1, 67, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":68 * c.parent, name, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 68, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 68, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":67 * entry = await operations.lookup( * c.parent, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":64 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.lookup( * c.parent, name, ctx) */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":72 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_lookup(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":73 * * if ret != 0: * log.error('fuse_lookup(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_lookup_fuse_reply__failed_w, __pyx_t_1}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":72 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_lookup(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":59 * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) * * async def fuse_lookup_async (_Container c, name): # <<<<<<<<<<<<<< * cdef EntryAttributes entry * cdef int ret */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_lookup_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":76 * * * cdef void fuse_forget (fuse_req_t req, fuse_ino_t ino, # <<<<<<<<<<<<<< * uint64_t nlookup): * save_retval(operations.forget([(ino, nlookup)])) */ static void __pyx_f_7pyfuse3_fuse_forget(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, uint64_t __pyx_v_nlookup) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_forget", 1); /* "src/pyfuse3/handlers.pxi":78 * cdef void fuse_forget (fuse_req_t req, fuse_ino_t ino, * uint64_t nlookup): * save_retval(operations.forget([(ino, nlookup)])) # <<<<<<<<<<<<<< * fuse_reply_none(req) * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_forget); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_fuse_ino_t(__pyx_v_ino); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_nlookup); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(1, 78, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4)) __PYX_ERR(1, 78, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(1, 78, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 78, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":79 * uint64_t nlookup): * save_retval(operations.forget([(ino, nlookup)])) * fuse_reply_none(req) # <<<<<<<<<<<<<< * * */ fuse_reply_none(__pyx_v_req); /* "src/pyfuse3/handlers.pxi":76 * * * cdef void fuse_forget (fuse_req_t req, fuse_ino_t ino, # <<<<<<<<<<<<<< * uint64_t nlookup): * save_retval(operations.forget([(ino, nlookup)])) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.fuse_forget", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "src/pyfuse3/handlers.pxi":82 * * * cdef void fuse_forget_multi(fuse_req_t req, size_t count, # <<<<<<<<<<<<<< * fuse_forget_data *forgets): * forget_list = list() */ static void __pyx_f_7pyfuse3_fuse_forget_multi(fuse_req_t __pyx_v_req, size_t __pyx_v_count, struct fuse_forget_data *__pyx_v_forgets) { PyObject *__pyx_v_forget_list = NULL; struct fuse_forget_data __pyx_v_el; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; struct fuse_forget_data *__pyx_t_2; struct fuse_forget_data *__pyx_t_3; struct fuse_forget_data *__pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; unsigned int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_forget_multi", 1); /* "src/pyfuse3/handlers.pxi":84 * cdef void fuse_forget_multi(fuse_req_t req, size_t count, * fuse_forget_data *forgets): * forget_list = list() # <<<<<<<<<<<<<< * for el in forgets[:count]: * forget_list.append((el.ino, el.nlookup)) */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_forget_list = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":85 * fuse_forget_data *forgets): * forget_list = list() * for el in forgets[:count]: # <<<<<<<<<<<<<< * forget_list.append((el.ino, el.nlookup)) * save_retval(operations.forget(forget_list)) */ __pyx_t_3 = (__pyx_v_forgets + __pyx_v_count); for (__pyx_t_4 = __pyx_v_forgets; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_v_el = (__pyx_t_2[0]); /* "src/pyfuse3/handlers.pxi":86 * forget_list = list() * for el in forgets[:count]: * forget_list.append((el.ino, el.nlookup)) # <<<<<<<<<<<<<< * save_retval(operations.forget(forget_list)) * fuse_reply_none(req) */ __pyx_t_1 = __Pyx_PyInt_From_fuse_ino_t(__pyx_v_el.ino); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyInt_From_uint64_t(__pyx_v_el.nlookup); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(1, 86, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5)) __PYX_ERR(1, 86, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_forget_list, __pyx_t_6); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 86, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } /* "src/pyfuse3/handlers.pxi":87 * for el in forgets[:count]: * forget_list.append((el.ino, el.nlookup)) * save_retval(operations.forget(forget_list)) # <<<<<<<<<<<<<< * fuse_reply_none(req) * */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_forget); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_forget_list}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_6); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 87, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":88 * forget_list.append((el.ino, el.nlookup)) * save_retval(operations.forget(forget_list)) * fuse_reply_none(req) # <<<<<<<<<<<<<< * * */ fuse_reply_none(__pyx_v_req); /* "src/pyfuse3/handlers.pxi":82 * * * cdef void fuse_forget_multi(fuse_req_t req, size_t count, # <<<<<<<<<<<<<< * fuse_forget_data *forgets): * forget_list = list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("pyfuse3.fuse_forget_multi", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_v_forget_list); __Pyx_RefNannyFinishContext(); } /* "src/pyfuse3/handlers.pxi":91 * * * cdef void fuse_getattr (fuse_req_t req, fuse_ino_t ino, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_getattr(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, CYTHON_UNUSED struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_getattr", 1); /* "src/pyfuse3/handlers.pxi":93 * cdef void fuse_getattr (fuse_req_t req, fuse_ino_t ino, * fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 93, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":94 * fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * save_retval(fuse_getattr_async(c)) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":95 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * save_retval(fuse_getattr_async(c)) * */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":96 * c.req = req * c.ino = ino * save_retval(fuse_getattr_async(c)) # <<<<<<<<<<<<<< * * async def fuse_getattr_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_getattr_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 96, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":91 * * * cdef void fuse_getattr (fuse_req_t req, fuse_ino_t ino, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_getattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":98 * save_retval(fuse_getattr_async(c)) * * async def fuse_getattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_4fuse_getattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_3fuse_getattr_async, "fuse_getattr_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_4fuse_getattr_async = {"fuse_getattr_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_4fuse_getattr_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_3fuse_getattr_async}; static PyObject *__pyx_pw_7pyfuse3_4fuse_getattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_getattr_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 98, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_getattr_async") < 0)) __PYX_ERR(1, 98, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_getattr_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 98, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_getattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 98, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_3fuse_getattr_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_3fuse_getattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_getattr_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 98, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_5generator1, __pyx_codeobj__3, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_getattr_async, __pyx_n_s_fuse_getattr_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_getattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_getattr_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 98, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":102 * cdef EntryAttributes entry * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * entry = await operations.getattr(c.ino, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":103 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.getattr(c.ino, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":104 * ctx = get_request_context(c.req) * try: * entry = await operations.getattr(c.ino, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_getattr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 104, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 104, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 104, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 104, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 104, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 104, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":103 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.getattr(c.ino, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":108 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_attr(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_entry->attr, __pyx_cur_scope->__pyx_v_entry->fuse_param.attr_timeout); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":105 * try: * entry = await operations.getattr(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_getattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(1, 105, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":106 * entry = await operations.getattr(c.ino, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 106, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 106, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":105 * try: * entry = await operations.getattr(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":103 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.getattr(c.ino, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":110 * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_getattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":111 * * if ret != 0: * log.error('fuse_getattr(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_getattr_fuse_reply__failed, __pyx_t_1}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":110 * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_getattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":98 * save_retval(fuse_getattr_async(c)) * * async def fuse_getattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_getattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":114 * * * cdef void fuse_setattr (fuse_req_t req, fuse_ino_t ino, struct_stat *stat, # <<<<<<<<<<<<<< * int to_set, fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_setattr(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, struct stat *__pyx_v_stat, int __pyx_v_to_set, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_fh = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_setattr", 1); /* "src/pyfuse3/handlers.pxi":116 * cdef void fuse_setattr (fuse_req_t req, fuse_ino_t ino, struct_stat *stat, * int to_set, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":117 * int to_set, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.stat = stat[0] */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":118 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.stat = stat[0] * c.flags = to_set */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":119 * c.req = req * c.ino = ino * c.stat = stat[0] # <<<<<<<<<<<<<< * c.flags = to_set * if fi is NULL: */ __pyx_v_c->stat = (__pyx_v_stat[0]); /* "src/pyfuse3/handlers.pxi":120 * c.ino = ino * c.stat = stat[0] * c.flags = to_set # <<<<<<<<<<<<<< * if fi is NULL: * fh = None */ __pyx_v_c->flags = __pyx_v_to_set; /* "src/pyfuse3/handlers.pxi":121 * c.stat = stat[0] * c.flags = to_set * if fi is NULL: # <<<<<<<<<<<<<< * fh = None * else: */ __pyx_t_2 = (__pyx_v_fi == NULL); if (__pyx_t_2) { /* "src/pyfuse3/handlers.pxi":122 * c.flags = to_set * if fi is NULL: * fh = None # <<<<<<<<<<<<<< * else: * fh = fi.fh */ __Pyx_INCREF(Py_None); __pyx_v_fh = Py_None; /* "src/pyfuse3/handlers.pxi":121 * c.stat = stat[0] * c.flags = to_set * if fi is NULL: # <<<<<<<<<<<<<< * fh = None * else: */ goto __pyx_L3; } /* "src/pyfuse3/handlers.pxi":124 * fh = None * else: * fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_setattr_async(c, fh)) * */ /*else*/ { __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_fi->fh); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_fh = __pyx_t_1; __pyx_t_1 = 0; } __pyx_L3:; /* "src/pyfuse3/handlers.pxi":125 * else: * fh = fi.fh * save_retval(fuse_setattr_async(c, fh)) # <<<<<<<<<<<<<< * * async def fuse_setattr_async (_Container c, fh): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_setattr_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_v_fh}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":114 * * * cdef void fuse_setattr (fuse_req_t req, fuse_ino_t ino, struct_stat *stat, # <<<<<<<<<<<<<< * int to_set, fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_setattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_XDECREF(__pyx_v_fh); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":127 * save_retval(fuse_setattr_async(c, fh)) * * async def fuse_setattr_async (_Container c, fh): # <<<<<<<<<<<<<< * cdef int ret * cdef timespec now */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_7fuse_setattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_6fuse_setattr_async, "fuse_setattr_async(_Container c, fh)"); static PyMethodDef __pyx_mdef_7pyfuse3_7fuse_setattr_async = {"fuse_setattr_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_7fuse_setattr_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_6fuse_setattr_async}; static PyObject *__pyx_pw_7pyfuse3_7fuse_setattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_fh = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_setattr_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_fh,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 127, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fh)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 127, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_setattr_async", 1, 2, 2, 1); __PYX_ERR(1, 127, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_setattr_async") < 0)) __PYX_ERR(1, 127, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_fh = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_setattr_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 127, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_setattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 127, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_6fuse_setattr_async(__pyx_self, __pyx_v_c, __pyx_v_fh); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_6fuse_setattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_fh) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_setattr_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 127, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_fh = __pyx_v_fh; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fh); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fh); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_8generator2, __pyx_codeobj__4, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_setattr_async, __pyx_n_s_fuse_setattr_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_setattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; int __pyx_t_1; PyObject *__pyx_t_2 = NULL; struct stat *__pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; time_t __pyx_t_9; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; char const *__pyx_t_14; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; PyObject *__pyx_t_20 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_setattr_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L14_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 127, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":133 * cdef SetattrFields fields * cdef struct_stat *attr * cdef int to_set = c.flags # <<<<<<<<<<<<<< * * ctx = get_request_context(c.req) */ __pyx_t_1 = __pyx_cur_scope->__pyx_v_c->flags; __pyx_cur_scope->__pyx_v_to_set = __pyx_t_1; /* "src/pyfuse3/handlers.pxi":135 * cdef int to_set = c.flags * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * entry = EntryAttributes() * fields = SetattrFields.__new__(SetattrFields) */ __pyx_t_2 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":136 * * ctx = get_request_context(c.req) * entry = EntryAttributes() # <<<<<<<<<<<<<< * fields = SetattrFields.__new__(SetattrFields) * string.memcpy(entry.attr, &c.stat, sizeof(struct_stat)) */ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3_EntryAttributes)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":137 * ctx = get_request_context(c.req) * entry = EntryAttributes() * fields = SetattrFields.__new__(SetattrFields) # <<<<<<<<<<<<<< * string.memcpy(entry.attr, &c.stat, sizeof(struct_stat)) * */ __pyx_t_2 = ((PyObject *)__pyx_tp_new_7pyfuse3_SetattrFields(((PyTypeObject *)__pyx_ptype_7pyfuse3_SetattrFields), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 137, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); __Pyx_GIVEREF((PyObject *)__pyx_t_2); __pyx_cur_scope->__pyx_v_fields = ((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":138 * entry = EntryAttributes() * fields = SetattrFields.__new__(SetattrFields) * string.memcpy(entry.attr, &c.stat, sizeof(struct_stat)) # <<<<<<<<<<<<<< * * attr = entry.attr */ (void)(memcpy(__pyx_cur_scope->__pyx_v_entry->attr, (&__pyx_cur_scope->__pyx_v_c->stat), (sizeof(struct stat)))); /* "src/pyfuse3/handlers.pxi":140 * string.memcpy(entry.attr, &c.stat, sizeof(struct_stat)) * * attr = entry.attr # <<<<<<<<<<<<<< * if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): * ret = libc_extra.gettime_realtime(&now) */ __pyx_t_3 = __pyx_cur_scope->__pyx_v_entry->attr; __pyx_cur_scope->__pyx_v_attr = __pyx_t_3; /* "src/pyfuse3/handlers.pxi":141 * * attr = entry.attr * if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): # <<<<<<<<<<<<<< * ret = libc_extra.gettime_realtime(&now) * if ret != 0: */ __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW)) != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":142 * attr = entry.attr * if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): * ret = libc_extra.gettime_realtime(&now) # <<<<<<<<<<<<<< * if ret != 0: * log.error('fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s', */ __pyx_cur_scope->__pyx_v_ret = gettime_realtime((&__pyx_cur_scope->__pyx_v_now)); /* "src/pyfuse3/handlers.pxi":143 * if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): * ret = libc_extra.gettime_realtime(&now) * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s', * strerror(errno.errno)) */ __pyx_t_4 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":144 * ret = libc_extra.gettime_realtime(&now) * if ret != 0: * log.error('fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s', # <<<<<<<<<<<<<< * strerror(errno.errno)) * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":145 * if ret != 0: * log.error('fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s', * strerror(errno.errno)) # <<<<<<<<<<<<<< * * if to_set & FUSE_SET_ATTR_ATIME: */ __pyx_t_5 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_setattr_clock_gettime_CLOCK, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":143 * if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): * ret = libc_extra.gettime_realtime(&now) * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s', * strerror(errno.errno)) */ } /* "src/pyfuse3/handlers.pxi":141 * * attr = entry.attr * if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): # <<<<<<<<<<<<<< * ret = libc_extra.gettime_realtime(&now) * if ret != 0: */ } /* "src/pyfuse3/handlers.pxi":147 * strerror(errno.errno)) * * if to_set & FUSE_SET_ATTR_ATIME: # <<<<<<<<<<<<<< * fields.update_atime = True * elif to_set & FUSE_SET_ATTR_ATIME_NOW: */ __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_ATIME) != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":148 * * if to_set & FUSE_SET_ATTR_ATIME: * fields.update_atime = True # <<<<<<<<<<<<<< * elif to_set & FUSE_SET_ATTR_ATIME_NOW: * fields.update_atime = True */ __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_atime); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_atime); __pyx_cur_scope->__pyx_v_fields->update_atime = Py_True; /* "src/pyfuse3/handlers.pxi":147 * strerror(errno.errno)) * * if to_set & FUSE_SET_ATTR_ATIME: # <<<<<<<<<<<<<< * fields.update_atime = True * elif to_set & FUSE_SET_ATTR_ATIME_NOW: */ goto __pyx_L6; } /* "src/pyfuse3/handlers.pxi":149 * if to_set & FUSE_SET_ATTR_ATIME: * fields.update_atime = True * elif to_set & FUSE_SET_ATTR_ATIME_NOW: # <<<<<<<<<<<<<< * fields.update_atime = True * attr.st_atime = now.tv_sec */ __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_ATIME_NOW) != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":150 * fields.update_atime = True * elif to_set & FUSE_SET_ATTR_ATIME_NOW: * fields.update_atime = True # <<<<<<<<<<<<<< * attr.st_atime = now.tv_sec * SET_ATIME_NS(attr, now.tv_nsec) */ __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_atime); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_atime); __pyx_cur_scope->__pyx_v_fields->update_atime = Py_True; /* "src/pyfuse3/handlers.pxi":151 * elif to_set & FUSE_SET_ATTR_ATIME_NOW: * fields.update_atime = True * attr.st_atime = now.tv_sec # <<<<<<<<<<<<<< * SET_ATIME_NS(attr, now.tv_nsec) * */ __pyx_t_9 = __pyx_cur_scope->__pyx_v_now.tv_sec; __pyx_cur_scope->__pyx_v_attr->st_atime = __pyx_t_9; /* "src/pyfuse3/handlers.pxi":152 * fields.update_atime = True * attr.st_atime = now.tv_sec * SET_ATIME_NS(attr, now.tv_nsec) # <<<<<<<<<<<<<< * * if to_set & FUSE_SET_ATTR_MTIME: */ SET_ATIME_NS(__pyx_cur_scope->__pyx_v_attr, __pyx_cur_scope->__pyx_v_now.tv_nsec); /* "src/pyfuse3/handlers.pxi":149 * if to_set & FUSE_SET_ATTR_ATIME: * fields.update_atime = True * elif to_set & FUSE_SET_ATTR_ATIME_NOW: # <<<<<<<<<<<<<< * fields.update_atime = True * attr.st_atime = now.tv_sec */ } __pyx_L6:; /* "src/pyfuse3/handlers.pxi":154 * SET_ATIME_NS(attr, now.tv_nsec) * * if to_set & FUSE_SET_ATTR_MTIME: # <<<<<<<<<<<<<< * fields.update_mtime = True * elif to_set & FUSE_SET_ATTR_MTIME_NOW: */ __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_MTIME) != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":155 * * if to_set & FUSE_SET_ATTR_MTIME: * fields.update_mtime = True # <<<<<<<<<<<<<< * elif to_set & FUSE_SET_ATTR_MTIME_NOW: * fields.update_mtime = True */ __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_mtime); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_mtime); __pyx_cur_scope->__pyx_v_fields->update_mtime = Py_True; /* "src/pyfuse3/handlers.pxi":154 * SET_ATIME_NS(attr, now.tv_nsec) * * if to_set & FUSE_SET_ATTR_MTIME: # <<<<<<<<<<<<<< * fields.update_mtime = True * elif to_set & FUSE_SET_ATTR_MTIME_NOW: */ goto __pyx_L7; } /* "src/pyfuse3/handlers.pxi":156 * if to_set & FUSE_SET_ATTR_MTIME: * fields.update_mtime = True * elif to_set & FUSE_SET_ATTR_MTIME_NOW: # <<<<<<<<<<<<<< * fields.update_mtime = True * attr.st_mtime = now.tv_sec */ __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_MTIME_NOW) != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":157 * fields.update_mtime = True * elif to_set & FUSE_SET_ATTR_MTIME_NOW: * fields.update_mtime = True # <<<<<<<<<<<<<< * attr.st_mtime = now.tv_sec * SET_MTIME_NS(attr, now.tv_nsec) */ __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_mtime); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_mtime); __pyx_cur_scope->__pyx_v_fields->update_mtime = Py_True; /* "src/pyfuse3/handlers.pxi":158 * elif to_set & FUSE_SET_ATTR_MTIME_NOW: * fields.update_mtime = True * attr.st_mtime = now.tv_sec # <<<<<<<<<<<<<< * SET_MTIME_NS(attr, now.tv_nsec) * */ __pyx_t_9 = __pyx_cur_scope->__pyx_v_now.tv_sec; __pyx_cur_scope->__pyx_v_attr->st_mtime = __pyx_t_9; /* "src/pyfuse3/handlers.pxi":159 * fields.update_mtime = True * attr.st_mtime = now.tv_sec * SET_MTIME_NS(attr, now.tv_nsec) # <<<<<<<<<<<<<< * * fields.update_ctime = bool(to_set & FUSE_SET_ATTR_CTIME) */ SET_MTIME_NS(__pyx_cur_scope->__pyx_v_attr, __pyx_cur_scope->__pyx_v_now.tv_nsec); /* "src/pyfuse3/handlers.pxi":156 * if to_set & FUSE_SET_ATTR_MTIME: * fields.update_mtime = True * elif to_set & FUSE_SET_ATTR_MTIME_NOW: # <<<<<<<<<<<<<< * fields.update_mtime = True * attr.st_mtime = now.tv_sec */ } __pyx_L7:; /* "src/pyfuse3/handlers.pxi":161 * SET_MTIME_NS(attr, now.tv_nsec) * * fields.update_ctime = bool(to_set & FUSE_SET_ATTR_CTIME) # <<<<<<<<<<<<<< * fields.update_mode = bool(to_set & FUSE_SET_ATTR_MODE) * fields.update_uid = bool(to_set & FUSE_SET_ATTR_UID) */ __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_CTIME)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 161, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_ctime); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_ctime); __pyx_cur_scope->__pyx_v_fields->update_ctime = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":162 * * fields.update_ctime = bool(to_set & FUSE_SET_ATTR_CTIME) * fields.update_mode = bool(to_set & FUSE_SET_ATTR_MODE) # <<<<<<<<<<<<<< * fields.update_uid = bool(to_set & FUSE_SET_ATTR_UID) * fields.update_gid = bool(to_set & FUSE_SET_ATTR_GID) */ __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_MODE)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 162, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_mode); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_mode); __pyx_cur_scope->__pyx_v_fields->update_mode = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":163 * fields.update_ctime = bool(to_set & FUSE_SET_ATTR_CTIME) * fields.update_mode = bool(to_set & FUSE_SET_ATTR_MODE) * fields.update_uid = bool(to_set & FUSE_SET_ATTR_UID) # <<<<<<<<<<<<<< * fields.update_gid = bool(to_set & FUSE_SET_ATTR_GID) * fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) */ __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_UID)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 163, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_uid); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_uid); __pyx_cur_scope->__pyx_v_fields->update_uid = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":164 * fields.update_mode = bool(to_set & FUSE_SET_ATTR_MODE) * fields.update_uid = bool(to_set & FUSE_SET_ATTR_UID) * fields.update_gid = bool(to_set & FUSE_SET_ATTR_GID) # <<<<<<<<<<<<<< * fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) * */ __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_GID)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 164, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_gid); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_gid); __pyx_cur_scope->__pyx_v_fields->update_gid = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":165 * fields.update_uid = bool(to_set & FUSE_SET_ATTR_UID) * fields.update_gid = bool(to_set & FUSE_SET_ATTR_GID) * fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) # <<<<<<<<<<<<<< * * try: */ __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_cur_scope->__pyx_v_to_set & FUSE_SET_ATTR_SIZE)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fields->update_size); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_fields->update_size); __pyx_cur_scope->__pyx_v_fields->update_size = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":167 * fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) * * try: # <<<<<<<<<<<<<< * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { /* "src/pyfuse3/handlers.pxi":168 * * try: * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_setattr); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 168, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 168, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_entry), ((PyObject *)__pyx_cur_scope->__pyx_v_fields), __pyx_cur_scope->__pyx_v_fh, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 168, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_0 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_1 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_t_12); __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L14_resume_from_await:; __pyx_t_10 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_10); __pyx_t_11 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_11); __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 168, __pyx_L8_error) __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2); } else { __pyx_t_2 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(1, 168, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_2); } if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 168, __pyx_L8_error) __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF((PyObject *)__pyx_cur_scope->__pyx_v_entry); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_entry, ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_6)); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":167 * fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) * * try: # <<<<<<<<<<<<<< * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":172 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_attr(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_entry->attr, __pyx_cur_scope->__pyx_v_entry->fuse_param.attr_timeout); } __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":169 * try: * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_1 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_1) { __Pyx_AddTraceback("pyfuse3.fuse_setattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_5) < 0) __PYX_ERR(1, 169, __pyx_L10_except_error) __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_e = __pyx_t_2; /*try:*/ { /* "src/pyfuse3/handlers.pxi":170 * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 170, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 170, __pyx_L20_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_1); } /* "src/pyfuse3/handlers.pxi":169 * try: * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L21; } __pyx_L20_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __pyx_t_1 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20); } __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17); __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; goto __pyx_L10_except_error; } __pyx_L21:; } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_exception_handled; } goto __pyx_L10_except_error; /* "src/pyfuse3/handlers.pxi":167 * fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) * * try: # <<<<<<<<<<<<<< * entry = await operations.setattr(c.ino, entry, fields, fh, ctx) * except FUSEError as e: */ __pyx_L10_except_error:; __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); goto __pyx_L1_error; __pyx_L9_exception_handled:; __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); __pyx_L13_try_end:; } /* "src/pyfuse3/handlers.pxi":174 * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_setattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_4 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_4) { /* "src/pyfuse3/handlers.pxi":175 * * if ret != 0: * log.error('fuse_setattr(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_setattr_fuse_reply__failed, __pyx_t_2}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":174 * ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_setattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":127 * save_retval(fuse_setattr_async(c, fh)) * * async def fuse_setattr_async (_Container c, fh): # <<<<<<<<<<<<<< * cdef int ret * cdef timespec now */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_setattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":178 * * * cdef void fuse_readlink (fuse_req_t req, fuse_ino_t ino): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_readlink(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_readlink", 1); /* "src/pyfuse3/handlers.pxi":179 * * cdef void fuse_readlink (fuse_req_t req, fuse_ino_t ino): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":180 * cdef void fuse_readlink (fuse_req_t req, fuse_ino_t ino): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * save_retval(fuse_readlink_async(c)) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":181 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * save_retval(fuse_readlink_async(c)) * */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":182 * c.req = req * c.ino = ino * save_retval(fuse_readlink_async(c)) # <<<<<<<<<<<<<< * * async def fuse_readlink_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_readlink_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 182, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":178 * * * cdef void fuse_readlink (fuse_req_t req, fuse_ino_t ino): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_readlink", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":184 * save_retval(fuse_readlink_async(c)) * * async def fuse_readlink_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef char* name */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_10fuse_readlink_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_9fuse_readlink_async, "fuse_readlink_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_10fuse_readlink_async = {"fuse_readlink_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_10fuse_readlink_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_9fuse_readlink_async}; static PyObject *__pyx_pw_7pyfuse3_10fuse_readlink_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_readlink_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 184, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_readlink_async") < 0)) __PYX_ERR(1, 184, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_readlink_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 184, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_readlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 184, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_9fuse_readlink_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_9fuse_readlink_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_readlink_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 184, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_11generator3, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_readlink_async, __pyx_n_s_fuse_readlink_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 184, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_readlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; char *__pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_readlink_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 184, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":187 * cdef int ret * cdef char* name * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * target = await operations.readlink(c.ino, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":188 * cdef char* name * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * target = await operations.readlink(c.ino, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":189 * ctx = get_request_context(c.req) * try: * target = await operations.readlink(c.ino, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_readlink); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 189, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 189, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 189, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 189, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 189, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_target = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":188 * cdef char* name * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * target = await operations.readlink(c.ino, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":193 * ret = fuse_reply_err(c.req, e.errno) * else: * name = PyBytes_AsString(target) # <<<<<<<<<<<<<< * ret = fuse_reply_readlink(c.req, name) * */ /*else:*/ { __pyx_t_9 = PyBytes_AsString(__pyx_cur_scope->__pyx_v_target); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 193, __pyx_L6_except_error) __pyx_cur_scope->__pyx_v_name = __pyx_t_9; /* "src/pyfuse3/handlers.pxi":194 * else: * name = PyBytes_AsString(target) * ret = fuse_reply_readlink(c.req, name) # <<<<<<<<<<<<<< * * if ret != 0: */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_readlink(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_name); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":190 * try: * target = await operations.readlink(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_readlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 190, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":191 * target = await operations.readlink(c.ino, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * name = PyBytes_AsString(target) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 191, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 191, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":190 * try: * target = await operations.readlink(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":188 * cdef char* name * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * target = await operations.readlink(c.ino, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":196 * ret = fuse_reply_readlink(c.req, name) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_readlink(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":197 * * if ret != 0: * log.error('fuse_readlink(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_readlink_fuse_reply__failed, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":196 * ret = fuse_reply_readlink(c.req, name) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_readlink(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":184 * save_retval(fuse_readlink_async(c)) * * async def fuse_readlink_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef char* name */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_readlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":200 * * * cdef void fuse_mknod (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * mode_t mode, dev_t rdev): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_mknod(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name, mode_t __pyx_v_mode, dev_t __pyx_v_rdev) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_mknod", 1); /* "src/pyfuse3/handlers.pxi":202 * cdef void fuse_mknod (fuse_req_t req, fuse_ino_t parent, const_char *name, * mode_t mode, dev_t rdev): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":203 * mode_t mode, dev_t rdev): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * c.mode = mode */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":204 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * c.mode = mode * c.rdev = rdev */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":205 * c.req = req * c.parent = parent * c.mode = mode # <<<<<<<<<<<<<< * c.rdev = rdev * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) */ __pyx_v_c->mode = __pyx_v_mode; /* "src/pyfuse3/handlers.pxi":206 * c.parent = parent * c.mode = mode * c.rdev = rdev # <<<<<<<<<<<<<< * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->rdev = __pyx_v_rdev; /* "src/pyfuse3/handlers.pxi":207 * c.mode = mode * c.rdev = rdev * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_mknod_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_mknod_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 207, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":200 * * * cdef void fuse_mknod (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * mode_t mode, dev_t rdev): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_mknod", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":209 * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) * * async def fuse_mknod_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13fuse_mknod_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_12fuse_mknod_async, "fuse_mknod_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_13fuse_mknod_async = {"fuse_mknod_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13fuse_mknod_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_12fuse_mknod_async}; static PyObject *__pyx_pw_7pyfuse3_13fuse_mknod_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_mknod_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 209, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 209, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_mknod_async", 1, 2, 2, 1); __PYX_ERR(1, 209, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_mknod_async") < 0)) __PYX_ERR(1, 209, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_mknod_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 209, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_mknod_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 209, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_12fuse_mknod_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_12fuse_mknod_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_mknod_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 209, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_14generator4, __pyx_codeobj__6, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_mknod_async, __pyx_n_s_fuse_mknod_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 209, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_mknod_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_14generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; unsigned int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; char const *__pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_mknod_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 209, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":213 * cdef EntryAttributes entry * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * entry = await operations.mknod( */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":214 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.mknod( * c.parent, name, c.mode, c.rdev, ctx) */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":215 * ctx = get_request_context(c.req) * try: * entry = await operations.mknod( # <<<<<<<<<<<<<< * c.parent, name, c.mode, c.rdev, ctx) * except FUSEError as e: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_mknod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 215, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); /* "src/pyfuse3/handlers.pxi":216 * try: * entry = await operations.mknod( * c.parent, name, c.mode, c.rdev, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 216, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_mode_t(__pyx_cur_scope->__pyx_v_c->mode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 216, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_dev_t(__pyx_cur_scope->__pyx_v_c->rdev); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 216, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_9, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_t_7, __pyx_t_8, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 5+__pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 215, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 215, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 215, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } /* "src/pyfuse3/handlers.pxi":215 * ctx = get_request_context(c.req) * try: * entry = await operations.mknod( # <<<<<<<<<<<<<< * c.parent, name, c.mode, c.rdev, ctx) * except FUSEError as e: */ if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 215, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":214 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.mknod( * c.parent, name, c.mode, c.rdev, ctx) */ } /* "src/pyfuse3/handlers.pxi":220 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_entry(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_entry->fuse_param)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":217 * entry = await operations.mknod( * c.parent, name, c.mode, c.rdev, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_11) { __Pyx_AddTraceback("pyfuse3.fuse_mknod_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(1, 217, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":218 * c.parent, name, c.mode, c.rdev, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 218, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 218, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_11); } /* "src/pyfuse3/handlers.pxi":217 * entry = await operations.mknod( * c.parent, name, c.mode, c.rdev, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":214 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.mknod( * c.parent, name, c.mode, c.rdev, ctx) */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":222 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_mknod(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_20 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_20) { /* "src/pyfuse3/handlers.pxi":223 * * if ret != 0: * log.error('fuse_mknod(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_mknod_fuse_reply__failed_wi, __pyx_t_1}; __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":222 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_mknod(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":209 * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) * * async def fuse_mknod_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("fuse_mknod_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":226 * * * cdef void fuse_mkdir (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * mode_t mode): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_mkdir(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name, mode_t __pyx_v_mode) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_mkdir", 1); /* "src/pyfuse3/handlers.pxi":228 * cdef void fuse_mkdir (fuse_req_t req, fuse_ino_t parent, const_char *name, * mode_t mode): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":229 * mode_t mode): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * c.mode = mode */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":230 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * c.mode = mode * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":231 * c.req = req * c.parent = parent * c.mode = mode # <<<<<<<<<<<<<< * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->mode = __pyx_v_mode; /* "src/pyfuse3/handlers.pxi":232 * c.parent = parent * c.mode = mode * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_mkdir_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_mkdir_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 232, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":226 * * * cdef void fuse_mkdir (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * mode_t mode): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_mkdir", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_17generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":234 * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) * * async def fuse_mkdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_16fuse_mkdir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_15fuse_mkdir_async, "fuse_mkdir_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_16fuse_mkdir_async = {"fuse_mkdir_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_16fuse_mkdir_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15fuse_mkdir_async}; static PyObject *__pyx_pw_7pyfuse3_16fuse_mkdir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_mkdir_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 234, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 234, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_mkdir_async", 1, 2, 2, 1); __PYX_ERR(1, 234, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_mkdir_async") < 0)) __PYX_ERR(1, 234, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_mkdir_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 234, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_mkdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 234, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_15fuse_mkdir_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15fuse_mkdir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_mkdir_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 234, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_17generator5, __pyx_codeobj__7, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_mkdir_async, __pyx_n_s_fuse_mkdir_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 234, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_mkdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_17generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_mkdir_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 234, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":240 * # Force the entry type to directory. We need to explicitly cast, * # because on BSD the S_* are not of type mode_t. * c.mode = (c.mode & ~ S_IFMT) | S_IFDIR # <<<<<<<<<<<<<< * ctx = get_request_context(c.req) * try: */ __pyx_cur_scope->__pyx_v_c->mode = ((__pyx_cur_scope->__pyx_v_c->mode & (~((mode_t)S_IFMT))) | ((mode_t)S_IFDIR)); /* "src/pyfuse3/handlers.pxi":241 * # because on BSD the S_* are not of type mode_t. * c.mode = (c.mode & ~ S_IFMT) | S_IFDIR * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * entry = await operations.mkdir( */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":242 * c.mode = (c.mode & ~ S_IFMT) | S_IFDIR * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.mkdir( * c.parent, name, c.mode, ctx) */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":243 * ctx = get_request_context(c.req) * try: * entry = await operations.mkdir( # <<<<<<<<<<<<<< * c.parent, name, c.mode, ctx) * except FUSEError as e: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_mkdir); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 243, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); /* "src/pyfuse3/handlers.pxi":244 * try: * entry = await operations.mkdir( * c.parent, name, c.mode, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 244, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_mode_t(__pyx_cur_scope->__pyx_v_c->mode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 244, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_t_7, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 4+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 243, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 243, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 243, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } /* "src/pyfuse3/handlers.pxi":243 * ctx = get_request_context(c.req) * try: * entry = await operations.mkdir( # <<<<<<<<<<<<<< * c.parent, name, c.mode, ctx) * except FUSEError as e: */ if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 243, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":242 * c.mode = (c.mode & ~ S_IFMT) | S_IFDIR * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.mkdir( * c.parent, name, c.mode, ctx) */ } /* "src/pyfuse3/handlers.pxi":248 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_entry(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_entry->fuse_param)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":245 * entry = await operations.mkdir( * c.parent, name, c.mode, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_mkdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(1, 245, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":246 * c.parent, name, c.mode, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 246, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 246, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":245 * entry = await operations.mkdir( * c.parent, name, c.mode, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":242 * c.mode = (c.mode & ~ S_IFMT) | S_IFDIR * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.mkdir( * c.parent, name, c.mode, ctx) */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":250 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_mkdir(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":251 * * if ret != 0: * log.error('fuse_mkdir(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi, __pyx_t_1}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":250 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_mkdir(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":234 * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) * * async def fuse_mkdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_mkdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":254 * * * cdef void fuse_unlink (fuse_req_t req, fuse_ino_t parent, const_char *name): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_unlink(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_unlink", 1); /* "src/pyfuse3/handlers.pxi":255 * * cdef void fuse_unlink (fuse_req_t req, fuse_ino_t parent, const_char *name): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":256 * cdef void fuse_unlink (fuse_req_t req, fuse_ino_t parent, const_char *name): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":257 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":258 * c.req = req * c.parent = parent * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_unlink_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_unlink_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 258, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":254 * * * cdef void fuse_unlink (fuse_req_t req, fuse_ino_t parent, const_char *name): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_20generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":260 * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) * * async def fuse_unlink_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_19fuse_unlink_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_18fuse_unlink_async, "fuse_unlink_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_19fuse_unlink_async = {"fuse_unlink_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_19fuse_unlink_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_18fuse_unlink_async}; static PyObject *__pyx_pw_7pyfuse3_19fuse_unlink_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_unlink_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 260, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 260, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_unlink_async", 1, 2, 2, 1); __PYX_ERR(1, 260, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_unlink_async") < 0)) __PYX_ERR(1, 260, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_unlink_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 260, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_unlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 260, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_18fuse_unlink_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_18fuse_unlink_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_unlink_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 260, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_20generator6, __pyx_codeobj__8, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_unlink_async, __pyx_n_s_fuse_unlink_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 260, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_unlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_20generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_unlink_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 260, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":263 * cdef int ret * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * await operations.unlink(c.parent, name, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":264 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.unlink(c.parent, name, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":265 * ctx = get_request_context(c.req) * try: * await operations.unlink(c.parent, name, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_unlink); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 265, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 265, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 265, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 265, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 265, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":264 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.unlink(c.parent, name, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":269 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":266 * try: * await operations.unlink(c.parent, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_unlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 266, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":267 * await operations.unlink(c.parent, name, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 267, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 267, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":266 * try: * await operations.unlink(c.parent, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":264 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.unlink(c.parent, name, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":271 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_unlink(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":272 * * if ret != 0: * log.error('fuse_unlink(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_unlink_fuse_reply__failed_w, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":271 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_unlink(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":260 * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) * * async def fuse_unlink_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_unlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":275 * * * cdef void fuse_rmdir (fuse_req_t req, fuse_ino_t parent, const_char *name): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_rmdir(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_rmdir", 1); /* "src/pyfuse3/handlers.pxi":276 * * cdef void fuse_rmdir (fuse_req_t req, fuse_ino_t parent, const_char *name): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":277 * cdef void fuse_rmdir (fuse_req_t req, fuse_ino_t parent, const_char *name): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":278 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":279 * c.req = req * c.parent = parent * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_rmdir_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_rmdir_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":275 * * * cdef void fuse_rmdir (fuse_req_t req, fuse_ino_t parent, const_char *name): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_rmdir", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_23generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":281 * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) * * async def fuse_rmdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_22fuse_rmdir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_21fuse_rmdir_async, "fuse_rmdir_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_22fuse_rmdir_async = {"fuse_rmdir_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_22fuse_rmdir_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_21fuse_rmdir_async}; static PyObject *__pyx_pw_7pyfuse3_22fuse_rmdir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_rmdir_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 281, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 281, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_rmdir_async", 1, 2, 2, 1); __PYX_ERR(1, 281, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_rmdir_async") < 0)) __PYX_ERR(1, 281, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_rmdir_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 281, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_rmdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 281, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_21fuse_rmdir_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_21fuse_rmdir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_rmdir_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 281, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_23generator7, __pyx_codeobj__9, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_rmdir_async, __pyx_n_s_fuse_rmdir_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 281, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_rmdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_23generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_rmdir_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 281, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":284 * cdef int ret * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * await operations.rmdir(c.parent, name, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":285 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.rmdir(c.parent, name, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":286 * ctx = get_request_context(c.req) * try: * await operations.rmdir(c.parent, name, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_rmdir); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 286, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 286, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 286, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 286, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 286, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":285 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.rmdir(c.parent, name, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":290 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":287 * try: * await operations.rmdir(c.parent, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_rmdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 287, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":288 * await operations.rmdir(c.parent, name, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 288, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 288, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":287 * try: * await operations.rmdir(c.parent, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":285 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.rmdir(c.parent, name, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":292 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_rmdir(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":293 * * if ret != 0: * log.error('fuse_rmdir(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":292 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_rmdir(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":281 * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) * * async def fuse_rmdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_rmdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":296 * * * cdef void fuse_symlink (fuse_req_t req, const_char *link, fuse_ino_t parent, # <<<<<<<<<<<<<< * const_char *name): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_symlink(fuse_req_t __pyx_v_req, const char *__pyx_v_link, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_symlink", 1); /* "src/pyfuse3/handlers.pxi":298 * cdef void fuse_symlink (fuse_req_t req, const_char *link, fuse_ino_t parent, * const_char *name): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":299 * const_char *name): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * save_retval(fuse_symlink_async( */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":300 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * save_retval(fuse_symlink_async( * c, PyBytes_FromString(name), PyBytes_FromString(link))) */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":301 * c.req = req * c.parent = parent * save_retval(fuse_symlink_async( # <<<<<<<<<<<<<< * c, PyBytes_FromString(name), PyBytes_FromString(link))) * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_symlink_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* "src/pyfuse3/handlers.pxi":302 * c.parent = parent * save_retval(fuse_symlink_async( * c, PyBytes_FromString(name), PyBytes_FromString(link))) # <<<<<<<<<<<<<< * * async def fuse_symlink_async (_Container c, name, link): */ __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyBytes_FromString(__pyx_v_link); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_5, ((PyObject *)__pyx_v_c), __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } /* "src/pyfuse3/handlers.pxi":301 * c.req = req * c.parent = parent * save_retval(fuse_symlink_async( # <<<<<<<<<<<<<< * c, PyBytes_FromString(name), PyBytes_FromString(link))) * */ __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":296 * * * cdef void fuse_symlink (fuse_req_t req, const_char *link, fuse_ino_t parent, # <<<<<<<<<<<<<< * const_char *name): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.fuse_symlink", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_26generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":304 * c, PyBytes_FromString(name), PyBytes_FromString(link))) * * async def fuse_symlink_async (_Container c, name, link): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_25fuse_symlink_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_24fuse_symlink_async, "fuse_symlink_async(_Container c, name, link)"); static PyMethodDef __pyx_mdef_7pyfuse3_25fuse_symlink_async = {"fuse_symlink_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_25fuse_symlink_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_24fuse_symlink_async}; static PyObject *__pyx_pw_7pyfuse3_25fuse_symlink_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; PyObject *__pyx_v_link = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_symlink_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,&__pyx_n_s_link,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 304, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 304, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_symlink_async", 1, 3, 3, 1); __PYX_ERR(1, 304, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_link)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 304, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_symlink_async", 1, 3, 3, 2); __PYX_ERR(1, 304, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_symlink_async") < 0)) __PYX_ERR(1, 304, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; __pyx_v_link = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_symlink_async", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 304, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_symlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 304, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_24fuse_symlink_async(__pyx_self, __pyx_v_c, __pyx_v_name, __pyx_v_link); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_24fuse_symlink_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name, PyObject *__pyx_v_link) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_symlink_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 304, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); __pyx_cur_scope->__pyx_v_link = __pyx_v_link; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_link); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_link); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_26generator8, __pyx_codeobj__10, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_symlink_async, __pyx_n_s_fuse_symlink_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 304, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_symlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_26generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_symlink_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 304, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":308 * cdef EntryAttributes entry * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * entry = await operations.symlink( */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":309 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.symlink( * c.parent, name, link, ctx) */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":310 * ctx = get_request_context(c.req) * try: * entry = await operations.symlink( # <<<<<<<<<<<<<< * c.parent, name, link, ctx) * except FUSEError as e: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_symlink); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 310, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); /* "src/pyfuse3/handlers.pxi":311 * try: * entry = await operations.symlink( * c.parent, name, link, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 311, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_link, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 4+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 310, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 310, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 310, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } /* "src/pyfuse3/handlers.pxi":310 * ctx = get_request_context(c.req) * try: * entry = await operations.symlink( # <<<<<<<<<<<<<< * c.parent, name, link, ctx) * except FUSEError as e: */ if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 310, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":309 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.symlink( * c.parent, name, link, ctx) */ } /* "src/pyfuse3/handlers.pxi":315 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_entry(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_entry->fuse_param)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":312 * entry = await operations.symlink( * c.parent, name, link, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_symlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(1, 312, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":313 * c.parent, name, link, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 313, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 313, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":312 * entry = await operations.symlink( * c.parent, name, link, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":309 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.symlink( * c.parent, name, link, ctx) */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":317 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_symlink(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":318 * * if ret != 0: * log.error('fuse_symlink(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_symlink_fuse_reply__failed, __pyx_t_1}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":317 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_symlink(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":304 * c, PyBytes_FromString(name), PyBytes_FromString(link))) * * async def fuse_symlink_async (_Container c, name, link): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_symlink_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":321 * * * cdef void fuse_rename (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * fuse_ino_t newparent, const_char *newname, unsigned flags): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_rename(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name, fuse_ino_t __pyx_v_newparent, const char *__pyx_v_newname, unsigned int __pyx_v_flags) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_rename", 1); /* "src/pyfuse3/handlers.pxi":323 * cdef void fuse_rename (fuse_req_t req, fuse_ino_t parent, const_char *name, * fuse_ino_t newparent, const_char *newname, unsigned flags): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":324 * fuse_ino_t newparent, const_char *newname, unsigned flags): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * c.ino = newparent */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":325 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * c.ino = newparent * c.flags = flags */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":326 * c.req = req * c.parent = parent * c.ino = newparent # <<<<<<<<<<<<<< * c.flags = flags * save_retval(fuse_rename_async( */ __pyx_v_c->ino = __pyx_v_newparent; /* "src/pyfuse3/handlers.pxi":327 * c.parent = parent * c.ino = newparent * c.flags = flags # <<<<<<<<<<<<<< * save_retval(fuse_rename_async( * c, PyBytes_FromString(name), PyBytes_FromString(newname))) */ __pyx_v_c->flags = ((int)__pyx_v_flags); /* "src/pyfuse3/handlers.pxi":328 * c.ino = newparent * c.flags = flags * save_retval(fuse_rename_async( # <<<<<<<<<<<<<< * c, PyBytes_FromString(name), PyBytes_FromString(newname))) * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_rename_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* "src/pyfuse3/handlers.pxi":329 * c.flags = flags * save_retval(fuse_rename_async( * c, PyBytes_FromString(name), PyBytes_FromString(newname))) # <<<<<<<<<<<<<< * * */ __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyBytes_FromString(__pyx_v_newname); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_5, ((PyObject *)__pyx_v_c), __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } /* "src/pyfuse3/handlers.pxi":328 * c.ino = newparent * c.flags = flags * save_retval(fuse_rename_async( # <<<<<<<<<<<<<< * c, PyBytes_FromString(name), PyBytes_FromString(newname))) * */ __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 328, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":321 * * * cdef void fuse_rename (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * fuse_ino_t newparent, const_char *newname, unsigned flags): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.fuse_rename", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_29generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":332 * * * async def fuse_rename_async (_Container c, name, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef unsigned flags = c.flags */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_28fuse_rename_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_27fuse_rename_async, "fuse_rename_async(_Container c, name, newname)"); static PyMethodDef __pyx_mdef_7pyfuse3_28fuse_rename_async = {"fuse_rename_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_28fuse_rename_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_27fuse_rename_async}; static PyObject *__pyx_pw_7pyfuse3_28fuse_rename_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; PyObject *__pyx_v_newname = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_rename_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,&__pyx_n_s_newname,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 332, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 332, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_rename_async", 1, 3, 3, 1); __PYX_ERR(1, 332, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newname)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 332, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_rename_async", 1, 3, 3, 2); __PYX_ERR(1, 332, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_rename_async") < 0)) __PYX_ERR(1, 332, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; __pyx_v_newname = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_rename_async", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 332, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_rename_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 332, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_27fuse_rename_async(__pyx_self, __pyx_v_c, __pyx_v_name, __pyx_v_newname); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_27fuse_rename_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name, PyObject *__pyx_v_newname) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_rename_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_9_fuse_rename_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 332, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); __pyx_cur_scope->__pyx_v_newname = __pyx_v_newname; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_newname); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_newname); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_29generator9, __pyx_codeobj__11, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_rename_async, __pyx_n_s_fuse_rename_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 332, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_rename_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_29generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; fuse_ino_t __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; unsigned int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; char const *__pyx_t_14; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; PyObject *__pyx_t_20 = NULL; int __pyx_t_21; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_rename_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 332, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":334 * async def fuse_rename_async (_Container c, name, newname): * cdef int ret * cdef unsigned flags = c.flags # <<<<<<<<<<<<<< * cdef fuse_ino_t newparent = c.ino * */ __pyx_cur_scope->__pyx_v_flags = ((unsigned int)__pyx_cur_scope->__pyx_v_c->flags); /* "src/pyfuse3/handlers.pxi":335 * cdef int ret * cdef unsigned flags = c.flags * cdef fuse_ino_t newparent = c.ino # <<<<<<<<<<<<<< * * ctx = get_request_context(c.req) */ __pyx_t_1 = __pyx_cur_scope->__pyx_v_c->ino; __pyx_cur_scope->__pyx_v_newparent = __pyx_t_1; /* "src/pyfuse3/handlers.pxi":337 * cdef fuse_ino_t newparent = c.ino * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * await operations.rename(c.parent, name, newparent, newname, flags, ctx) */ __pyx_t_2 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":338 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.rename(c.parent, name, newparent, newname, flags, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { /* "src/pyfuse3/handlers.pxi":339 * ctx = get_request_context(c.req) * try: * await operations.rename(c.parent, name, newparent, newname, flags, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_rename); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 339, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 339, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_newparent); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 339, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 339, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; __pyx_t_11 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_11 = 1; } } #endif { PyObject *__pyx_callargs[7] = {__pyx_t_10, __pyx_t_7, __pyx_cur_scope->__pyx_v_name, __pyx_t_8, __pyx_cur_scope->__pyx_v_newname, __pyx_t_9, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_11, 6+__pyx_t_11); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 339, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_0 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_3 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 339, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 339, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":338 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.rename(c.parent, name, newparent, newname, flags, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":343 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":340 * try: * await operations.rename(c.parent, name, newparent, newname, flags, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_12) { __Pyx_AddTraceback("pyfuse3.fuse_rename_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(1, 340, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_v_e = __pyx_t_6; /*try:*/ { /* "src/pyfuse3/handlers.pxi":341 * await operations.rename(c.parent, name, newparent, newname, flags, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 341, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 341, __pyx_L16_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_12); } /* "src/pyfuse3/handlers.pxi":340 * try: * await operations.rename(c.parent, name, newparent, newname, flags, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20); } __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17); __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":338 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.rename(c.parent, name, newparent, newname, flags, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":345 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_rename(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_21 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_21) { /* "src/pyfuse3/handlers.pxi":346 * * if ret != 0: * log.error('fuse_rename(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_log); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = NULL; __pyx_t_11 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_11 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_kp_u_fuse_rename_fuse_reply__failed_w, __pyx_t_6}; __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":345 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_rename(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":332 * * * async def fuse_rename_async (_Container c, name, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef unsigned flags = c.flags */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("fuse_rename_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":349 * * * cdef void fuse_link (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, # <<<<<<<<<<<<<< * const_char *newname): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_link(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, fuse_ino_t __pyx_v_newparent, const char *__pyx_v_newname) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_link", 1); /* "src/pyfuse3/handlers.pxi":351 * cdef void fuse_link (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, * const_char *newname): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":352 * const_char *newname): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.parent = newparent */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":353 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.parent = newparent * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":354 * c.req = req * c.ino = ino * c.parent = newparent # <<<<<<<<<<<<<< * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) * */ __pyx_v_c->parent = __pyx_v_newparent; /* "src/pyfuse3/handlers.pxi":355 * c.ino = ino * c.parent = newparent * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) # <<<<<<<<<<<<<< * * async def fuse_link_async (_Container c, newname): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_link_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_newname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 355, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":349 * * * cdef void fuse_link (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, # <<<<<<<<<<<<<< * const_char *newname): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_link", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_32generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":357 * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) * * async def fuse_link_async (_Container c, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_31fuse_link_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_30fuse_link_async, "fuse_link_async(_Container c, newname)"); static PyMethodDef __pyx_mdef_7pyfuse3_31fuse_link_async = {"fuse_link_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_31fuse_link_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_30fuse_link_async}; static PyObject *__pyx_pw_7pyfuse3_31fuse_link_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_newname = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_link_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_newname,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 357, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newname)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 357, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_link_async", 1, 2, 2, 1); __PYX_ERR(1, 357, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_link_async") < 0)) __PYX_ERR(1, 357, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_newname = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_link_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 357, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_link_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 357, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_30fuse_link_async(__pyx_self, __pyx_v_c, __pyx_v_newname); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_30fuse_link_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_newname) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_link_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_10_fuse_link_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 357, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_newname = __pyx_v_newname; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_newname); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_newname); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_32generator10, __pyx_codeobj__12, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_link_async, __pyx_n_s_fuse_link_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 357, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_link_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_32generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_link_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 357, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":361 * cdef EntryAttributes entry * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * entry = await operations.link( */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":362 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.link( * c.ino, c.parent, newname, ctx) */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":363 * ctx = get_request_context(c.req) * try: * entry = await operations.link( # <<<<<<<<<<<<<< * c.ino, c.parent, newname, ctx) * except FUSEError as e: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_link); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); /* "src/pyfuse3/handlers.pxi":364 * try: * entry = await operations.link( * c.ino, c.parent, newname, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 364, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 364, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, __pyx_cur_scope->__pyx_v_newname, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 4+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 363, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } /* "src/pyfuse3/handlers.pxi":363 * ctx = get_request_context(c.req) * try: * entry = await operations.link( # <<<<<<<<<<<<<< * c.ino, c.parent, newname, ctx) * except FUSEError as e: */ if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 363, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":362 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.link( * c.ino, c.parent, newname, ctx) */ } /* "src/pyfuse3/handlers.pxi":368 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_entry(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_entry->fuse_param)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":365 * entry = await operations.link( * c.ino, c.parent, newname, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_link_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(1, 365, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":366 * c.ino, c.parent, newname, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_entry(c.req, &entry.fuse_param) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 366, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 366, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":365 * entry = await operations.link( * c.ino, c.parent, newname, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":362 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * entry = await operations.link( * c.ino, c.parent, newname, ctx) */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":370 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":371 * * if ret != 0: * log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_link_fuse_reply__failed_wit, __pyx_t_1}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":370 * ret = fuse_reply_entry(c.req, &entry.fuse_param) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":357 * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) * * async def fuse_link_async (_Container c, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_link_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":374 * * * cdef void fuse_open (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_open(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_open", 1); /* "src/pyfuse3/handlers.pxi":375 * * cdef void fuse_open (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 375, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":376 * cdef void fuse_open (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.fi = fi[0] */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":377 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.fi = fi[0] * save_retval(fuse_open_async(c)) */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":378 * c.req = req * c.ino = ino * c.fi = fi[0] # <<<<<<<<<<<<<< * save_retval(fuse_open_async(c)) * */ __pyx_v_c->fi = (__pyx_v_fi[0]); /* "src/pyfuse3/handlers.pxi":379 * c.ino = ino * c.fi = fi[0] * save_retval(fuse_open_async(c)) # <<<<<<<<<<<<<< * * async def fuse_open_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_open_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 379, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":374 * * * cdef void fuse_open (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_open", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_35generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":381 * save_retval(fuse_open_async(c)) * * async def fuse_open_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef FileInfo fi */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_34fuse_open_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_33fuse_open_async, "fuse_open_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_34fuse_open_async = {"fuse_open_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_34fuse_open_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_33fuse_open_async}; static PyObject *__pyx_pw_7pyfuse3_34fuse_open_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_open_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 381, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_open_async") < 0)) __PYX_ERR(1, 381, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_open_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 381, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_open_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 381, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_33fuse_open_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_33fuse_open_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_open_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_11_fuse_open_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 381, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_35generator11, __pyx_codeobj__13, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_open_async, __pyx_n_s_fuse_open_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 381, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_open_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_35generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_open_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 381, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":385 * cdef FileInfo fi * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * * try: */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":387 * ctx = get_request_context(c.req) * * try: # <<<<<<<<<<<<<< * fi = await operations.open(c.ino, c.fi.flags, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":388 * * try: * fi = await operations.open(c.ino, c.fi.flags, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_open); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 388, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 388, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_c->fi.flags); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 388, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 388, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 388, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 388, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_FileInfo)))) __PYX_ERR(1, 388, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_fi = ((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":387 * ctx = get_request_context(c.req) * * try: # <<<<<<<<<<<<<< * fi = await operations.open(c.ino, c.fi.flags, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":392 * ret = fuse_reply_err(c.req, e.errno) * else: * fi._copy_to_fuse(&c.fi) # <<<<<<<<<<<<<< * ret = fuse_reply_open(c.req, &c.fi) * */ /*else:*/ { __pyx_t_5 = ((struct __pyx_vtabstruct_7pyfuse3_FileInfo *)__pyx_cur_scope->__pyx_v_fi->__pyx_vtab)->_copy_to_fuse(__pyx_cur_scope->__pyx_v_fi, (&__pyx_cur_scope->__pyx_v_c->fi)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 392, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":393 * else: * fi._copy_to_fuse(&c.fi) * ret = fuse_reply_open(c.req, &c.fi) # <<<<<<<<<<<<<< * * if ret != 0: */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_open(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_c->fi)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":389 * try: * fi = await operations.open(c.ino, c.fi.flags, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_open_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(1, 389, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":390 * fi = await operations.open(c.ino, c.fi.flags, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * fi._copy_to_fuse(&c.fi) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 390, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 390, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":389 * try: * fi = await operations.open(c.ino, c.fi.flags, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":387 * ctx = get_request_context(c.req) * * try: # <<<<<<<<<<<<<< * fi = await operations.open(c.ino, c.fi.flags, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":395 * ret = fuse_reply_open(c.req, &c.fi) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":396 * * if ret != 0: * log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_link_fuse_reply__failed_wit, __pyx_t_1}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":395 * ret = fuse_reply_open(c.req, &c.fi) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":381 * save_retval(fuse_open_async(c)) * * async def fuse_open_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef FileInfo fi */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_open_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":399 * * * cdef void fuse_read (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_read(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, size_t __pyx_v_size, off_t __pyx_v_off, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_read", 1); /* "src/pyfuse3/handlers.pxi":401 * cdef void fuse_read (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, * fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.size = size */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":402 * fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.size = size * c.off = off */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":403 * cdef _Container c = _Container() * c.req = req * c.size = size # <<<<<<<<<<<<<< * c.off = off * c.fh = fi.fh */ __pyx_v_c->size = __pyx_v_size; /* "src/pyfuse3/handlers.pxi":404 * c.req = req * c.size = size * c.off = off # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_read_async(c)) */ __pyx_v_c->off = __pyx_v_off; /* "src/pyfuse3/handlers.pxi":405 * c.size = size * c.off = off * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_read_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":406 * c.off = off * c.fh = fi.fh * save_retval(fuse_read_async(c)) # <<<<<<<<<<<<<< * * async def fuse_read_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_read_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 406, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":399 * * * cdef void fuse_read (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_read", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_38generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":408 * save_retval(fuse_read_async(c)) * * async def fuse_read_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef Py_buffer pybuf */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_37fuse_read_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_36fuse_read_async, "fuse_read_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_37fuse_read_async = {"fuse_read_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_37fuse_read_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_36fuse_read_async}; static PyObject *__pyx_pw_7pyfuse3_37fuse_read_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_read_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 408, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_read_async") < 0)) __PYX_ERR(1, 408, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_read_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 408, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_read_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 408, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_36fuse_read_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_36fuse_read_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_read_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_12_fuse_read_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 408, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_38generator12, __pyx_codeobj__14, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_read_async, __pyx_n_s_fuse_read_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 408, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_read_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_38generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; unsigned int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; char const *__pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_read_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 408, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":412 * cdef Py_buffer pybuf * * try: # <<<<<<<<<<<<<< * buf = await operations.read(c.fh, c.off, c.size) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":413 * * try: * buf = await operations.read(c.fh, c.off, c.size) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_off_t(__pyx_cur_scope->__pyx_v_c->off); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_cur_scope->__pyx_v_c->size); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_9, __pyx_t_6, __pyx_t_7, __pyx_t_8}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 3+__pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 413, __pyx_L4_error) __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4); } else { __pyx_t_4 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(1, 413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_GIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_v_buf = __pyx_t_4; __pyx_t_4 = 0; /* "src/pyfuse3/handlers.pxi":412 * cdef Py_buffer pybuf * * try: # <<<<<<<<<<<<<< * buf = await operations.read(c.fh, c.off, c.size) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":417 * ret = fuse_reply_err(c.req, e.errno) * else: * PyObject_GetBuffer(buf, &pybuf, PyBUF_CONTIG_RO) # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, pybuf.buf, pybuf.len) * PyBuffer_Release(&pybuf) */ /*else:*/ { __pyx_t_11 = PyObject_GetBuffer(__pyx_cur_scope->__pyx_v_buf, (&__pyx_cur_scope->__pyx_v_pybuf), PyBUF_CONTIG_RO); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 417, __pyx_L6_except_error) /* "src/pyfuse3/handlers.pxi":418 * else: * PyObject_GetBuffer(buf, &pybuf, PyBUF_CONTIG_RO) * ret = fuse_reply_buf(c.req, pybuf.buf, pybuf.len) # <<<<<<<<<<<<<< * PyBuffer_Release(&pybuf) * */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_buf(__pyx_cur_scope->__pyx_v_c->req, ((const char *)__pyx_cur_scope->__pyx_v_pybuf.buf), ((size_t)__pyx_cur_scope->__pyx_v_pybuf.len)); /* "src/pyfuse3/handlers.pxi":419 * PyObject_GetBuffer(buf, &pybuf, PyBUF_CONTIG_RO) * ret = fuse_reply_buf(c.req, pybuf.buf, pybuf.len) * PyBuffer_Release(&pybuf) # <<<<<<<<<<<<<< * * if ret != 0: */ PyBuffer_Release((&__pyx_cur_scope->__pyx_v_pybuf)); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":414 * try: * buf = await operations.read(c.fh, c.off, c.size) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_11) { __Pyx_AddTraceback("pyfuse3.fuse_read_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(1, 414, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":415 * buf = await operations.read(c.fh, c.off, c.size) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * PyObject_GetBuffer(buf, &pybuf, PyBUF_CONTIG_RO) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 415, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 415, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_11); } /* "src/pyfuse3/handlers.pxi":414 * try: * buf = await operations.read(c.fh, c.off, c.size) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":412 * cdef Py_buffer pybuf * * try: # <<<<<<<<<<<<<< * buf = await operations.read(c.fh, c.off, c.size) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":421 * PyBuffer_Release(&pybuf) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_read(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_20 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_20) { /* "src/pyfuse3/handlers.pxi":422 * * if ret != 0: * log.error('fuse_read(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_read_fuse_reply__failed_wit, __pyx_t_5}; __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":421 * PyBuffer_Release(&pybuf) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_read(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":408 * save_retval(fuse_read_async(c)) * * async def fuse_read_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef Py_buffer pybuf */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("fuse_read_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":425 * * * cdef void fuse_write (fuse_req_t req, fuse_ino_t ino, const_char *buf, # <<<<<<<<<<<<<< * size_t size, off_t off, fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_write(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, const char *__pyx_v_buf, size_t __pyx_v_size, off_t __pyx_v_off, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_pbuf = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_write", 1); /* "src/pyfuse3/handlers.pxi":427 * cdef void fuse_write (fuse_req_t req, fuse_ino_t ino, const_char *buf, * size_t size, off_t off, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.size = size */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":428 * size_t size, off_t off, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.size = size * c.off = off */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":429 * cdef _Container c = _Container() * c.req = req * c.size = size # <<<<<<<<<<<<<< * c.off = off * c.fh = fi.fh */ __pyx_v_c->size = __pyx_v_size; /* "src/pyfuse3/handlers.pxi":430 * c.req = req * c.size = size * c.off = off # <<<<<<<<<<<<<< * c.fh = fi.fh * */ __pyx_v_c->off = __pyx_v_off; /* "src/pyfuse3/handlers.pxi":431 * c.size = size * c.off = off * c.fh = fi.fh # <<<<<<<<<<<<<< * * if size > PY_SSIZE_T_MAX: */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":433 * c.fh = fi.fh * * if size > PY_SSIZE_T_MAX: # <<<<<<<<<<<<<< * raise OverflowError('Value too long to convert to Python') * pbuf = PyBytes_FromStringAndSize(buf, size) */ __pyx_t_3 = (__pyx_v_size > PY_SSIZE_T_MAX); if (unlikely(__pyx_t_3)) { /* "src/pyfuse3/handlers.pxi":434 * * if size > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') # <<<<<<<<<<<<<< * pbuf = PyBytes_FromStringAndSize(buf, size) * save_retval(fuse_write_async(c, pbuf)) */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 434, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":433 * c.fh = fi.fh * * if size > PY_SSIZE_T_MAX: # <<<<<<<<<<<<<< * raise OverflowError('Value too long to convert to Python') * pbuf = PyBytes_FromStringAndSize(buf, size) */ } /* "src/pyfuse3/handlers.pxi":435 * if size > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') * pbuf = PyBytes_FromStringAndSize(buf, size) # <<<<<<<<<<<<<< * save_retval(fuse_write_async(c, pbuf)) * */ __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_buf, ((Py_ssize_t)__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_pbuf = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":436 * raise OverflowError('Value too long to convert to Python') * pbuf = PyBytes_FromStringAndSize(buf, size) * save_retval(fuse_write_async(c, pbuf)) # <<<<<<<<<<<<<< * * async def fuse_write_async (_Container c, pbuf): */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fuse_write_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, ((PyObject *)__pyx_v_c), __pyx_v_pbuf}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 436, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":425 * * * cdef void fuse_write (fuse_req_t req, fuse_ino_t ino, const_char *buf, # <<<<<<<<<<<<<< * size_t size, off_t off, fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.fuse_write", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_XDECREF(__pyx_v_pbuf); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_41generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":438 * save_retval(fuse_write_async(c, pbuf)) * * async def fuse_write_async (_Container c, pbuf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_40fuse_write_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_39fuse_write_async, "fuse_write_async(_Container c, pbuf)"); static PyMethodDef __pyx_mdef_7pyfuse3_40fuse_write_async = {"fuse_write_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_40fuse_write_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_39fuse_write_async}; static PyObject *__pyx_pw_7pyfuse3_40fuse_write_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_pbuf = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_write_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_pbuf,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 438, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pbuf)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 438, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_write_async", 1, 2, 2, 1); __PYX_ERR(1, 438, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_write_async") < 0)) __PYX_ERR(1, 438, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_pbuf = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_write_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 438, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_write_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 438, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_39fuse_write_async(__pyx_self, __pyx_v_c, __pyx_v_pbuf); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_39fuse_write_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_pbuf) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_write_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_13_fuse_write_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 438, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_pbuf = __pyx_v_pbuf; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pbuf); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pbuf); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_41generator13, __pyx_codeobj__16, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_write_async, __pyx_n_s_fuse_write_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_write_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_41generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; size_t __pyx_t_10; int __pyx_t_11; int __pyx_t_12; char const *__pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_write_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 438, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":442 * cdef size_t len_ * * try: # <<<<<<<<<<<<<< * len_ = await operations.write(c.fh, c.off, pbuf) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":443 * * try: * len_ = await operations.write(c.fh, c.off, pbuf) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_write); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 443, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 443, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_off_t(__pyx_cur_scope->__pyx_v_c->off); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 443, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, __pyx_cur_scope->__pyx_v_pbuf}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 443, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 443, __pyx_L4_error) __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4); } else { __pyx_t_4 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(1, 443, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 443, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_cur_scope->__pyx_v_len_ = __pyx_t_10; /* "src/pyfuse3/handlers.pxi":442 * cdef size_t len_ * * try: # <<<<<<<<<<<<<< * len_ = await operations.write(c.fh, c.off, pbuf) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":447 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_write(c.req, len_) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_write(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_len_); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":444 * try: * len_ = await operations.write(c.fh, c.off, pbuf) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_11) { __Pyx_AddTraceback("pyfuse3.fuse_write_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(1, 444, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":445 * len_ = await operations.write(c.fh, c.off, pbuf) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_write(c.req, len_) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 445, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 445, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_11); } /* "src/pyfuse3/handlers.pxi":444 * try: * len_ = await operations.write(c.fh, c.off, pbuf) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":442 * cdef size_t len_ * * try: # <<<<<<<<<<<<<< * len_ = await operations.write(c.fh, c.off, pbuf) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":449 * ret = fuse_reply_write(c.req, len_) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_write(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_20 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_20) { /* "src/pyfuse3/handlers.pxi":450 * * if ret != 0: * log.error('fuse_write(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_write_fuse_reply__failed_wi, __pyx_t_5}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":449 * ret = fuse_reply_write(c.req, len_) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_write(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":438 * save_retval(fuse_write_async(c, pbuf)) * * async def fuse_write_async (_Container c, pbuf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_write_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":453 * * * cdef void fuse_write_buf(fuse_req_t req, fuse_ino_t ino, fuse_bufvec *bufv, # <<<<<<<<<<<<<< * off_t off, fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_write_buf(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, struct fuse_bufvec *__pyx_v_bufv, off_t __pyx_v_off, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_buf = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_write_buf", 1); /* "src/pyfuse3/handlers.pxi":455 * cdef void fuse_write_buf(fuse_req_t req, fuse_ino_t ino, fuse_bufvec *bufv, * off_t off, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.off = off */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":456 * off_t off, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.off = off * c.fh = fi.fh */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":457 * cdef _Container c = _Container() * c.req = req * c.off = off # <<<<<<<<<<<<<< * c.fh = fi.fh * buf = PyBytes_from_bufvec(bufv) */ __pyx_v_c->off = __pyx_v_off; /* "src/pyfuse3/handlers.pxi":458 * c.req = req * c.off = off * c.fh = fi.fh # <<<<<<<<<<<<<< * buf = PyBytes_from_bufvec(bufv) * save_retval(fuse_write_buf_async(c, buf)) */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":459 * c.off = off * c.fh = fi.fh * buf = PyBytes_from_bufvec(bufv) # <<<<<<<<<<<<<< * save_retval(fuse_write_buf_async(c, buf)) * */ __pyx_t_1 = __pyx_f_7pyfuse3_PyBytes_from_bufvec(__pyx_v_bufv); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_buf = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":460 * c.fh = fi.fh * buf = PyBytes_from_bufvec(bufv) * save_retval(fuse_write_buf_async(c, buf)) # <<<<<<<<<<<<<< * * async def fuse_write_buf_async (_Container c, buf): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_write_buf_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_v_buf}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 460, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":453 * * * cdef void fuse_write_buf(fuse_req_t req, fuse_ino_t ino, fuse_bufvec *bufv, # <<<<<<<<<<<<<< * off_t off, fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_write_buf", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_XDECREF(__pyx_v_buf); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_44generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":462 * save_retval(fuse_write_buf_async(c, buf)) * * async def fuse_write_buf_async (_Container c, buf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_43fuse_write_buf_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_42fuse_write_buf_async, "fuse_write_buf_async(_Container c, buf)"); static PyMethodDef __pyx_mdef_7pyfuse3_43fuse_write_buf_async = {"fuse_write_buf_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_43fuse_write_buf_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_42fuse_write_buf_async}; static PyObject *__pyx_pw_7pyfuse3_43fuse_write_buf_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_buf = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_write_buf_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_buf,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 462, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 462, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_write_buf_async", 1, 2, 2, 1); __PYX_ERR(1, 462, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_write_buf_async") < 0)) __PYX_ERR(1, 462, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_buf = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_write_buf_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 462, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_write_buf_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 462, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_42fuse_write_buf_async(__pyx_self, __pyx_v_c, __pyx_v_buf); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_42fuse_write_buf_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_buf) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_write_buf_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 462, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_buf = __pyx_v_buf; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_buf); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_buf); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_44generator14, __pyx_codeobj__17, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_write_buf_async, __pyx_n_s_fuse_write_buf_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 462, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_write_buf_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_44generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; size_t __pyx_t_10; int __pyx_t_11; int __pyx_t_12; char const *__pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_write_buf_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 462, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":466 * cdef size_t len_ * * try: # <<<<<<<<<<<<<< * len_ = await operations.write(c.fh, c.off, buf) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":467 * * try: * len_ = await operations.write(c.fh, c.off, buf) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_write); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 467, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 467, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_off_t(__pyx_cur_scope->__pyx_v_c->off); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 467, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, __pyx_cur_scope->__pyx_v_buf}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 467, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 467, __pyx_L4_error) __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4); } else { __pyx_t_4 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(1, 467, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 467, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_cur_scope->__pyx_v_len_ = __pyx_t_10; /* "src/pyfuse3/handlers.pxi":466 * cdef size_t len_ * * try: # <<<<<<<<<<<<<< * len_ = await operations.write(c.fh, c.off, buf) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":471 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_write(c.req, len_) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_write(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_len_); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":468 * try: * len_ = await operations.write(c.fh, c.off, buf) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_11) { __Pyx_AddTraceback("pyfuse3.fuse_write_buf_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(1, 468, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":469 * len_ = await operations.write(c.fh, c.off, buf) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_write(c.req, len_) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 469, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 469, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_11); } /* "src/pyfuse3/handlers.pxi":468 * try: * len_ = await operations.write(c.fh, c.off, buf) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":466 * cdef size_t len_ * * try: # <<<<<<<<<<<<<< * len_ = await operations.write(c.fh, c.off, buf) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":473 * ret = fuse_reply_write(c.req, len_) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_write_buf(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_20 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_20) { /* "src/pyfuse3/handlers.pxi":474 * * if ret != 0: * log.error('fuse_write_buf(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_write_buf_fuse_reply__faile, __pyx_t_5}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":473 * ret = fuse_reply_write(c.req, len_) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_write_buf(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":462 * save_retval(fuse_write_buf_async(c, buf)) * * async def fuse_write_buf_async (_Container c, buf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_write_buf_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":477 * * * cdef void fuse_flush (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_flush(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_flush", 1); /* "src/pyfuse3/handlers.pxi":478 * * cdef void fuse_flush (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.fh = fi.fh */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":479 * cdef void fuse_flush (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_flush_async(c)) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":480 * cdef _Container c = _Container() * c.req = req * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_flush_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":481 * c.req = req * c.fh = fi.fh * save_retval(fuse_flush_async(c)) # <<<<<<<<<<<<<< * * async def fuse_flush_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_flush_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 481, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":477 * * * cdef void fuse_flush (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_flush", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_47generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":483 * save_retval(fuse_flush_async(c)) * * async def fuse_flush_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_46fuse_flush_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_45fuse_flush_async, "fuse_flush_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_46fuse_flush_async = {"fuse_flush_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_46fuse_flush_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_45fuse_flush_async}; static PyObject *__pyx_pw_7pyfuse3_46fuse_flush_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_flush_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 483, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_flush_async") < 0)) __PYX_ERR(1, 483, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_flush_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 483, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_flush_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 483, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_45fuse_flush_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_45fuse_flush_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_flush_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_15_fuse_flush_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 483, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_47generator15, __pyx_codeobj__18, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_flush_async, __pyx_n_s_fuse_flush_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_flush_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_47generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_flush_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 483, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":486 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.flush(c.fh) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":487 * * try: * await operations.flush(c.fh) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_flush); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 487, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 487, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 487, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 487, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 487, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":486 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.flush(c.fh) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":491 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":488 * try: * await operations.flush(c.fh) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_flush_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 488, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":489 * await operations.flush(c.fh) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 489, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 489, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":488 * try: * await operations.flush(c.fh) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":486 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.flush(c.fh) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":493 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_flush(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":494 * * if ret != 0: * log.error('fuse_flush(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_flush_fuse_reply__failed_wi, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":493 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_flush(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":483 * save_retval(fuse_flush_async(c)) * * async def fuse_flush_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_flush_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":497 * * * cdef void fuse_release (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_release(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_release", 1); /* "src/pyfuse3/handlers.pxi":498 * * cdef void fuse_release (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.fh = fi.fh */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":499 * cdef void fuse_release (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_release_async(c)) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":500 * cdef _Container c = _Container() * c.req = req * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_release_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":501 * c.req = req * c.fh = fi.fh * save_retval(fuse_release_async(c)) # <<<<<<<<<<<<<< * * async def fuse_release_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_release_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 501, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":497 * * * cdef void fuse_release (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_release", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_50generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":503 * save_retval(fuse_release_async(c)) * * async def fuse_release_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_49fuse_release_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_48fuse_release_async, "fuse_release_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_49fuse_release_async = {"fuse_release_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_49fuse_release_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_48fuse_release_async}; static PyObject *__pyx_pw_7pyfuse3_49fuse_release_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_release_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 503, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_release_async") < 0)) __PYX_ERR(1, 503, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_release_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 503, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_release_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 503, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_48fuse_release_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_48fuse_release_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_release_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_16_fuse_release_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 503, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_50generator16, __pyx_codeobj__19, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_release_async, __pyx_n_s_fuse_release_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 503, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_release_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_50generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_release_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 503, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":506 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.release(c.fh) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":507 * * try: * await operations.release(c.fh) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_release); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 507, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 507, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 507, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 507, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 507, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":506 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.release(c.fh) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":511 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":508 * try: * await operations.release(c.fh) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_release_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 508, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":509 * await operations.release(c.fh) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 509, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 509, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":508 * try: * await operations.release(c.fh) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":506 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.release(c.fh) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":513 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_release(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":514 * * if ret != 0: * log.error('fuse_release(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_release_fuse_reply__failed, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":513 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_release(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":503 * save_retval(fuse_release_async(c)) * * async def fuse_release_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_release_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":517 * * * cdef void fuse_fsync (fuse_req_t req, fuse_ino_t ino, int datasync, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_fsync(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, int __pyx_v_datasync, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_fsync", 1); /* "src/pyfuse3/handlers.pxi":519 * cdef void fuse_fsync (fuse_req_t req, fuse_ino_t ino, int datasync, * fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.flags = datasync */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":520 * fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.flags = datasync * c.fh = fi.fh */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":521 * cdef _Container c = _Container() * c.req = req * c.flags = datasync # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_fsync_async(c)) */ __pyx_v_c->flags = __pyx_v_datasync; /* "src/pyfuse3/handlers.pxi":522 * c.req = req * c.flags = datasync * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_fsync_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":523 * c.flags = datasync * c.fh = fi.fh * save_retval(fuse_fsync_async(c)) # <<<<<<<<<<<<<< * * async def fuse_fsync_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_fsync_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":517 * * * cdef void fuse_fsync (fuse_req_t req, fuse_ino_t ino, int datasync, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_fsync", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_53generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":525 * save_retval(fuse_fsync_async(c)) * * async def fuse_fsync_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_52fuse_fsync_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_51fuse_fsync_async, "fuse_fsync_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_52fuse_fsync_async = {"fuse_fsync_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_52fuse_fsync_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_51fuse_fsync_async}; static PyObject *__pyx_pw_7pyfuse3_52fuse_fsync_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_fsync_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 525, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_fsync_async") < 0)) __PYX_ERR(1, 525, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_fsync_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 525, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_fsync_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 525, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_51fuse_fsync_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_51fuse_fsync_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_fsync_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 525, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_53generator17, __pyx_codeobj__20, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_fsync_async, __pyx_n_s_fuse_fsync_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_fsync_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_53generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_fsync_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 525, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":528 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.fsync(c.fh, c.flags != 0) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":529 * * try: * await operations.fsync(c.fh, c.flags != 0) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_fsync); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 529, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 529, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyBool_FromLong((__pyx_cur_scope->__pyx_v_c->flags != 0)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 529, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_7}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 529, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 529, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 529, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":528 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.fsync(c.fh, c.flags != 0) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":533 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":530 * try: * await operations.fsync(c.fh, c.flags != 0) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_fsync_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(1, 530, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":531 * await operations.fsync(c.fh, c.flags != 0) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 531, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 531, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":530 * try: * await operations.fsync(c.fh, c.flags != 0) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":528 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.fsync(c.fh, c.flags != 0) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":535 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_fsync(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":536 * * if ret != 0: * log.error('fuse_fsync(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_fsync_fuse_reply__failed_wi, __pyx_t_5}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":535 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_fsync(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":525 * save_retval(fuse_fsync_async(c)) * * async def fuse_fsync_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_fsync_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":539 * * * cdef void fuse_opendir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_opendir(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_opendir", 1); /* "src/pyfuse3/handlers.pxi":540 * * cdef void fuse_opendir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":541 * cdef void fuse_opendir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.fi = fi[0] */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":542 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.fi = fi[0] * save_retval(fuse_opendir_async(c)) */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":543 * c.req = req * c.ino = ino * c.fi = fi[0] # <<<<<<<<<<<<<< * save_retval(fuse_opendir_async(c)) * */ __pyx_v_c->fi = (__pyx_v_fi[0]); /* "src/pyfuse3/handlers.pxi":544 * c.ino = ino * c.fi = fi[0] * save_retval(fuse_opendir_async(c)) # <<<<<<<<<<<<<< * * async def fuse_opendir_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_opendir_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 544, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":539 * * * cdef void fuse_opendir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_opendir", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_56generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":546 * save_retval(fuse_opendir_async(c)) * * async def fuse_opendir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_55fuse_opendir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_54fuse_opendir_async, "fuse_opendir_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_55fuse_opendir_async = {"fuse_opendir_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_55fuse_opendir_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_54fuse_opendir_async}; static PyObject *__pyx_pw_7pyfuse3_55fuse_opendir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_opendir_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 546, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_opendir_async") < 0)) __PYX_ERR(1, 546, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_opendir_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 546, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_opendir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 546, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_54fuse_opendir_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_54fuse_opendir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_opendir_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 546, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_56generator18, __pyx_codeobj__21, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_opendir_async, __pyx_n_s_fuse_opendir_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_opendir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_56generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; uint64_t __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_opendir_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 546, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":549 * cdef int ret * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * c.fi.fh = await operations.opendir(c.ino, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":550 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * c.fi.fh = await operations.opendir(c.ino, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":551 * ctx = get_request_context(c.req) * try: * c.fi.fh = await operations.opendir(c.ino, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_opendir); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 551, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 551, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 551, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 551, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 551, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_9 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_9 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 551, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_cur_scope->__pyx_v_c->fi.fh = __pyx_t_9; /* "src/pyfuse3/handlers.pxi":550 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * c.fi.fh = await operations.opendir(c.ino, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":555 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_open(c.req, &c.fi) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_open(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_c->fi)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":552 * try: * c.fi.fh = await operations.opendir(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_opendir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 552, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":553 * c.fi.fh = await operations.opendir(c.ino, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_open(c.req, &c.fi) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 553, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 553, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":552 * try: * c.fi.fh = await operations.opendir(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":550 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * c.fi.fh = await operations.opendir(c.ino, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":557 * ret = fuse_reply_open(c.req, &c.fi) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_opendir(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":558 * * if ret != 0: * log.error('fuse_opendir(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_opendir_fuse_reply__failed, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":557 * ret = fuse_reply_open(c.req, &c.fi) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_opendir(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":546 * save_retval(fuse_opendir_async(c)) * * async def fuse_opendir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_opendir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_12ReaddirToken_1__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_12ReaddirToken___reduce_cython__, "ReaddirToken.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_12ReaddirToken_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_12ReaddirToken_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_12ReaddirToken___reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_12ReaddirToken_1__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_12ReaddirToken___reduce_cython__(((struct __pyx_obj_7pyfuse3_ReaddirToken *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_12ReaddirToken___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_req_cannot_be_converted_to, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.ReaddirToken.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_12ReaddirToken_3__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_12ReaddirToken_2__setstate_cython__, "ReaddirToken.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_12ReaddirToken_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_12ReaddirToken_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_12ReaddirToken_2__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_12ReaddirToken_3__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.ReaddirToken.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_12ReaddirToken_2__setstate_cython__(((struct __pyx_obj_7pyfuse3_ReaddirToken *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_12ReaddirToken_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.req cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_req_cannot_be_converted_to, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.ReaddirToken.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":568 * cdef size_t size * * cdef void fuse_readdirplus (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, # <<<<<<<<<<<<<< * fuse_file_info *fi): * global py_retval */ static void __pyx_f_7pyfuse3_fuse_readdirplus(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, size_t __pyx_v_size, off_t __pyx_v_off, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_readdirplus", 1); /* "src/pyfuse3/handlers.pxi":571 * fuse_file_info *fi): * global py_retval * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.size = size */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":572 * global py_retval * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.size = size * c.off = off */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":573 * cdef _Container c = _Container() * c.req = req * c.size = size # <<<<<<<<<<<<<< * c.off = off * c.fh = fi.fh */ __pyx_v_c->size = __pyx_v_size; /* "src/pyfuse3/handlers.pxi":574 * c.req = req * c.size = size * c.off = off # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_readdirplus_async(c)) */ __pyx_v_c->off = __pyx_v_off; /* "src/pyfuse3/handlers.pxi":575 * c.size = size * c.off = off * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_readdirplus_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":576 * c.off = off * c.fh = fi.fh * save_retval(fuse_readdirplus_async(c)) # <<<<<<<<<<<<<< * * async def fuse_readdirplus_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_readdirplus_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 576, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":568 * cdef size_t size * * cdef void fuse_readdirplus (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, # <<<<<<<<<<<<<< * fuse_file_info *fi): * global py_retval */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_readdirplus", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_59generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":578 * save_retval(fuse_readdirplus_async(c)) * * async def fuse_readdirplus_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ReaddirToken token = ReaddirToken() */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_58fuse_readdirplus_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_57fuse_readdirplus_async, "fuse_readdirplus_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_58fuse_readdirplus_async = {"fuse_readdirplus_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_58fuse_readdirplus_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_57fuse_readdirplus_async}; static PyObject *__pyx_pw_7pyfuse3_58fuse_readdirplus_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_readdirplus_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 578, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_readdirplus_async") < 0)) __PYX_ERR(1, 578, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_readdirplus_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 578, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_readdirplus_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 578, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_57fuse_readdirplus_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_57fuse_readdirplus_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_readdirplus_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 578, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_59generator19, __pyx_codeobj__22, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_readdirplus_async, __pyx_n_s_fuse_readdirplus_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_readdirplus_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_59generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; size_t __pyx_t_2; fuse_req_t __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; unsigned int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; char const *__pyx_t_15; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; PyObject *__pyx_t_20 = NULL; PyObject *__pyx_t_21 = NULL; char const *__pyx_t_22; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_readdirplus_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L13_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 578, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":580 * async def fuse_readdirplus_async (_Container c): * cdef int ret * cdef ReaddirToken token = ReaddirToken() # <<<<<<<<<<<<<< * token.buf_start = NULL * token.size = c.size */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3_ReaddirToken)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_token = ((struct __pyx_obj_7pyfuse3_ReaddirToken *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":581 * cdef int ret * cdef ReaddirToken token = ReaddirToken() * token.buf_start = NULL # <<<<<<<<<<<<<< * token.size = c.size * token.req = c.req */ __pyx_cur_scope->__pyx_v_token->buf_start = NULL; /* "src/pyfuse3/handlers.pxi":582 * cdef ReaddirToken token = ReaddirToken() * token.buf_start = NULL * token.size = c.size # <<<<<<<<<<<<<< * token.req = c.req * */ __pyx_t_2 = __pyx_cur_scope->__pyx_v_c->size; __pyx_cur_scope->__pyx_v_token->size = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":583 * token.buf_start = NULL * token.size = c.size * token.req = c.req # <<<<<<<<<<<<<< * * try: */ __pyx_t_3 = __pyx_cur_scope->__pyx_v_c->req; __pyx_cur_scope->__pyx_v_token->req = __pyx_t_3; /* "src/pyfuse3/handlers.pxi":585 * token.req = c.req * * try: # <<<<<<<<<<<<<< * await operations.readdir(c.fh, c.off, token) * except FUSEError as e: */ /*try:*/ { { __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { /* "src/pyfuse3/handlers.pxi":586 * * try: * await operations.readdir(c.fh, c.off, token) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_readdir); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 586, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 586, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyInt_From_off_t(__pyx_cur_scope->__pyx_v_c->off); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 586, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; __pyx_t_11 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_11 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_8, __pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_token)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 586, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_0 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L13_resume_from_await:; __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_5); __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 586, __pyx_L7_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 586, __pyx_L7_error) } } /* "src/pyfuse3/handlers.pxi":585 * token.req = c.req * * try: # <<<<<<<<<<<<<< * await operations.readdir(c.fh, c.off, token) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":590 * ret = fuse_reply_err(c.req, e.errno) * else: * if token.buf_start == NULL: # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, NULL, 0) * else: */ /*else:*/ { __pyx_t_12 = (__pyx_cur_scope->__pyx_v_token->buf_start == NULL); if (__pyx_t_12) { /* "src/pyfuse3/handlers.pxi":591 * else: * if token.buf_start == NULL: * ret = fuse_reply_buf(c.req, NULL, 0) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_buf(c.req, token.buf_start, c.size - token.size) */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_buf(__pyx_cur_scope->__pyx_v_c->req, NULL, 0); /* "src/pyfuse3/handlers.pxi":590 * ret = fuse_reply_err(c.req, e.errno) * else: * if token.buf_start == NULL: # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, NULL, 0) * else: */ goto __pyx_L14; } /* "src/pyfuse3/handlers.pxi":593 * ret = fuse_reply_buf(c.req, NULL, 0) * else: * ret = fuse_reply_buf(c.req, token.buf_start, c.size - token.size) # <<<<<<<<<<<<<< * finally: * stdlib.free(token.buf_start) */ /*else*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_buf(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_token->buf_start, (__pyx_cur_scope->__pyx_v_c->size - __pyx_cur_scope->__pyx_v_token->size)); } __pyx_L14:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":587 * try: * await operations.readdir(c.fh, c.off, token) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_13) { __Pyx_AddTraceback("pyfuse3.fuse_readdirplus_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(1, 587, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_v_e = __pyx_t_7; /*try:*/ { /* "src/pyfuse3/handlers.pxi":588 * await operations.readdir(c.fh, c.off, token) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * if token.buf_start == NULL: */ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 588, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 588, __pyx_L20_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_13); } /* "src/pyfuse3/handlers.pxi":587 * try: * await operations.readdir(c.fh, c.off, token) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L21; } __pyx_L20_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __pyx_t_13 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18); __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; goto __pyx_L9_except_error; } __pyx_L21:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L8_exception_handled; } goto __pyx_L9_except_error; /* "src/pyfuse3/handlers.pxi":585 * token.req = c.req * * try: # <<<<<<<<<<<<<< * await operations.readdir(c.fh, c.off, token) * except FUSEError as e: */ __pyx_L9_except_error:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L5_error; __pyx_L8_exception_handled:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); __pyx_L12_try_end:; } } /* "src/pyfuse3/handlers.pxi":595 * ret = fuse_reply_buf(c.req, token.buf_start, c.size - token.size) * finally: * stdlib.free(token.buf_start) # <<<<<<<<<<<<<< * * if ret != 0: */ /*finally:*/ { /*normal exit:*/{ free(__pyx_cur_scope->__pyx_v_token->buf_start); goto __pyx_L6; } __pyx_L5_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_14 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_22 = __pyx_filename; { free(__pyx_cur_scope->__pyx_v_token->buf_start); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_21); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_22; goto __pyx_L1_error; } __pyx_L6:; } /* "src/pyfuse3/handlers.pxi":597 * stdlib.free(token.buf_start) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_readdirplus(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_12 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_12) { /* "src/pyfuse3/handlers.pxi":598 * * if ret != 0: * log.error('fuse_readdirplus(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_log); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_11 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_11 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_kp_u_fuse_readdirplus_fuse_reply__fai, __pyx_t_7}; __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":597 * stdlib.free(token.buf_start) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_readdirplus(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":578 * save_retval(fuse_readdirplus_async(c)) * * async def fuse_readdirplus_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ReaddirToken token = ReaddirToken() */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("fuse_readdirplus_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":601 * * * cdef void fuse_releasedir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_releasedir(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_releasedir", 1); /* "src/pyfuse3/handlers.pxi":602 * * cdef void fuse_releasedir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.fh = fi.fh */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":603 * cdef void fuse_releasedir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_releasedir_async(c)) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":604 * cdef _Container c = _Container() * c.req = req * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_releasedir_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":605 * c.req = req * c.fh = fi.fh * save_retval(fuse_releasedir_async(c)) # <<<<<<<<<<<<<< * * async def fuse_releasedir_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_releasedir_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 605, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":601 * * * cdef void fuse_releasedir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_releasedir", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_62generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":607 * save_retval(fuse_releasedir_async(c)) * * async def fuse_releasedir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_61fuse_releasedir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_60fuse_releasedir_async, "fuse_releasedir_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_61fuse_releasedir_async = {"fuse_releasedir_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_61fuse_releasedir_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_60fuse_releasedir_async}; static PyObject *__pyx_pw_7pyfuse3_61fuse_releasedir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_releasedir_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 607, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_releasedir_async") < 0)) __PYX_ERR(1, 607, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_releasedir_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 607, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_releasedir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 607, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_60fuse_releasedir_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_60fuse_releasedir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_releasedir_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 607, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_62generator20, __pyx_codeobj__23, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_releasedir_async, __pyx_n_s_fuse_releasedir_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 607, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_releasedir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_62generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_releasedir_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 607, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":610 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.releasedir(c.fh) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":611 * * try: * await operations.releasedir(c.fh) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_releasedir); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 611, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 611, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 611, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 611, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 611, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":610 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.releasedir(c.fh) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":615 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":612 * try: * await operations.releasedir(c.fh) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_releasedir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 612, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":613 * await operations.releasedir(c.fh) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 613, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 613, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":612 * try: * await operations.releasedir(c.fh) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":610 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.releasedir(c.fh) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":617 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_releasedir(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":618 * * if ret != 0: * log.error('fuse_releasedir(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_releasedir_fuse_reply__fail, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":617 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_releasedir(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":607 * save_retval(fuse_releasedir_async(c)) * * async def fuse_releasedir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_releasedir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":622 * * * cdef void fuse_fsyncdir (fuse_req_t req, fuse_ino_t ino, int datasync, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_fsyncdir(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino, int __pyx_v_datasync, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; uint64_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_fsyncdir", 1); /* "src/pyfuse3/handlers.pxi":624 * cdef void fuse_fsyncdir (fuse_req_t req, fuse_ino_t ino, int datasync, * fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.flags = datasync */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":625 * fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.flags = datasync * c.fh = fi.fh */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":626 * cdef _Container c = _Container() * c.req = req * c.flags = datasync # <<<<<<<<<<<<<< * c.fh = fi.fh * save_retval(fuse_fsyncdir_async(c)) */ __pyx_v_c->flags = __pyx_v_datasync; /* "src/pyfuse3/handlers.pxi":627 * c.req = req * c.flags = datasync * c.fh = fi.fh # <<<<<<<<<<<<<< * save_retval(fuse_fsyncdir_async(c)) * */ __pyx_t_2 = __pyx_v_fi->fh; __pyx_v_c->fh = __pyx_t_2; /* "src/pyfuse3/handlers.pxi":628 * c.flags = datasync * c.fh = fi.fh * save_retval(fuse_fsyncdir_async(c)) # <<<<<<<<<<<<<< * * async def fuse_fsyncdir_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_fsyncdir_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":622 * * * cdef void fuse_fsyncdir (fuse_req_t req, fuse_ino_t ino, int datasync, # <<<<<<<<<<<<<< * fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_fsyncdir", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_65generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":630 * save_retval(fuse_fsyncdir_async(c)) * * async def fuse_fsyncdir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_64fuse_fsyncdir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_63fuse_fsyncdir_async, "fuse_fsyncdir_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_64fuse_fsyncdir_async = {"fuse_fsyncdir_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_64fuse_fsyncdir_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_63fuse_fsyncdir_async}; static PyObject *__pyx_pw_7pyfuse3_64fuse_fsyncdir_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_fsyncdir_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 630, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_fsyncdir_async") < 0)) __PYX_ERR(1, 630, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_fsyncdir_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 630, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_fsyncdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 630, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_63fuse_fsyncdir_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_63fuse_fsyncdir_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_fsyncdir_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 630, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_65generator21, __pyx_codeobj__24, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_fsyncdir_async, __pyx_n_s_fuse_fsyncdir_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 630, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_fsyncdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_65generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_t_19; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_fsyncdir_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 630, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":633 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.fsyncdir(c.fh, c.flags != 0) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":634 * * try: * await operations.fsyncdir(c.fh, c.flags != 0) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_fsyncdir); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 634, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_uint64_t(__pyx_cur_scope->__pyx_v_c->fh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 634, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyBool_FromLong((__pyx_cur_scope->__pyx_v_c->flags != 0)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 634, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_7}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 634, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 634, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 634, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":633 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.fsyncdir(c.fh, c.flags != 0) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":638 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":635 * try: * await operations.fsyncdir(c.fh, c.flags != 0) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_10) { __Pyx_AddTraceback("pyfuse3.fuse_fsyncdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(1, 635, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":636 * await operations.fsyncdir(c.fh, c.flags != 0) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 636, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 636, __pyx_L16_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_10); } /* "src/pyfuse3/handlers.pxi":635 * try: * await operations.fsyncdir(c.fh, c.flags != 0) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":633 * cdef int ret * * try: # <<<<<<<<<<<<<< * await operations.fsyncdir(c.fh, c.flags != 0) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":640 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_fsyncdir(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_19 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_19) { /* "src/pyfuse3/handlers.pxi":641 * * if ret != 0: * log.error('fuse_fsyncdir(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_kp_u_fuse_fsyncdir_fuse_reply__failed, __pyx_t_5}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":640 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_fsyncdir(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":630 * save_retval(fuse_fsyncdir_async(c)) * * async def fuse_fsyncdir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("fuse_fsyncdir_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":645 * * * cdef void fuse_statfs (fuse_req_t req, fuse_ino_t ino): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_statfs(fuse_req_t __pyx_v_req, CYTHON_UNUSED fuse_ino_t __pyx_v_ino) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_statfs", 1); /* "src/pyfuse3/handlers.pxi":646 * * cdef void fuse_statfs (fuse_req_t req, fuse_ino_t ino): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * save_retval(fuse_statfs_async(c)) */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 646, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":647 * cdef void fuse_statfs (fuse_req_t req, fuse_ino_t ino): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * save_retval(fuse_statfs_async(c)) * */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":648 * cdef _Container c = _Container() * c.req = req * save_retval(fuse_statfs_async(c)) # <<<<<<<<<<<<<< * * async def fuse_statfs_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_statfs_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 648, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":645 * * * cdef void fuse_statfs (fuse_req_t req, fuse_ino_t ino): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_statfs", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_68generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":650 * save_retval(fuse_statfs_async(c)) * * async def fuse_statfs_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef StatvfsData stats */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_67fuse_statfs_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_66fuse_statfs_async, "fuse_statfs_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_67fuse_statfs_async = {"fuse_statfs_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_67fuse_statfs_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_66fuse_statfs_async}; static PyObject *__pyx_pw_7pyfuse3_67fuse_statfs_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_statfs_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 650, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_statfs_async") < 0)) __PYX_ERR(1, 650, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_statfs_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 650, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_statfs_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 650, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_66fuse_statfs_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_66fuse_statfs_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_statfs_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 650, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_68generator22, __pyx_codeobj__25, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_statfs_async, __pyx_n_s_fuse_statfs_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 650, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_statfs_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_68generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; unsigned int __pyx_t_7; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_statfs_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 650, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":654 * cdef StatvfsData stats * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * stats = await operations.statfs(ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":655 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * stats = await operations.statfs(ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":656 * ctx = get_request_context(c.req) * try: * stats = await operations.statfs(ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_statfs); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 656, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 656, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 656, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 656, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_StatvfsData)))) __PYX_ERR(1, 656, __pyx_L4_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_stats = ((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":655 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * stats = await operations.statfs(ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":660 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_statfs(c.req, &stats.stat) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_statfs(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_stats->stat)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":657 * try: * stats = await operations.statfs(ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_8) { __Pyx_AddTraceback("pyfuse3.fuse_statfs_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(1, 657, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":658 * stats = await operations.statfs(ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_statfs(c.req, &stats.stat) */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 658, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 658, __pyx_L16_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_8); } /* "src/pyfuse3/handlers.pxi":657 * try: * stats = await operations.statfs(ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_8 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":655 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * stats = await operations.statfs(ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":662 * ret = fuse_reply_statfs(c.req, &stats.stat) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_statfs(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":663 * * if ret != 0: * log.error('fuse_statfs(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = NULL; __pyx_t_7 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_kp_u_fuse_statfs_fuse_reply__failed_w, __pyx_t_1}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":662 * ret = fuse_reply_statfs(c.req, &stats.stat) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_statfs(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":650 * save_retval(fuse_statfs_async(c)) * * async def fuse_statfs_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef StatvfsData stats */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("fuse_statfs_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":666 * * * cdef void fuse_setxattr (fuse_req_t req, fuse_ino_t ino, const_char *cname, # <<<<<<<<<<<<<< * const_char *cvalue, size_t size, int flags): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_setxattr(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, const char *__pyx_v_cname, const char *__pyx_v_cvalue, size_t __pyx_v_size, int __pyx_v_flags) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = NULL; PyObject *__pyx_v_value = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_setxattr", 1); /* "src/pyfuse3/handlers.pxi":668 * cdef void fuse_setxattr (fuse_req_t req, fuse_ino_t ino, const_char *cname, * const_char *cvalue, size_t size, int flags): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":669 * const_char *cvalue, size_t size, int flags): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.size = size */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":670 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.size = size * c.flags = flags */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":671 * c.req = req * c.ino = ino * c.size = size # <<<<<<<<<<<<<< * c.flags = flags * */ __pyx_v_c->size = __pyx_v_size; /* "src/pyfuse3/handlers.pxi":672 * c.ino = ino * c.size = size * c.flags = flags # <<<<<<<<<<<<<< * * name = PyBytes_FromString(cname) */ __pyx_v_c->flags = __pyx_v_flags; /* "src/pyfuse3/handlers.pxi":674 * c.flags = flags * * name = PyBytes_FromString(cname) # <<<<<<<<<<<<<< * if c.size > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') */ __pyx_t_1 = PyBytes_FromString(__pyx_v_cname); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":675 * * name = PyBytes_FromString(cname) * if c.size > PY_SSIZE_T_MAX: # <<<<<<<<<<<<<< * raise OverflowError('Value too long to convert to Python') * value = PyBytes_FromStringAndSize(cvalue, c.size) */ __pyx_t_2 = (__pyx_v_c->size > PY_SSIZE_T_MAX); if (unlikely(__pyx_t_2)) { /* "src/pyfuse3/handlers.pxi":676 * name = PyBytes_FromString(cname) * if c.size > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') # <<<<<<<<<<<<<< * value = PyBytes_FromStringAndSize(cvalue, c.size) * */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 676, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":675 * * name = PyBytes_FromString(cname) * if c.size > PY_SSIZE_T_MAX: # <<<<<<<<<<<<<< * raise OverflowError('Value too long to convert to Python') * value = PyBytes_FromStringAndSize(cvalue, c.size) */ } /* "src/pyfuse3/handlers.pxi":677 * if c.size > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') * value = PyBytes_FromStringAndSize(cvalue, c.size) # <<<<<<<<<<<<<< * * save_retval(fuse_setxattr_async(c, name, value)) */ __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_cvalue, ((Py_ssize_t)__pyx_v_c->size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_value = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":679 * value = PyBytes_FromStringAndSize(cvalue, c.size) * * save_retval(fuse_setxattr_async(c, name, value)) # <<<<<<<<<<<<<< * * async def fuse_setxattr_async (_Container c, name, value): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fuse_setxattr_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_v_name, __pyx_v_value}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":666 * * * cdef void fuse_setxattr (fuse_req_t req, fuse_ino_t ino, const_char *cname, # <<<<<<<<<<<<<< * const_char *cvalue, size_t size, int flags): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_setxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_XDECREF(__pyx_v_name); __Pyx_XDECREF(__pyx_v_value); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_71generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":681 * save_retval(fuse_setxattr_async(c, name, value)) * * async def fuse_setxattr_async (_Container c, name, value): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_70fuse_setxattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_69fuse_setxattr_async, "fuse_setxattr_async(_Container c, name, value)"); static PyMethodDef __pyx_mdef_7pyfuse3_70fuse_setxattr_async = {"fuse_setxattr_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_70fuse_setxattr_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_69fuse_setxattr_async}; static PyObject *__pyx_pw_7pyfuse3_70fuse_setxattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; PyObject *__pyx_v_value = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_setxattr_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,&__pyx_n_s_value,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 681, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 681, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_setxattr_async", 1, 3, 3, 1); __PYX_ERR(1, 681, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 681, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_setxattr_async", 1, 3, 3, 2); __PYX_ERR(1, 681, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_setxattr_async") < 0)) __PYX_ERR(1, 681, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; __pyx_v_value = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_setxattr_async", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 681, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_setxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 681, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_69fuse_setxattr_async(__pyx_self, __pyx_v_c, __pyx_v_name, __pyx_v_value); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_69fuse_setxattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name, PyObject *__pyx_v_value) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_setxattr_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 681, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); __pyx_cur_scope->__pyx_v_value = __pyx_v_value; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_value); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_value); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_71generator23, __pyx_codeobj__26, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_setxattr_async, __pyx_n_s_fuse_setxattr_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 681, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_setxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_71generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; int __pyx_t_14; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; int __pyx_t_17; char const *__pyx_t_18; PyObject *__pyx_t_19 = NULL; PyObject *__pyx_t_20 = NULL; PyObject *__pyx_t_21 = NULL; PyObject *__pyx_t_22 = NULL; PyObject *__pyx_t_23 = NULL; PyObject *__pyx_t_24 = NULL; char const *__pyx_t_25; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_setxattr_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L21_resume_from_await; case 2: goto __pyx_L34_resume_from_await; case 3: goto __pyx_L35_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 681, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":685 * * # Special case for deadlock debugging * if c.ino == FUSE_ROOT_ID and name == 'fuse_stacktrace': # <<<<<<<<<<<<<< * operations.stacktrace() * fuse_reply_err(c.req, 0) */ __pyx_t_2 = (__pyx_cur_scope->__pyx_v_c->ino == FUSE_ROOT_ID); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_name, __pyx_n_u_fuse_stacktrace, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 685, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":686 * # Special case for deadlock debugging * if c.ino == FUSE_ROOT_ID and name == 'fuse_stacktrace': * operations.stacktrace() # <<<<<<<<<<<<<< * fuse_reply_err(c.req, 0) * return */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_stacktrace); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "src/pyfuse3/handlers.pxi":687 * if c.ino == FUSE_ROOT_ID and name == 'fuse_stacktrace': * operations.stacktrace() * fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * return * */ (void)(fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0)); /* "src/pyfuse3/handlers.pxi":688 * operations.stacktrace() * fuse_reply_err(c.req, 0) * return # <<<<<<<<<<<<<< * * # Make sure we know all the flags */ __Pyx_XDECREF(__pyx_r); __pyx_r = NULL; goto __pyx_L0; /* "src/pyfuse3/handlers.pxi":685 * * # Special case for deadlock debugging * if c.ino == FUSE_ROOT_ID and name == 'fuse_stacktrace': # <<<<<<<<<<<<<< * operations.stacktrace() * fuse_reply_err(c.req, 0) */ } /* "src/pyfuse3/handlers.pxi":691 * * # Make sure we know all the flags * if c.flags & ~(libc_extra.XATTR_CREATE | libc_extra.XATTR_REPLACE): # <<<<<<<<<<<<<< * raise ValueError('unknown flag(s): %o' % c.flags) * */ __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_c->flags & (~(XATTR_CREATE | XATTR_REPLACE))) != 0); if (unlikely(__pyx_t_1)) { /* "src/pyfuse3/handlers.pxi":692 * # Make sure we know all the flags * if c.flags & ~(libc_extra.XATTR_CREATE | libc_extra.XATTR_REPLACE): * raise ValueError('unknown flag(s): %o' % c.flags) # <<<<<<<<<<<<<< * * ctx = get_request_context(c.req) */ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_c->flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_unknown_flag_s_o, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 692, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":691 * * # Make sure we know all the flags * if c.flags & ~(libc_extra.XATTR_CREATE | libc_extra.XATTR_REPLACE): # <<<<<<<<<<<<<< * raise ValueError('unknown flag(s): %o' % c.flags) * */ } /* "src/pyfuse3/handlers.pxi":694 * raise ValueError('unknown flag(s): %o' % c.flags) * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist */ __pyx_t_3 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_3; __pyx_t_3 = 0; /* "src/pyfuse3/handlers.pxi":695 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: */ { __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { /* "src/pyfuse3/handlers.pxi":696 * ctx = get_request_context(c.req) * try: * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist # <<<<<<<<<<<<<< * try: * await operations.getxattr(c.ino, name, ctx) */ __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_c->flags & XATTR_CREATE) != 0); if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":697 * try: * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: # <<<<<<<<<<<<<< * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { /* "src/pyfuse3/handlers.pxi":698 * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: * await operations.getxattr(c.ino, name, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * if e.errno != ENOATTR: */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_getxattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_13 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 698, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_4 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_t_12); __pyx_cur_scope->__pyx_t_5 = __pyx_t_12; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L21_resume_from_await:; __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_8); __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_9); __pyx_t_10 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_10); __pyx_t_11 = __pyx_cur_scope->__pyx_t_4; __pyx_cur_scope->__pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_t_11); __pyx_t_12 = __pyx_cur_scope->__pyx_t_5; __pyx_cur_scope->__pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 698, __pyx_L15_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 698, __pyx_L15_error) } } /* "src/pyfuse3/handlers.pxi":697 * try: * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: # <<<<<<<<<<<<<< * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":703 * raise * else: * raise FUSEError(errno.EEXIST) # <<<<<<<<<<<<<< * * elif c.flags & libc_extra.XATTR_REPLACE: # Attribute must exist */ /*else:*/ { __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(EEXIST); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 703, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 703, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 703, __pyx_L17_except_error) } __pyx_L15_error:; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":699 * try: * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * if e.errno != ENOATTR: * raise */ __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_14) { __Pyx_AddTraceback("pyfuse3.fuse_setxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(1, 699, __pyx_L17_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_v_e = __pyx_t_3; /*try:*/ { /* "src/pyfuse3/handlers.pxi":700 * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: * if e.errno != ENOATTR: # <<<<<<<<<<<<<< * raise * else: */ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 700, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_15 = __Pyx_PyInt_From___pyx_anon_enum(ENOATTR); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 700, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = PyObject_RichCompare(__pyx_t_13, __pyx_t_15, Py_NE); __Pyx_XGOTREF(__pyx_t_16); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 700, __pyx_L27_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_16); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 700, __pyx_L27_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(__pyx_t_1)) { /* "src/pyfuse3/handlers.pxi":701 * except FUSEError as e: * if e.errno != ENOATTR: * raise # <<<<<<<<<<<<<< * else: * raise FUSEError(errno.EEXIST) */ __Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; __PYX_ERR(1, 701, __pyx_L27_error) /* "src/pyfuse3/handlers.pxi":700 * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: * if e.errno != ENOATTR: # <<<<<<<<<<<<<< * raise * else: */ } } /* "src/pyfuse3/handlers.pxi":699 * try: * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * if e.errno != ENOATTR: * raise */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L28; } __pyx_L27_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_14 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); } __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L17_except_error; } __pyx_L28:; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L16_exception_handled; } goto __pyx_L17_except_error; /* "src/pyfuse3/handlers.pxi":697 * try: * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: # <<<<<<<<<<<<<< * await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: */ __pyx_L17_except_error:; __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); goto __pyx_L8_error; __pyx_L16_exception_handled:; __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); } /* "src/pyfuse3/handlers.pxi":696 * ctx = get_request_context(c.req) * try: * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist # <<<<<<<<<<<<<< * try: * await operations.getxattr(c.ino, name, ctx) */ goto __pyx_L14; } /* "src/pyfuse3/handlers.pxi":705 * raise FUSEError(errno.EEXIST) * * elif c.flags & libc_extra.XATTR_REPLACE: # Attribute must exist # <<<<<<<<<<<<<< * await operations.getxattr(c.ino, name, ctx) * */ __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_c->flags & XATTR_REPLACE) != 0); if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":706 * * elif c.flags & libc_extra.XATTR_REPLACE: # Attribute must exist * await operations.getxattr(c.ino, name, ctx) # <<<<<<<<<<<<<< * * await operations.setxattr(c.ino, name, value, ctx) */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_getxattr); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 706, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 706, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_16, __pyx_t_4, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 706, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L34_resume_from_await:; __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_8); __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 706, __pyx_L8_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 706, __pyx_L8_error) } } /* "src/pyfuse3/handlers.pxi":705 * raise FUSEError(errno.EEXIST) * * elif c.flags & libc_extra.XATTR_REPLACE: # Attribute must exist # <<<<<<<<<<<<<< * await operations.getxattr(c.ino, name, ctx) * */ } __pyx_L14:; /* "src/pyfuse3/handlers.pxi":708 * await operations.getxattr(c.ino, name, ctx) * * await operations.setxattr(c.ino, name, value, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_setxattr); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 708, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 708, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_16, __pyx_t_4, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_value, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 708, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_t_0 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_t_1 = __pyx_t_8; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_2 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 3; return __pyx_r; __pyx_L35_resume_from_await:; __pyx_t_7 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_8); __pyx_t_9 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 708, __pyx_L8_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 708, __pyx_L8_error) } } /* "src/pyfuse3/handlers.pxi":695 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: */ } /* "src/pyfuse3/handlers.pxi":712 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":709 * * await operations.setxattr(c.ino, name, value, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_17 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_17) { __Pyx_AddTraceback("pyfuse3.fuse_setxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(1, 709, __pyx_L10_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_e, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/handlers.pxi":710 * await operations.setxattr(c.ino, name, value, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 710, __pyx_L41_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyInt_As_int(__pyx_t_16); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 710, __pyx_L41_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_17); } /* "src/pyfuse3/handlers.pxi":709 * * await operations.setxattr(c.ino, name, value, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L42; } __pyx_L41_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_24); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_22); __pyx_t_17 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_25 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_22); __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_10); __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_25; goto __pyx_L10_except_error; } __pyx_L42:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_exception_handled; } goto __pyx_L10_except_error; /* "src/pyfuse3/handlers.pxi":695 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist * try: */ __pyx_L10_except_error:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L1_error; __pyx_L9_exception_handled:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_L13_try_end:; } /* "src/pyfuse3/handlers.pxi":714 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_setxattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_1 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_1) { /* "src/pyfuse3/handlers.pxi":715 * * if ret != 0: * log.error('fuse_setxattr(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_16 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_16, __pyx_kp_u_fuse_setxattr_fuse_reply__failed, __pyx_t_3}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "src/pyfuse3/handlers.pxi":714 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_setxattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":681 * save_retval(fuse_setxattr_async(c, name, value)) * * async def fuse_setxattr_async (_Container c, name, value): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_15); __Pyx_XDECREF(__pyx_t_16); __Pyx_AddTraceback("fuse_setxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":718 * * * cdef void fuse_getxattr (fuse_req_t req, fuse_ino_t ino, const_char *name, # <<<<<<<<<<<<<< * size_t size): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_getxattr(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, const char *__pyx_v_name, size_t __pyx_v_size) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_getxattr", 1); /* "src/pyfuse3/handlers.pxi":720 * cdef void fuse_getxattr (fuse_req_t req, fuse_ino_t ino, const_char *name, * size_t size): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":721 * size_t size): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.size = size */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":722 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.size = size * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":723 * c.req = req * c.ino = ino * c.size = size # <<<<<<<<<<<<<< * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->size = __pyx_v_size; /* "src/pyfuse3/handlers.pxi":724 * c.ino = ino * c.size = size * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_getxattr_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_getxattr_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 724, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":718 * * * cdef void fuse_getxattr (fuse_req_t req, fuse_ino_t ino, const_char *name, # <<<<<<<<<<<<<< * size_t size): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_getxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_74generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":726 * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) * * async def fuse_getxattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_73fuse_getxattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_72fuse_getxattr_async, "fuse_getxattr_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_73fuse_getxattr_async = {"fuse_getxattr_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_73fuse_getxattr_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_72fuse_getxattr_async}; static PyObject *__pyx_pw_7pyfuse3_73fuse_getxattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_getxattr_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 726, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 726, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_getxattr_async", 1, 2, 2, 1); __PYX_ERR(1, 726, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_getxattr_async") < 0)) __PYX_ERR(1, 726, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_getxattr_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 726, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_getxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 726, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_72fuse_getxattr_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_72fuse_getxattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_getxattr_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 726, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_74generator24, __pyx_codeobj__27, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_getxattr_async, __pyx_n_s_fuse_getxattr_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 726, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_getxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_74generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_getxattr_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 726, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":732 * cdef char *cbuf * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * buf = await operations.getxattr(c.ino, name, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":733 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * buf = await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":734 * ctx = get_request_context(c.req) * try: * buf = await operations.getxattr(c.ino, name, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_getxattr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 734, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 734, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 734, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 734, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 734, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_buf = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":733 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * buf = await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":738 * ret = fuse_reply_err(c.req, e.errno) * else: * PyBytes_AsStringAndSize(buf, &cbuf, &len_s) # <<<<<<<<<<<<<< * len_ = len_s # guaranteed positive * */ /*else:*/ { __pyx_t_9 = PyBytes_AsStringAndSize(__pyx_cur_scope->__pyx_v_buf, (&__pyx_cur_scope->__pyx_v_cbuf), ((Py_ssize_t *)(&__pyx_cur_scope->__pyx_v_len_s))); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 738, __pyx_L6_except_error) /* "src/pyfuse3/handlers.pxi":739 * else: * PyBytes_AsStringAndSize(buf, &cbuf, &len_s) * len_ = len_s # guaranteed positive # <<<<<<<<<<<<<< * * if c.size == 0: */ __pyx_cur_scope->__pyx_v_len_ = ((size_t)__pyx_cur_scope->__pyx_v_len_s); /* "src/pyfuse3/handlers.pxi":741 * len_ = len_s # guaranteed positive * * if c.size == 0: # <<<<<<<<<<<<<< * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_c->size == 0); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":742 * * if c.size == 0: * ret = fuse_reply_xattr(c.req, len_) # <<<<<<<<<<<<<< * elif len_ <= c.size: * ret = fuse_reply_buf(c.req, cbuf, len_) */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_xattr(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_len_); /* "src/pyfuse3/handlers.pxi":741 * len_ = len_s # guaranteed positive * * if c.size == 0: # <<<<<<<<<<<<<< * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: */ goto __pyx_L11; } /* "src/pyfuse3/handlers.pxi":743 * if c.size == 0: * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, cbuf, len_) * else: */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_len_ <= __pyx_cur_scope->__pyx_v_c->size); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":744 * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: * ret = fuse_reply_buf(c.req, cbuf, len_) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, errno.ERANGE) */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_buf(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_cbuf, __pyx_cur_scope->__pyx_v_len_); /* "src/pyfuse3/handlers.pxi":743 * if c.size == 0: * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, cbuf, len_) * else: */ goto __pyx_L11; } /* "src/pyfuse3/handlers.pxi":746 * ret = fuse_reply_buf(c.req, cbuf, len_) * else: * ret = fuse_reply_err(c.req, errno.ERANGE) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, ERANGE); } __pyx_L11:; } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":735 * try: * buf = await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_getxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 735, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":736 * buf = await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * PyBytes_AsStringAndSize(buf, &cbuf, &len_s) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 736, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 736, __pyx_L17_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":735 * try: * buf = await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L18; } __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_9 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L18:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":733 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * buf = await operations.getxattr(c.ino, name, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":748 * ret = fuse_reply_err(c.req, errno.ERANGE) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_getxattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":749 * * if ret != 0: * log.error('fuse_getxattr(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_getxattr_fuse_reply__failed, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":748 * ret = fuse_reply_err(c.req, errno.ERANGE) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_getxattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":726 * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) * * async def fuse_getxattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_getxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":752 * * * cdef void fuse_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_listxattr(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, size_t __pyx_v_size) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_listxattr", 1); /* "src/pyfuse3/handlers.pxi":753 * * cdef void fuse_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":754 * cdef void fuse_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.size = size */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":755 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.size = size * save_retval(fuse_listxattr_async(c)) */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":756 * c.req = req * c.ino = ino * c.size = size # <<<<<<<<<<<<<< * save_retval(fuse_listxattr_async(c)) * */ __pyx_v_c->size = __pyx_v_size; /* "src/pyfuse3/handlers.pxi":757 * c.ino = ino * c.size = size * save_retval(fuse_listxattr_async(c)) # <<<<<<<<<<<<<< * * async def fuse_listxattr_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_listxattr_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":752 * * * cdef void fuse_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_listxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_77generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":759 * save_retval(fuse_listxattr_async(c)) * * async def fuse_listxattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_76fuse_listxattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_75fuse_listxattr_async, "fuse_listxattr_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_76fuse_listxattr_async = {"fuse_listxattr_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_76fuse_listxattr_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_75fuse_listxattr_async}; static PyObject *__pyx_pw_7pyfuse3_76fuse_listxattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_listxattr_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 759, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_listxattr_async") < 0)) __PYX_ERR(1, 759, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_listxattr_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 759, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_listxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 759, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_75fuse_listxattr_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_75fuse_listxattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_listxattr_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 759, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_77generator25, __pyx_codeobj__28, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_listxattr_async, __pyx_n_s_fuse_listxattr_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 759, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_listxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_77generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; char const *__pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_listxattr_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 759, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":766 * * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * res = await operations.listxattr(c.ino, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":767 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * res = await operations.listxattr(c.ino, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":768 * ctx = get_request_context(c.req) * try: * res = await operations.listxattr(c.ino, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_listxattr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 768, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 768, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 768, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 768, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 768, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_res = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":767 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * res = await operations.listxattr(c.ino, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":772 * ret = fuse_reply_err(c.req, e.errno) * else: * buf = b'\0'.join(res) + b'\0' # <<<<<<<<<<<<<< * * PyBytes_AsStringAndSize(buf, &cbuf, &len_s) */ /*else:*/ { __pyx_t_1 = __Pyx_PyBytes_Join(__pyx_kp_b__29, __pyx_cur_scope->__pyx_v_res); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 772, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_b__29); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 772, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_buf = __pyx_t_5; __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":774 * buf = b'\0'.join(res) + b'\0' * * PyBytes_AsStringAndSize(buf, &cbuf, &len_s) # <<<<<<<<<<<<<< * len_ = len_s # guaranteed positive * */ __pyx_t_9 = PyBytes_AsStringAndSize(__pyx_cur_scope->__pyx_v_buf, (&__pyx_cur_scope->__pyx_v_cbuf), ((Py_ssize_t *)(&__pyx_cur_scope->__pyx_v_len_s))); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 774, __pyx_L6_except_error) /* "src/pyfuse3/handlers.pxi":775 * * PyBytes_AsStringAndSize(buf, &cbuf, &len_s) * len_ = len_s # guaranteed positive # <<<<<<<<<<<<<< * * if len_ == 1: # No attributes */ __pyx_cur_scope->__pyx_v_len_ = ((size_t)__pyx_cur_scope->__pyx_v_len_s); /* "src/pyfuse3/handlers.pxi":777 * len_ = len_s # guaranteed positive * * if len_ == 1: # No attributes # <<<<<<<<<<<<<< * len_ = 0 * */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_len_ == 1); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":778 * * if len_ == 1: # No attributes * len_ = 0 # <<<<<<<<<<<<<< * * if c.size == 0: */ __pyx_cur_scope->__pyx_v_len_ = 0; /* "src/pyfuse3/handlers.pxi":777 * len_ = len_s # guaranteed positive * * if len_ == 1: # No attributes # <<<<<<<<<<<<<< * len_ = 0 * */ } /* "src/pyfuse3/handlers.pxi":780 * len_ = 0 * * if c.size == 0: # <<<<<<<<<<<<<< * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_c->size == 0); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":781 * * if c.size == 0: * ret = fuse_reply_xattr(c.req, len_) # <<<<<<<<<<<<<< * elif len_ <= c.size: * ret = fuse_reply_buf(c.req, cbuf, len_) */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_xattr(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_len_); /* "src/pyfuse3/handlers.pxi":780 * len_ = 0 * * if c.size == 0: # <<<<<<<<<<<<<< * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: */ goto __pyx_L12; } /* "src/pyfuse3/handlers.pxi":782 * if c.size == 0: * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, cbuf, len_) * else: */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_len_ <= __pyx_cur_scope->__pyx_v_c->size); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":783 * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: * ret = fuse_reply_buf(c.req, cbuf, len_) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, errno.ERANGE) */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_buf(__pyx_cur_scope->__pyx_v_c->req, __pyx_cur_scope->__pyx_v_cbuf, __pyx_cur_scope->__pyx_v_len_); /* "src/pyfuse3/handlers.pxi":782 * if c.size == 0: * ret = fuse_reply_xattr(c.req, len_) * elif len_ <= c.size: # <<<<<<<<<<<<<< * ret = fuse_reply_buf(c.req, cbuf, len_) * else: */ goto __pyx_L12; } /* "src/pyfuse3/handlers.pxi":785 * ret = fuse_reply_buf(c.req, cbuf, len_) * else: * ret = fuse_reply_err(c.req, errno.ERANGE) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, ERANGE); } __pyx_L12:; } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":769 * try: * res = await operations.listxattr(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_listxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(1, 769, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_e = __pyx_t_1; /*try:*/ { /* "src/pyfuse3/handlers.pxi":770 * res = await operations.listxattr(c.ino, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * buf = b'\0'.join(res) + b'\0' */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 770, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 770, __pyx_L18_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":769 * try: * res = await operations.listxattr(c.ino, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L19; } __pyx_L18_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_9 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); } __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; goto __pyx_L6_except_error; } __pyx_L19:; } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":767 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * res = await operations.listxattr(c.ino, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":787 * ret = fuse_reply_err(c.req, errno.ERANGE) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_listxattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_10 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_10) { /* "src/pyfuse3/handlers.pxi":788 * * if ret != 0: * log.error('fuse_listxattr(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_listxattr_fuse_reply__faile, __pyx_t_1}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":787 * ret = fuse_reply_err(c.req, errno.ERANGE) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_listxattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":759 * save_retval(fuse_listxattr_async(c)) * * async def fuse_listxattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_listxattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":791 * * * cdef void fuse_removexattr (fuse_req_t req, fuse_ino_t ino, const_char *name): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_removexattr(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, const char *__pyx_v_name) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_removexattr", 1); /* "src/pyfuse3/handlers.pxi":792 * * cdef void fuse_removexattr (fuse_req_t req, fuse_ino_t ino, const_char *name): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":793 * cdef void fuse_removexattr (fuse_req_t req, fuse_ino_t ino, const_char *name): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":794 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":795 * c.req = req * c.ino = ino * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_removexattr_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_removexattr_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":791 * * * cdef void fuse_removexattr (fuse_req_t req, fuse_ino_t ino, const_char *name): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_removexattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_80generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":797 * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) * * async def fuse_removexattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_79fuse_removexattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_78fuse_removexattr_async, "fuse_removexattr_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_79fuse_removexattr_async = {"fuse_removexattr_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_79fuse_removexattr_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_78fuse_removexattr_async}; static PyObject *__pyx_pw_7pyfuse3_79fuse_removexattr_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_removexattr_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 797, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 797, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_removexattr_async", 1, 2, 2, 1); __PYX_ERR(1, 797, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_removexattr_async") < 0)) __PYX_ERR(1, 797, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_removexattr_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 797, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_removexattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 797, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_78fuse_removexattr_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_78fuse_removexattr_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_removexattr_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 797, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_80generator26, __pyx_codeobj__30, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_removexattr_async, __pyx_n_s_fuse_removexattr_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 797, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_removexattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_80generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; char const *__pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_removexattr_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 797, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":800 * cdef int ret * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * await operations.removexattr(c.ino, name, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":801 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.removexattr(c.ino, name, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":802 * ctx = get_request_context(c.req) * try: * await operations.removexattr(c.ino, name, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_removexattr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 802, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 802, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 802, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 802, __pyx_L4_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(1, 802, __pyx_L4_error) } } /* "src/pyfuse3/handlers.pxi":801 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.removexattr(c.ino, name, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":806 * ret = fuse_reply_err(c.req, e.errno) * else: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else:*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/handlers.pxi":803 * try: * await operations.removexattr(c.ino, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.fuse_removexattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(1, 803, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":804 * await operations.removexattr(c.ino, name, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, 0) */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 804, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 804, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_9); } /* "src/pyfuse3/handlers.pxi":803 * try: * await operations.removexattr(c.ino, name, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":801 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * await operations.removexattr(c.ino, name, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":808 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_removexattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_18 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_18) { /* "src/pyfuse3/handlers.pxi":809 * * if ret != 0: * log.error('fuse_removexattr(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_removexattr_fuse_reply__fai, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/handlers.pxi":808 * ret = fuse_reply_err(c.req, 0) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_removexattr(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":797 * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) * * async def fuse_removexattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("fuse_removexattr_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":812 * * * cdef void fuse_access (fuse_req_t req, fuse_ino_t ino, int mask): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ static void __pyx_f_7pyfuse3_fuse_access(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_ino, int __pyx_v_mask) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_access", 1); /* "src/pyfuse3/handlers.pxi":813 * * cdef void fuse_access (fuse_req_t req, fuse_ino_t ino, int mask): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.ino = ino */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":814 * cdef void fuse_access (fuse_req_t req, fuse_ino_t ino, int mask): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.ino = ino * c.flags = mask */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":815 * cdef _Container c = _Container() * c.req = req * c.ino = ino # <<<<<<<<<<<<<< * c.flags = mask * save_retval(fuse_access_async(c)) */ __pyx_v_c->ino = __pyx_v_ino; /* "src/pyfuse3/handlers.pxi":816 * c.req = req * c.ino = ino * c.flags = mask # <<<<<<<<<<<<<< * save_retval(fuse_access_async(c)) * */ __pyx_v_c->flags = __pyx_v_mask; /* "src/pyfuse3/handlers.pxi":817 * c.ino = ino * c.flags = mask * save_retval(fuse_access_async(c)) # <<<<<<<<<<<<<< * * async def fuse_access_async (_Container c): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_access_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_c)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 817, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":812 * * * cdef void fuse_access (fuse_req_t req, fuse_ino_t ino, int mask): # <<<<<<<<<<<<<< * cdef _Container c = _Container() * c.req = req */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.fuse_access", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_83generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":819 * save_retval(fuse_access_async(c)) * * async def fuse_access_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef int mask = c.flags */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_82fuse_access_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_81fuse_access_async, "fuse_access_async(_Container c)"); static PyMethodDef __pyx_mdef_7pyfuse3_82fuse_access_async = {"fuse_access_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_82fuse_access_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_81fuse_access_async}; static PyObject *__pyx_pw_7pyfuse3_82fuse_access_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_access_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 819, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_access_async") < 0)) __PYX_ERR(1, 819, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_access_async", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 819, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_access_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 819, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_81fuse_access_async(__pyx_self, __pyx_v_c); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_81fuse_access_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_access_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_27_fuse_access_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 819, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_83generator27, __pyx_codeobj__31, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_access_async, __pyx_n_s_fuse_access_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 819, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_access_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_83generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; unsigned int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; char const *__pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_access_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 819, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":821 * async def fuse_access_async (_Container c): * cdef int ret * cdef int mask = c.flags # <<<<<<<<<<<<<< * * ctx = get_request_context(c.req) */ __pyx_t_1 = __pyx_cur_scope->__pyx_v_c->flags; __pyx_cur_scope->__pyx_v_mask = __pyx_t_1; /* "src/pyfuse3/handlers.pxi":823 * cdef int mask = c.flags * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * allowed = await operations.access(c.ino, mask, ctx) */ __pyx_t_2 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 823, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":824 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * allowed = await operations.access(c.ino, mask, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { /* "src/pyfuse3/handlers.pxi":825 * ctx = get_request_context(c.req) * try: * allowed = await operations.access(c.ino, mask, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_access); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 825, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->ino); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 825, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_mask); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 825, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_9, __pyx_t_7, __pyx_t_8, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 3+__pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 825, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_0 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_3 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 825, __pyx_L4_error) __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2); } else { __pyx_t_2 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(1, 825, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_allowed = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":824 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * allowed = await operations.access(c.ino, mask, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":829 * ret = fuse_reply_err(c.req, e.errno) * else: * if allowed: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, 0) * else: */ /*else:*/ { __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_allowed); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(1, 829, __pyx_L6_except_error) if (__pyx_t_11) { /* "src/pyfuse3/handlers.pxi":830 * else: * if allowed: * ret = fuse_reply_err(c.req, 0) # <<<<<<<<<<<<<< * else: * ret = fuse_reply_err(c.req, EACCES) */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, 0); /* "src/pyfuse3/handlers.pxi":829 * ret = fuse_reply_err(c.req, e.errno) * else: * if allowed: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, 0) * else: */ goto __pyx_L11; } /* "src/pyfuse3/handlers.pxi":832 * ret = fuse_reply_err(c.req, 0) * else: * ret = fuse_reply_err(c.req, EACCES) # <<<<<<<<<<<<<< * * if ret != 0: */ /*else*/ { __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, EACCES); } __pyx_L11:; } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":826 * try: * allowed = await operations.access(c.ino, mask, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_1 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_1) { __Pyx_AddTraceback("pyfuse3.fuse_access_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(1, 826, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_v_e = __pyx_t_6; /*try:*/ { /* "src/pyfuse3/handlers.pxi":827 * allowed = await operations.access(c.ino, mask, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * if allowed: */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 827, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 827, __pyx_L17_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_1); } /* "src/pyfuse3/handlers.pxi":826 * try: * allowed = await operations.access(c.ino, mask, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L18; } __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_1 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L6_except_error; } __pyx_L18:; } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":824 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * allowed = await operations.access(c.ino, mask, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":834 * ret = fuse_reply_err(c.req, EACCES) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_access(): fuse_reply_* failed with %s', strerror(-ret)) * */ __pyx_t_11 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_11) { /* "src/pyfuse3/handlers.pxi":835 * * if ret != 0: * log.error('fuse_access(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_log); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_access_fuse_reply__failed_w, __pyx_t_6}; __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":834 * ret = fuse_reply_err(c.req, EACCES) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_access(): fuse_reply_* failed with %s', strerror(-ret)) * */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":819 * save_retval(fuse_access_async(c)) * * async def fuse_access_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef int mask = c.flags */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("fuse_access_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/handlers.pxi":839 * * * cdef void fuse_create (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * mode_t mode, fuse_file_info *fi): * cdef _Container c = _Container() */ static void __pyx_f_7pyfuse3_fuse_create(fuse_req_t __pyx_v_req, fuse_ino_t __pyx_v_parent, const char *__pyx_v_name, mode_t __pyx_v_mode, struct fuse_file_info *__pyx_v_fi) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_create", 1); /* "src/pyfuse3/handlers.pxi":841 * cdef void fuse_create (fuse_req_t req, fuse_ino_t parent, const_char *name, * mode_t mode, fuse_file_info *fi): * cdef _Container c = _Container() # <<<<<<<<<<<<<< * c.req = req * c.parent = parent */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__Container)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":842 * mode_t mode, fuse_file_info *fi): * cdef _Container c = _Container() * c.req = req # <<<<<<<<<<<<<< * c.parent = parent * c.mode = mode */ __pyx_v_c->req = __pyx_v_req; /* "src/pyfuse3/handlers.pxi":843 * cdef _Container c = _Container() * c.req = req * c.parent = parent # <<<<<<<<<<<<<< * c.mode = mode * c.fi = fi[0] */ __pyx_v_c->parent = __pyx_v_parent; /* "src/pyfuse3/handlers.pxi":844 * c.req = req * c.parent = parent * c.mode = mode # <<<<<<<<<<<<<< * c.fi = fi[0] * save_retval(fuse_create_async(c, PyBytes_FromString(name))) */ __pyx_v_c->mode = __pyx_v_mode; /* "src/pyfuse3/handlers.pxi":845 * c.parent = parent * c.mode = mode * c.fi = fi[0] # <<<<<<<<<<<<<< * save_retval(fuse_create_async(c, PyBytes_FromString(name))) * */ __pyx_v_c->fi = (__pyx_v_fi[0]); /* "src/pyfuse3/handlers.pxi":846 * c.mode = mode * c.fi = fi[0] * save_retval(fuse_create_async(c, PyBytes_FromString(name))) # <<<<<<<<<<<<<< * * async def fuse_create_async (_Container c, name): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fuse_create_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_c), __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_f_7pyfuse3_save_retval(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 846, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":839 * * * cdef void fuse_create (fuse_req_t req, fuse_ino_t parent, const_char *name, # <<<<<<<<<<<<<< * mode_t mode, fuse_file_info *fi): * cdef _Container c = _Container() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.fuse_create", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_RefNannyFinishContext(); } static PyObject *__pyx_gb_7pyfuse3_86generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/handlers.pxi":848 * save_retval(fuse_create_async(c, PyBytes_FromString(name))) * * async def fuse_create_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_85fuse_create_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_84fuse_create_async, "fuse_create_async(_Container c, name)"); static PyMethodDef __pyx_mdef_7pyfuse3_85fuse_create_async = {"fuse_create_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_85fuse_create_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_84fuse_create_async}; static PyObject *__pyx_pw_7pyfuse3_85fuse_create_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3__Container *__pyx_v_c = 0; PyObject *__pyx_v_name = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_create_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_c,&__pyx_n_s_name,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 848, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 848, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("fuse_create_async", 1, 2, 2, 1); __PYX_ERR(1, 848, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fuse_create_async") < 0)) __PYX_ERR(1, 848, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_c = ((struct __pyx_obj_7pyfuse3__Container *)values[0]); __pyx_v_name = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fuse_create_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 848, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.fuse_create_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_7pyfuse3__Container, 1, "c", 0))) __PYX_ERR(1, 848, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_84fuse_create_async(__pyx_self, __pyx_v_c, __pyx_v_name); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_84fuse_create_async(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3__Container *__pyx_v_c, PyObject *__pyx_v_name) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("fuse_create_async", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_28_fuse_create_async(__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 848, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_c = __pyx_v_c; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_c); __pyx_cur_scope->__pyx_v_name = __pyx_v_name; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name); { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_86generator28, __pyx_codeobj__32, (PyObject *) __pyx_cur_scope, __pyx_n_s_fuse_create_async, __pyx_n_s_fuse_create_async, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(1, 848, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.fuse_create_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_86generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; unsigned int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; char const *__pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fuse_create_async", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L10_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 848, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":853 * cdef FileInfo fi * * ctx = get_request_context(c.req) # <<<<<<<<<<<<<< * try: * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) */ __pyx_t_1 = __pyx_f_7pyfuse3_get_request_context(__pyx_cur_scope->__pyx_v_c->req); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":854 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) * except FUSEError as e: */ { __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "src/pyfuse3/handlers.pxi":855 * ctx = get_request_context(c.req) * try: * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) # <<<<<<<<<<<<<< * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3_operations, __pyx_n_s_create); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 855, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(__pyx_cur_scope->__pyx_v_c->parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 855, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_mode_t(__pyx_cur_scope->__pyx_v_c->mode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 855, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_c->fi.flags); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 855, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_9, __pyx_t_6, __pyx_cur_scope->__pyx_v_name, __pyx_t_7, __pyx_t_8, __pyx_cur_scope->__pyx_v_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 5+__pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 855, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_1 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_2 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 855, __pyx_L4_error) __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_1 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(1, 855, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_tmp = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":854 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) * except FUSEError as e: */ } /* "src/pyfuse3/handlers.pxi":859 * ret = fuse_reply_err(c.req, e.errno) * else: * fi = tmp[0] # <<<<<<<<<<<<<< * entry = tmp[1] * fi._copy_to_fuse(&c.fi) */ /*else:*/ { __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_tmp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 859, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyfuse3_FileInfo)))) __PYX_ERR(1, 859, __pyx_L6_except_error) __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_fi = ((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/handlers.pxi":860 * else: * fi = tmp[0] * entry = tmp[1] # <<<<<<<<<<<<<< * fi._copy_to_fuse(&c.fi) * ret = fuse_reply_create(c.req, &entry.fuse_param, &c.fi) */ __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_tmp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 860, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_5); if (!(likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7pyfuse3_EntryAttributes)))) __PYX_ERR(1, 860, __pyx_L6_except_error) __pyx_t_1 = __pyx_t_5; __Pyx_INCREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_entry = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":861 * fi = tmp[0] * entry = tmp[1] * fi._copy_to_fuse(&c.fi) # <<<<<<<<<<<<<< * ret = fuse_reply_create(c.req, &entry.fuse_param, &c.fi) * */ __pyx_t_1 = ((struct __pyx_vtabstruct_7pyfuse3_FileInfo *)__pyx_cur_scope->__pyx_v_fi->__pyx_vtab)->_copy_to_fuse(__pyx_cur_scope->__pyx_v_fi, (&__pyx_cur_scope->__pyx_v_c->fi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 861, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/handlers.pxi":862 * entry = tmp[1] * fi._copy_to_fuse(&c.fi) * ret = fuse_reply_create(c.req, &entry.fuse_param, &c.fi) # <<<<<<<<<<<<<< * * if ret != 0: */ __pyx_cur_scope->__pyx_v_ret = fuse_reply_create(__pyx_cur_scope->__pyx_v_c->req, (&__pyx_cur_scope->__pyx_v_entry->fuse_param), (&__pyx_cur_scope->__pyx_v_c->fi)); } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "src/pyfuse3/handlers.pxi":856 * try: * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)); if (__pyx_t_11) { __Pyx_AddTraceback("pyfuse3.fuse_create_async", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(1, 856, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_e = __pyx_t_5; /*try:*/ { /* "src/pyfuse3/handlers.pxi":857 * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) * except FUSEError as e: * ret = fuse_reply_err(c.req, e.errno) # <<<<<<<<<<<<<< * else: * fi = tmp[0] */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 857, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 857, __pyx_L16_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_cur_scope->__pyx_v_ret = fuse_reply_err(__pyx_cur_scope->__pyx_v_c->req, __pyx_t_11); } /* "src/pyfuse3/handlers.pxi":856 * try: * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) * except FUSEError as e: # <<<<<<<<<<<<<< * ret = fuse_reply_err(c.req, e.errno) * else: */ /*finally:*/ { /*normal exit:*/{ __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e); __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L6_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; /* "src/pyfuse3/handlers.pxi":854 * * ctx = get_request_context(c.req) * try: # <<<<<<<<<<<<<< * tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) * except FUSEError as e: */ __pyx_L6_except_error:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); __pyx_L9_try_end:; } /* "src/pyfuse3/handlers.pxi":864 * ret = fuse_reply_create(c.req, &entry.fuse_param, &c.fi) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_create(): fuse_reply_* failed with %s', strerror(-ret)) */ __pyx_t_20 = (__pyx_cur_scope->__pyx_v_ret != 0); if (__pyx_t_20) { /* "src/pyfuse3/handlers.pxi":865 * * if ret != 0: * log.error('fuse_create(): fuse_reply_* failed with %s', strerror(-ret)) # <<<<<<<<<<<<<< */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_10 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_10 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_fuse_create_fuse_reply__failed_w, __pyx_t_5}; __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "src/pyfuse3/handlers.pxi":864 * ret = fuse_reply_create(c.req, &entry.fuse_param, &c.fi) * * if ret != 0: # <<<<<<<<<<<<<< * log.error('fuse_create(): fuse_reply_* failed with %s', strerror(-ret)) */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/handlers.pxi":848 * save_retval(fuse_create_async(c, PyBytes_FromString(name))) * * async def fuse_create_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("fuse_create_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":13 * ''' * * cdef void save_retval(object val): # <<<<<<<<<<<<<< * global py_retval * if py_retval is not None and val is not None: */ static void __pyx_f_7pyfuse3_save_retval(PyObject *__pyx_v_val) { __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("save_retval", 1); /* "src/pyfuse3/internal.pxi":15 * cdef void save_retval(object val): * global py_retval * if py_retval is not None and val is not None: # <<<<<<<<<<<<<< * log.error('py_retval was not awaited - please report a bug at ' * 'https://github.com/libfuse/pyfuse3/issues!') */ __pyx_t_2 = (__pyx_v_7pyfuse3_py_retval != Py_None); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } __pyx_t_2 = (__pyx_v_val != Py_None); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* "src/pyfuse3/internal.pxi":16 * global py_retval * if py_retval is not None and val is not None: * log.error('py_retval was not awaited - please report a bug at ' # <<<<<<<<<<<<<< * 'https://github.com/libfuse/pyfuse3/issues!') * py_retval = val */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_log); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_py_retval_was_not_awaited_please}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "src/pyfuse3/internal.pxi":15 * cdef void save_retval(object val): * global py_retval * if py_retval is not None and val is not None: # <<<<<<<<<<<<<< * log.error('py_retval was not awaited - please report a bug at ' * 'https://github.com/libfuse/pyfuse3/issues!') */ } /* "src/pyfuse3/internal.pxi":18 * log.error('py_retval was not awaited - please report a bug at ' * 'https://github.com/libfuse/pyfuse3/issues!') * py_retval = val # <<<<<<<<<<<<<< * * cdef object get_request_context(fuse_req_t req): */ __Pyx_INCREF(__pyx_v_val); __Pyx_XGOTREF(__pyx_v_7pyfuse3_py_retval); __Pyx_DECREF_SET(__pyx_v_7pyfuse3_py_retval, __pyx_v_val); __Pyx_GIVEREF(__pyx_v_val); /* "src/pyfuse3/internal.pxi":13 * ''' * * cdef void save_retval(object val): # <<<<<<<<<<<<<< * global py_retval * if py_retval is not None and val is not None: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.save_retval", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "src/pyfuse3/internal.pxi":20 * py_retval = val * * cdef object get_request_context(fuse_req_t req): # <<<<<<<<<<<<<< * '''Get RequestContext() object''' * */ static PyObject *__pyx_f_7pyfuse3_get_request_context(fuse_req_t __pyx_v_req) { const struct fuse_ctx *__pyx_v_context; struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_ctx = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; pid_t __pyx_t_2; uid_t __pyx_t_3; gid_t __pyx_t_4; mode_t __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_request_context", 1); /* "src/pyfuse3/internal.pxi":26 * cdef RequestContext ctx * * context = fuse_req_ctx(req) # <<<<<<<<<<<<<< * ctx = RequestContext.__new__(RequestContext) * ctx.pid = context.pid */ __pyx_v_context = fuse_req_ctx(__pyx_v_req); /* "src/pyfuse3/internal.pxi":27 * * context = fuse_req_ctx(req) * ctx = RequestContext.__new__(RequestContext) # <<<<<<<<<<<<<< * ctx.pid = context.pid * ctx.uid = context.uid */ __pyx_t_1 = ((PyObject *)__pyx_tp_new_7pyfuse3_RequestContext(((PyTypeObject *)__pyx_ptype_7pyfuse3_RequestContext), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 27, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_ctx = ((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":28 * context = fuse_req_ctx(req) * ctx = RequestContext.__new__(RequestContext) * ctx.pid = context.pid # <<<<<<<<<<<<<< * ctx.uid = context.uid * ctx.gid = context.gid */ __pyx_t_2 = __pyx_v_context->pid; __pyx_v_ctx->pid = __pyx_t_2; /* "src/pyfuse3/internal.pxi":29 * ctx = RequestContext.__new__(RequestContext) * ctx.pid = context.pid * ctx.uid = context.uid # <<<<<<<<<<<<<< * ctx.gid = context.gid * ctx.umask = context.umask */ __pyx_t_3 = __pyx_v_context->uid; __pyx_v_ctx->uid = __pyx_t_3; /* "src/pyfuse3/internal.pxi":30 * ctx.pid = context.pid * ctx.uid = context.uid * ctx.gid = context.gid # <<<<<<<<<<<<<< * ctx.umask = context.umask * */ __pyx_t_4 = __pyx_v_context->gid; __pyx_v_ctx->gid = __pyx_t_4; /* "src/pyfuse3/internal.pxi":31 * ctx.uid = context.uid * ctx.gid = context.gid * ctx.umask = context.umask # <<<<<<<<<<<<<< * * return ctx */ __pyx_t_5 = __pyx_v_context->umask; __pyx_v_ctx->umask = __pyx_t_5; /* "src/pyfuse3/internal.pxi":33 * ctx.umask = context.umask * * return ctx # <<<<<<<<<<<<<< * * cdef void init_fuse_ops(): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_ctx); __pyx_r = ((PyObject *)__pyx_v_ctx); goto __pyx_L0; /* "src/pyfuse3/internal.pxi":20 * py_retval = val * * cdef object get_request_context(fuse_req_t req): # <<<<<<<<<<<<<< * '''Get RequestContext() object''' * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.get_request_context", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_ctx); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":35 * return ctx * * cdef void init_fuse_ops(): # <<<<<<<<<<<<<< * '''Initialize fuse_lowlevel_ops structure''' * */ static void __pyx_f_7pyfuse3_init_fuse_ops(void) { /* "src/pyfuse3/internal.pxi":38 * '''Initialize fuse_lowlevel_ops structure''' * * string.memset(&fuse_ops, 0, sizeof(fuse_lowlevel_ops)) # <<<<<<<<<<<<<< * * fuse_ops.init = fuse_init */ (void)(memset((&__pyx_v_7pyfuse3_fuse_ops), 0, (sizeof(struct fuse_lowlevel_ops)))); /* "src/pyfuse3/internal.pxi":40 * string.memset(&fuse_ops, 0, sizeof(fuse_lowlevel_ops)) * * fuse_ops.init = fuse_init # <<<<<<<<<<<<<< * fuse_ops.lookup = fuse_lookup * fuse_ops.forget = fuse_forget */ __pyx_v_7pyfuse3_fuse_ops.init = __pyx_f_7pyfuse3_fuse_init; /* "src/pyfuse3/internal.pxi":41 * * fuse_ops.init = fuse_init * fuse_ops.lookup = fuse_lookup # <<<<<<<<<<<<<< * fuse_ops.forget = fuse_forget * fuse_ops.getattr = fuse_getattr */ __pyx_v_7pyfuse3_fuse_ops.lookup = __pyx_f_7pyfuse3_fuse_lookup; /* "src/pyfuse3/internal.pxi":42 * fuse_ops.init = fuse_init * fuse_ops.lookup = fuse_lookup * fuse_ops.forget = fuse_forget # <<<<<<<<<<<<<< * fuse_ops.getattr = fuse_getattr * fuse_ops.setattr = fuse_setattr */ __pyx_v_7pyfuse3_fuse_ops.forget = __pyx_f_7pyfuse3_fuse_forget; /* "src/pyfuse3/internal.pxi":43 * fuse_ops.lookup = fuse_lookup * fuse_ops.forget = fuse_forget * fuse_ops.getattr = fuse_getattr # <<<<<<<<<<<<<< * fuse_ops.setattr = fuse_setattr * fuse_ops.readlink = fuse_readlink */ __pyx_v_7pyfuse3_fuse_ops.getattr = __pyx_f_7pyfuse3_fuse_getattr; /* "src/pyfuse3/internal.pxi":44 * fuse_ops.forget = fuse_forget * fuse_ops.getattr = fuse_getattr * fuse_ops.setattr = fuse_setattr # <<<<<<<<<<<<<< * fuse_ops.readlink = fuse_readlink * fuse_ops.mknod = fuse_mknod */ __pyx_v_7pyfuse3_fuse_ops.setattr = __pyx_f_7pyfuse3_fuse_setattr; /* "src/pyfuse3/internal.pxi":45 * fuse_ops.getattr = fuse_getattr * fuse_ops.setattr = fuse_setattr * fuse_ops.readlink = fuse_readlink # <<<<<<<<<<<<<< * fuse_ops.mknod = fuse_mknod * fuse_ops.mkdir = fuse_mkdir */ __pyx_v_7pyfuse3_fuse_ops.readlink = __pyx_f_7pyfuse3_fuse_readlink; /* "src/pyfuse3/internal.pxi":46 * fuse_ops.setattr = fuse_setattr * fuse_ops.readlink = fuse_readlink * fuse_ops.mknod = fuse_mknod # <<<<<<<<<<<<<< * fuse_ops.mkdir = fuse_mkdir * fuse_ops.unlink = fuse_unlink */ __pyx_v_7pyfuse3_fuse_ops.mknod = __pyx_f_7pyfuse3_fuse_mknod; /* "src/pyfuse3/internal.pxi":47 * fuse_ops.readlink = fuse_readlink * fuse_ops.mknod = fuse_mknod * fuse_ops.mkdir = fuse_mkdir # <<<<<<<<<<<<<< * fuse_ops.unlink = fuse_unlink * fuse_ops.rmdir = fuse_rmdir */ __pyx_v_7pyfuse3_fuse_ops.mkdir = __pyx_f_7pyfuse3_fuse_mkdir; /* "src/pyfuse3/internal.pxi":48 * fuse_ops.mknod = fuse_mknod * fuse_ops.mkdir = fuse_mkdir * fuse_ops.unlink = fuse_unlink # <<<<<<<<<<<<<< * fuse_ops.rmdir = fuse_rmdir * fuse_ops.symlink = fuse_symlink */ __pyx_v_7pyfuse3_fuse_ops.unlink = __pyx_f_7pyfuse3_fuse_unlink; /* "src/pyfuse3/internal.pxi":49 * fuse_ops.mkdir = fuse_mkdir * fuse_ops.unlink = fuse_unlink * fuse_ops.rmdir = fuse_rmdir # <<<<<<<<<<<<<< * fuse_ops.symlink = fuse_symlink * fuse_ops.rename = fuse_rename */ __pyx_v_7pyfuse3_fuse_ops.rmdir = __pyx_f_7pyfuse3_fuse_rmdir; /* "src/pyfuse3/internal.pxi":50 * fuse_ops.unlink = fuse_unlink * fuse_ops.rmdir = fuse_rmdir * fuse_ops.symlink = fuse_symlink # <<<<<<<<<<<<<< * fuse_ops.rename = fuse_rename * fuse_ops.link = fuse_link */ __pyx_v_7pyfuse3_fuse_ops.symlink = __pyx_f_7pyfuse3_fuse_symlink; /* "src/pyfuse3/internal.pxi":51 * fuse_ops.rmdir = fuse_rmdir * fuse_ops.symlink = fuse_symlink * fuse_ops.rename = fuse_rename # <<<<<<<<<<<<<< * fuse_ops.link = fuse_link * fuse_ops.open = fuse_open */ __pyx_v_7pyfuse3_fuse_ops.rename = __pyx_f_7pyfuse3_fuse_rename; /* "src/pyfuse3/internal.pxi":52 * fuse_ops.symlink = fuse_symlink * fuse_ops.rename = fuse_rename * fuse_ops.link = fuse_link # <<<<<<<<<<<<<< * fuse_ops.open = fuse_open * fuse_ops.read = fuse_read */ __pyx_v_7pyfuse3_fuse_ops.link = __pyx_f_7pyfuse3_fuse_link; /* "src/pyfuse3/internal.pxi":53 * fuse_ops.rename = fuse_rename * fuse_ops.link = fuse_link * fuse_ops.open = fuse_open # <<<<<<<<<<<<<< * fuse_ops.read = fuse_read * fuse_ops.write = fuse_write */ __pyx_v_7pyfuse3_fuse_ops.open = __pyx_f_7pyfuse3_fuse_open; /* "src/pyfuse3/internal.pxi":54 * fuse_ops.link = fuse_link * fuse_ops.open = fuse_open * fuse_ops.read = fuse_read # <<<<<<<<<<<<<< * fuse_ops.write = fuse_write * fuse_ops.flush = fuse_flush */ __pyx_v_7pyfuse3_fuse_ops.read = __pyx_f_7pyfuse3_fuse_read; /* "src/pyfuse3/internal.pxi":55 * fuse_ops.open = fuse_open * fuse_ops.read = fuse_read * fuse_ops.write = fuse_write # <<<<<<<<<<<<<< * fuse_ops.flush = fuse_flush * fuse_ops.release = fuse_release */ __pyx_v_7pyfuse3_fuse_ops.write = __pyx_f_7pyfuse3_fuse_write; /* "src/pyfuse3/internal.pxi":56 * fuse_ops.read = fuse_read * fuse_ops.write = fuse_write * fuse_ops.flush = fuse_flush # <<<<<<<<<<<<<< * fuse_ops.release = fuse_release * fuse_ops.fsync = fuse_fsync */ __pyx_v_7pyfuse3_fuse_ops.flush = __pyx_f_7pyfuse3_fuse_flush; /* "src/pyfuse3/internal.pxi":57 * fuse_ops.write = fuse_write * fuse_ops.flush = fuse_flush * fuse_ops.release = fuse_release # <<<<<<<<<<<<<< * fuse_ops.fsync = fuse_fsync * fuse_ops.opendir = fuse_opendir */ __pyx_v_7pyfuse3_fuse_ops.release = __pyx_f_7pyfuse3_fuse_release; /* "src/pyfuse3/internal.pxi":58 * fuse_ops.flush = fuse_flush * fuse_ops.release = fuse_release * fuse_ops.fsync = fuse_fsync # <<<<<<<<<<<<<< * fuse_ops.opendir = fuse_opendir * fuse_ops.readdirplus = fuse_readdirplus */ __pyx_v_7pyfuse3_fuse_ops.fsync = __pyx_f_7pyfuse3_fuse_fsync; /* "src/pyfuse3/internal.pxi":59 * fuse_ops.release = fuse_release * fuse_ops.fsync = fuse_fsync * fuse_ops.opendir = fuse_opendir # <<<<<<<<<<<<<< * fuse_ops.readdirplus = fuse_readdirplus * fuse_ops.releasedir = fuse_releasedir */ __pyx_v_7pyfuse3_fuse_ops.opendir = __pyx_f_7pyfuse3_fuse_opendir; /* "src/pyfuse3/internal.pxi":60 * fuse_ops.fsync = fuse_fsync * fuse_ops.opendir = fuse_opendir * fuse_ops.readdirplus = fuse_readdirplus # <<<<<<<<<<<<<< * fuse_ops.releasedir = fuse_releasedir * fuse_ops.fsyncdir = fuse_fsyncdir */ __pyx_v_7pyfuse3_fuse_ops.readdirplus = __pyx_f_7pyfuse3_fuse_readdirplus; /* "src/pyfuse3/internal.pxi":61 * fuse_ops.opendir = fuse_opendir * fuse_ops.readdirplus = fuse_readdirplus * fuse_ops.releasedir = fuse_releasedir # <<<<<<<<<<<<<< * fuse_ops.fsyncdir = fuse_fsyncdir * fuse_ops.statfs = fuse_statfs */ __pyx_v_7pyfuse3_fuse_ops.releasedir = __pyx_f_7pyfuse3_fuse_releasedir; /* "src/pyfuse3/internal.pxi":62 * fuse_ops.readdirplus = fuse_readdirplus * fuse_ops.releasedir = fuse_releasedir * fuse_ops.fsyncdir = fuse_fsyncdir # <<<<<<<<<<<<<< * fuse_ops.statfs = fuse_statfs * ASSIGN_NOT_DARWIN(fuse_ops.setxattr, &fuse_setxattr) */ __pyx_v_7pyfuse3_fuse_ops.fsyncdir = __pyx_f_7pyfuse3_fuse_fsyncdir; /* "src/pyfuse3/internal.pxi":63 * fuse_ops.releasedir = fuse_releasedir * fuse_ops.fsyncdir = fuse_fsyncdir * fuse_ops.statfs = fuse_statfs # <<<<<<<<<<<<<< * ASSIGN_NOT_DARWIN(fuse_ops.setxattr, &fuse_setxattr) * ASSIGN_NOT_DARWIN(fuse_ops.getxattr, &fuse_getxattr) */ __pyx_v_7pyfuse3_fuse_ops.statfs = __pyx_f_7pyfuse3_fuse_statfs; /* "src/pyfuse3/internal.pxi":64 * fuse_ops.fsyncdir = fuse_fsyncdir * fuse_ops.statfs = fuse_statfs * ASSIGN_NOT_DARWIN(fuse_ops.setxattr, &fuse_setxattr) # <<<<<<<<<<<<<< * ASSIGN_NOT_DARWIN(fuse_ops.getxattr, &fuse_getxattr) * fuse_ops.listxattr = fuse_listxattr */ ASSIGN_NOT_DARWIN(__pyx_v_7pyfuse3_fuse_ops.setxattr, (&__pyx_f_7pyfuse3_fuse_setxattr)); /* "src/pyfuse3/internal.pxi":65 * fuse_ops.statfs = fuse_statfs * ASSIGN_NOT_DARWIN(fuse_ops.setxattr, &fuse_setxattr) * ASSIGN_NOT_DARWIN(fuse_ops.getxattr, &fuse_getxattr) # <<<<<<<<<<<<<< * fuse_ops.listxattr = fuse_listxattr * fuse_ops.removexattr = fuse_removexattr */ ASSIGN_NOT_DARWIN(__pyx_v_7pyfuse3_fuse_ops.getxattr, (&__pyx_f_7pyfuse3_fuse_getxattr)); /* "src/pyfuse3/internal.pxi":66 * ASSIGN_NOT_DARWIN(fuse_ops.setxattr, &fuse_setxattr) * ASSIGN_NOT_DARWIN(fuse_ops.getxattr, &fuse_getxattr) * fuse_ops.listxattr = fuse_listxattr # <<<<<<<<<<<<<< * fuse_ops.removexattr = fuse_removexattr * fuse_ops.access = fuse_access */ __pyx_v_7pyfuse3_fuse_ops.listxattr = __pyx_f_7pyfuse3_fuse_listxattr; /* "src/pyfuse3/internal.pxi":67 * ASSIGN_NOT_DARWIN(fuse_ops.getxattr, &fuse_getxattr) * fuse_ops.listxattr = fuse_listxattr * fuse_ops.removexattr = fuse_removexattr # <<<<<<<<<<<<<< * fuse_ops.access = fuse_access * fuse_ops.create = fuse_create */ __pyx_v_7pyfuse3_fuse_ops.removexattr = __pyx_f_7pyfuse3_fuse_removexattr; /* "src/pyfuse3/internal.pxi":68 * fuse_ops.listxattr = fuse_listxattr * fuse_ops.removexattr = fuse_removexattr * fuse_ops.access = fuse_access # <<<<<<<<<<<<<< * fuse_ops.create = fuse_create * fuse_ops.forget_multi = fuse_forget_multi */ __pyx_v_7pyfuse3_fuse_ops.access = __pyx_f_7pyfuse3_fuse_access; /* "src/pyfuse3/internal.pxi":69 * fuse_ops.removexattr = fuse_removexattr * fuse_ops.access = fuse_access * fuse_ops.create = fuse_create # <<<<<<<<<<<<<< * fuse_ops.forget_multi = fuse_forget_multi * fuse_ops.write_buf = fuse_write_buf */ __pyx_v_7pyfuse3_fuse_ops.create = __pyx_f_7pyfuse3_fuse_create; /* "src/pyfuse3/internal.pxi":70 * fuse_ops.access = fuse_access * fuse_ops.create = fuse_create * fuse_ops.forget_multi = fuse_forget_multi # <<<<<<<<<<<<<< * fuse_ops.write_buf = fuse_write_buf * */ __pyx_v_7pyfuse3_fuse_ops.forget_multi = __pyx_f_7pyfuse3_fuse_forget_multi; /* "src/pyfuse3/internal.pxi":71 * fuse_ops.create = fuse_create * fuse_ops.forget_multi = fuse_forget_multi * fuse_ops.write_buf = fuse_write_buf # <<<<<<<<<<<<<< * * cdef make_fuse_args(args, fuse_args* f_args): */ __pyx_v_7pyfuse3_fuse_ops.write_buf = __pyx_f_7pyfuse3_fuse_write_buf; /* "src/pyfuse3/internal.pxi":35 * return ctx * * cdef void init_fuse_ops(): # <<<<<<<<<<<<<< * '''Initialize fuse_lowlevel_ops structure''' * */ /* function exit code */ } /* "src/pyfuse3/internal.pxi":73 * fuse_ops.write_buf = fuse_write_buf * * cdef make_fuse_args(args, fuse_args* f_args): # <<<<<<<<<<<<<< * cdef char* arg * cdef int i */ static PyObject *__pyx_f_7pyfuse3_make_fuse_args(PyObject *__pyx_v_args, struct fuse_args *__pyx_v_f_args) { char *__pyx_v_arg; int __pyx_v_i; Py_ssize_t __pyx_v_size_s; size_t __pyx_v_size; PyObject *__pyx_v_args_new = NULL; PyObject *__pyx_v_el = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; PyObject *__pyx_t_10; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("make_fuse_args", 0); __Pyx_INCREF(__pyx_v_args); /* "src/pyfuse3/internal.pxi":79 * cdef size_t size * * args_new = [ b'pyfuse3' ] # <<<<<<<<<<<<<< * for el in args: * args_new.append(b'-o') */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_b_pyfuse3); __Pyx_GIVEREF(__pyx_n_b_pyfuse3); if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_b_pyfuse3)) __PYX_ERR(2, 79, __pyx_L1_error); __pyx_v_args_new = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":80 * * args_new = [ b'pyfuse3' ] * for el in args: # <<<<<<<<<<<<<< * args_new.append(b'-o') * args_new.append(el.encode('us-ascii')) */ if (likely(PyList_CheckExact(__pyx_v_args)) || PyTuple_CheckExact(__pyx_v_args)) { __pyx_t_1 = __pyx_v_args; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 80, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 80, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 80, __pyx_L1_error) #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 80, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 80, __pyx_L1_error) #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(2, 80, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_el, __pyx_t_4); __pyx_t_4 = 0; /* "src/pyfuse3/internal.pxi":81 * args_new = [ b'pyfuse3' ] * for el in args: * args_new.append(b'-o') # <<<<<<<<<<<<<< * args_new.append(el.encode('us-ascii')) * args = args_new */ __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_args_new, __pyx_kp_b_o); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 81, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":82 * for el in args: * args_new.append(b'-o') * args_new.append(el.encode('us-ascii')) # <<<<<<<<<<<<<< * args = args_new * */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_encode); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 82, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_kp_u_us_ascii}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 82, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_args_new, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 82, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "src/pyfuse3/internal.pxi":80 * * args_new = [ b'pyfuse3' ] * for el in args: # <<<<<<<<<<<<<< * args_new.append(b'-o') * args_new.append(el.encode('us-ascii')) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":83 * args_new.append(b'-o') * args_new.append(el.encode('us-ascii')) * args = args_new # <<<<<<<<<<<<<< * * f_args.argc = len(args) */ __Pyx_INCREF(__pyx_v_args_new); __Pyx_DECREF_SET(__pyx_v_args, __pyx_v_args_new); /* "src/pyfuse3/internal.pxi":85 * args = args_new * * f_args.argc = len(args) # <<<<<<<<<<<<<< * if f_args.argc == 0: * f_args.argv = NULL */ __pyx_t_2 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(2, 85, __pyx_L1_error) __pyx_v_f_args->argc = ((int)__pyx_t_2); /* "src/pyfuse3/internal.pxi":86 * * f_args.argc = len(args) * if f_args.argc == 0: # <<<<<<<<<<<<<< * f_args.argv = NULL * return */ __pyx_t_9 = (__pyx_v_f_args->argc == 0); if (__pyx_t_9) { /* "src/pyfuse3/internal.pxi":87 * f_args.argc = len(args) * if f_args.argc == 0: * f_args.argv = NULL # <<<<<<<<<<<<<< * return * */ __pyx_v_f_args->argv = NULL; /* "src/pyfuse3/internal.pxi":88 * if f_args.argc == 0: * f_args.argv = NULL * return # <<<<<<<<<<<<<< * * f_args.allocated = 1 */ __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; /* "src/pyfuse3/internal.pxi":86 * * f_args.argc = len(args) * if f_args.argc == 0: # <<<<<<<<<<<<<< * f_args.argv = NULL * return */ } /* "src/pyfuse3/internal.pxi":90 * return * * f_args.allocated = 1 # <<<<<<<<<<<<<< * f_args.argv = stdlib.calloc( f_args.argc, sizeof(char*)) * */ __pyx_v_f_args->allocated = 1; /* "src/pyfuse3/internal.pxi":91 * * f_args.allocated = 1 * f_args.argv = stdlib.calloc( f_args.argc, sizeof(char*)) # <<<<<<<<<<<<<< * * if f_args.argv is NULL: */ __pyx_v_f_args->argv = ((char **)calloc(((size_t)__pyx_v_f_args->argc), (sizeof(char *)))); /* "src/pyfuse3/internal.pxi":93 * f_args.argv = stdlib.calloc( f_args.argc, sizeof(char*)) * * if f_args.argv is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ __pyx_t_9 = (__pyx_v_f_args->argv == NULL); if (__pyx_t_9) { /* "src/pyfuse3/internal.pxi":94 * * if f_args.argv is NULL: * cpython.exc.PyErr_NoMemory() # <<<<<<<<<<<<<< * * try: */ __pyx_t_10 = PyErr_NoMemory(); if (unlikely(__pyx_t_10 == ((PyObject *)NULL))) __PYX_ERR(2, 94, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":93 * f_args.argv = stdlib.calloc( f_args.argc, sizeof(char*)) * * if f_args.argv is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ } /* "src/pyfuse3/internal.pxi":96 * cpython.exc.PyErr_NoMemory() * * try: # <<<<<<<<<<<<<< * for (i, el) in enumerate(args): * PyBytes_AsStringAndSize(el, &arg, &size_s) */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); /*try:*/ { /* "src/pyfuse3/internal.pxi":97 * * try: * for (i, el) in enumerate(args): # <<<<<<<<<<<<<< * PyBytes_AsStringAndSize(el, &arg, &size_s) * size = size_s # guaranteed positive */ __pyx_t_14 = 0; if (likely(PyList_CheckExact(__pyx_v_args)) || PyTuple_CheckExact(__pyx_v_args)) { __pyx_t_1 = __pyx_v_args; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 97, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 97, __pyx_L8_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 97, __pyx_L8_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 97, __pyx_L8_error) #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 97, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 97, __pyx_L8_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 97, __pyx_L8_error) #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 97, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(2, 97, __pyx_L8_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_el, __pyx_t_4); __pyx_t_4 = 0; __pyx_v_i = __pyx_t_14; __pyx_t_14 = (__pyx_t_14 + 1); /* "src/pyfuse3/internal.pxi":98 * try: * for (i, el) in enumerate(args): * PyBytes_AsStringAndSize(el, &arg, &size_s) # <<<<<<<<<<<<<< * size = size_s # guaranteed positive * f_args.argv[i] = stdlib.malloc((size+1)*sizeof(char)) */ __pyx_t_15 = PyBytes_AsStringAndSize(__pyx_v_el, (&__pyx_v_arg), ((Py_ssize_t *)(&__pyx_v_size_s))); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(2, 98, __pyx_L8_error) /* "src/pyfuse3/internal.pxi":99 * for (i, el) in enumerate(args): * PyBytes_AsStringAndSize(el, &arg, &size_s) * size = size_s # guaranteed positive # <<<<<<<<<<<<<< * f_args.argv[i] = stdlib.malloc((size+1)*sizeof(char)) * */ __pyx_v_size = ((size_t)__pyx_v_size_s); /* "src/pyfuse3/internal.pxi":100 * PyBytes_AsStringAndSize(el, &arg, &size_s) * size = size_s # guaranteed positive * f_args.argv[i] = stdlib.malloc((size+1)*sizeof(char)) # <<<<<<<<<<<<<< * * if f_args.argv[i] is NULL: */ (__pyx_v_f_args->argv[__pyx_v_i]) = ((char *)malloc(((__pyx_v_size + 1) * (sizeof(char))))); /* "src/pyfuse3/internal.pxi":102 * f_args.argv[i] = stdlib.malloc((size+1)*sizeof(char)) * * if f_args.argv[i] is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ __pyx_t_9 = ((__pyx_v_f_args->argv[__pyx_v_i]) == NULL); if (__pyx_t_9) { /* "src/pyfuse3/internal.pxi":103 * * if f_args.argv[i] is NULL: * cpython.exc.PyErr_NoMemory() # <<<<<<<<<<<<<< * * string.strncpy(f_args.argv[i], arg, size+1) */ __pyx_t_10 = PyErr_NoMemory(); if (unlikely(__pyx_t_10 == ((PyObject *)NULL))) __PYX_ERR(2, 103, __pyx_L8_error) /* "src/pyfuse3/internal.pxi":102 * f_args.argv[i] = stdlib.malloc((size+1)*sizeof(char)) * * if f_args.argv[i] is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ } /* "src/pyfuse3/internal.pxi":105 * cpython.exc.PyErr_NoMemory() * * string.strncpy(f_args.argv[i], arg, size+1) # <<<<<<<<<<<<<< * except: * for i in range(f_args.argc): */ (void)(strncpy((__pyx_v_f_args->argv[__pyx_v_i]), __pyx_v_arg, (__pyx_v_size + 1))); /* "src/pyfuse3/internal.pxi":97 * * try: * for (i, el) in enumerate(args): # <<<<<<<<<<<<<< * PyBytes_AsStringAndSize(el, &arg, &size_s) * size = size_s # guaranteed positive */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":96 * cpython.exc.PyErr_NoMemory() * * try: # <<<<<<<<<<<<<< * for (i, el) in enumerate(args): * PyBytes_AsStringAndSize(el, &arg, &size_s) */ } __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/internal.pxi":106 * * string.strncpy(f_args.argv[i], arg, size+1) * except: # <<<<<<<<<<<<<< * for i in range(f_args.argc): * # Freeing a NULL pointer (if this element has not been allocated */ /*except:*/ { __Pyx_AddTraceback("pyfuse3.make_fuse_args", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(2, 106, __pyx_L10_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); /* "src/pyfuse3/internal.pxi":107 * string.strncpy(f_args.argv[i], arg, size+1) * except: * for i in range(f_args.argc): # <<<<<<<<<<<<<< * # Freeing a NULL pointer (if this element has not been allocated * # yet) is fine. */ __pyx_t_14 = __pyx_v_f_args->argc; __pyx_t_15 = __pyx_t_14; for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) { __pyx_v_i = __pyx_t_16; /* "src/pyfuse3/internal.pxi":110 * # Freeing a NULL pointer (if this element has not been allocated * # yet) is fine. * stdlib.free(f_args.argv[i]) # <<<<<<<<<<<<<< * stdlib.free(f_args.argv) * raise */ free((__pyx_v_f_args->argv[__pyx_v_i])); } /* "src/pyfuse3/internal.pxi":111 * # yet) is fine. * stdlib.free(f_args.argv[i]) * stdlib.free(f_args.argv) # <<<<<<<<<<<<<< * raise * */ free(__pyx_v_f_args->argv); /* "src/pyfuse3/internal.pxi":112 * stdlib.free(f_args.argv[i]) * stdlib.free(f_args.argv) * raise # <<<<<<<<<<<<<< * * def _notify_loop(): */ __Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; __PYX_ERR(2, 112, __pyx_L10_except_error) } /* "src/pyfuse3/internal.pxi":96 * cpython.exc.PyErr_NoMemory() * * try: # <<<<<<<<<<<<<< * for (i, el) in enumerate(args): * PyBytes_AsStringAndSize(el, &arg, &size_s) */ __pyx_L10_except_error:; __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); goto __pyx_L1_error; __pyx_L13_try_end:; } /* "src/pyfuse3/internal.pxi":73 * fuse_ops.write_buf = fuse_write_buf * * cdef make_fuse_args(args, fuse_args* f_args): # <<<<<<<<<<<<<< * cdef char* arg * cdef int i */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("pyfuse3.make_fuse_args", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_args_new); __Pyx_XDECREF(__pyx_v_el); __Pyx_XDECREF(__pyx_v_args); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":114 * raise * * def _notify_loop(): # <<<<<<<<<<<<<< * '''Process async invalidate_entry calls.''' * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_88_notify_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_87_notify_loop, "_notify_loop()\nProcess async invalidate_entry calls."); static PyMethodDef __pyx_mdef_7pyfuse3_88_notify_loop = {"_notify_loop", (PyCFunction)__pyx_pw_7pyfuse3_88_notify_loop, METH_NOARGS, __pyx_doc_7pyfuse3_87_notify_loop}; static PyObject *__pyx_pw_7pyfuse3_88_notify_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_notify_loop (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_87_notify_loop(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_87_notify_loop(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_v_req = NULL; PyObject *__pyx_v_inode_p = NULL; PyObject *__pyx_v_name = NULL; PyObject *__pyx_v_deleted = NULL; PyObject *__pyx_v_ignore_enoent = NULL; PyObject *__pyx_v_exc = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; int __pyx_t_12; int __pyx_t_13; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; int __pyx_t_17; char const *__pyx_t_18; PyObject *__pyx_t_19 = NULL; PyObject *__pyx_t_20 = NULL; PyObject *__pyx_t_21 = NULL; PyObject *__pyx_t_22 = NULL; PyObject *__pyx_t_23 = NULL; PyObject *__pyx_t_24 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_notify_loop", 1); /* "src/pyfuse3/internal.pxi":117 * '''Process async invalidate_entry calls.''' * * while True: # <<<<<<<<<<<<<< * req = _notify_queue.get() * if req is None: */ while (1) { /* "src/pyfuse3/internal.pxi":118 * * while True: * req = _notify_queue.get() # <<<<<<<<<<<<<< * if req is None: * log.debug('terminating notify thread') */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3__notify_queue, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_XDECREF_SET(__pyx_v_req, __pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":119 * while True: * req = _notify_queue.get() * if req is None: # <<<<<<<<<<<<<< * log.debug('terminating notify thread') * break */ __pyx_t_5 = (__pyx_v_req == Py_None); if (__pyx_t_5) { /* "src/pyfuse3/internal.pxi":120 * req = _notify_queue.get() * if req is None: * log.debug('terminating notify thread') # <<<<<<<<<<<<<< * break * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u_terminating_notify_thread}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":121 * if req is None: * log.debug('terminating notify thread') * break # <<<<<<<<<<<<<< * * (inode_p, name, deleted, ignore_enoent) = req */ goto __pyx_L4_break; /* "src/pyfuse3/internal.pxi":119 * while True: * req = _notify_queue.get() * if req is None: # <<<<<<<<<<<<<< * log.debug('terminating notify thread') * break */ } /* "src/pyfuse3/internal.pxi":123 * break * * (inode_p, name, deleted, ignore_enoent) = req # <<<<<<<<<<<<<< * try: * invalidate_entry(inode_p, name, deleted) */ if ((likely(PyTuple_CheckExact(__pyx_v_req))) || (PyList_CheckExact(__pyx_v_req))) { PyObject* sequence = __pyx_v_req; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 4)) { if (size > 4) __Pyx_RaiseTooManyValuesError(4); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(2, 123, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_2 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); #else { Py_ssize_t i; PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_2,&__pyx_t_6}; for (i=0; i < 4; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(2, 123, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif } else { Py_ssize_t index = -1; PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_2,&__pyx_t_6}; __pyx_t_7 = PyObject_GetIter(__pyx_v_req); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); for (index=0; index < 4; index++) { PyObject* item = __pyx_t_8(__pyx_t_7); if (unlikely(!item)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < 0) __PYX_ERR(2, 123, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(2, 123, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_inode_p, __pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_deleted, __pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_ignore_enoent, __pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/internal.pxi":124 * * (inode_p, name, deleted, ignore_enoent) = req * try: # <<<<<<<<<<<<<< * invalidate_entry(inode_p, name, deleted) * except Exception as exc: */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); /*try:*/ { /* "src/pyfuse3/internal.pxi":125 * (inode_p, name, deleted, ignore_enoent) = req * try: * invalidate_entry(inode_p, name, deleted) # <<<<<<<<<<<<<< * except Exception as exc: * if ignore_enoent and isinstance(exc, FileNotFoundError): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_invalidate_entry); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 125, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inode_p, __pyx_v_name, __pyx_v_deleted}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 125, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "src/pyfuse3/internal.pxi":124 * * (inode_p, name, deleted, ignore_enoent) = req * try: # <<<<<<<<<<<<<< * invalidate_entry(inode_p, name, deleted) * except Exception as exc: */ } __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L15_try_end; __pyx_L8_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/internal.pxi":126 * try: * invalidate_entry(inode_p, name, deleted) * except Exception as exc: # <<<<<<<<<<<<<< * if ignore_enoent and isinstance(exc, FileNotFoundError): * pass */ __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_12) { __Pyx_AddTraceback("pyfuse3._notify_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(2, 126, __pyx_L10_except_error) __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_v_exc = __pyx_t_2; /*try:*/ { /* "src/pyfuse3/internal.pxi":127 * invalidate_entry(inode_p, name, deleted) * except Exception as exc: * if ignore_enoent and isinstance(exc, FileNotFoundError): # <<<<<<<<<<<<<< * pass * else: */ __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_enoent); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(2, 127, __pyx_L21_error) if (__pyx_t_13) { } else { __pyx_t_5 = __pyx_t_13; goto __pyx_L24_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_FileNotFoundError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 127, __pyx_L21_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_1); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(2, 127, __pyx_L21_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __pyx_t_13; __pyx_L24_bool_binop_done:; if (__pyx_t_5) { goto __pyx_L23; } /* "src/pyfuse3/internal.pxi":130 * pass * else: * log.exception('Failed to submit invalidate_entry request for ' # <<<<<<<<<<<<<< * 'parent inode %d, name %s', req[0], req[1]) * */ /*else*/ { __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_log); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 130, __pyx_L21_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exception); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 130, __pyx_L21_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/internal.pxi":131 * else: * log.exception('Failed to submit invalidate_entry request for ' * 'parent inode %d, name %s', req[0], req[1]) # <<<<<<<<<<<<<< * * cdef str2bytes(s): */ __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_req, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 131, __pyx_L21_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_15 = __Pyx_GetItemInt(__pyx_v_req, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 131, __pyx_L21_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_16, __pyx_kp_u_Failed_to_submit_invalidate_entr, __pyx_t_7, __pyx_t_15}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 130, __pyx_L21_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L23:; } /* "src/pyfuse3/internal.pxi":126 * try: * invalidate_entry(inode_p, name, deleted) * except Exception as exc: # <<<<<<<<<<<<<< * if ignore_enoent and isinstance(exc, FileNotFoundError): * pass */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L22; } __pyx_L21_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_12 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); } __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L10_except_error; } __pyx_L22:; } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L9_exception_handled; } goto __pyx_L10_except_error; /* "src/pyfuse3/internal.pxi":124 * * (inode_p, name, deleted, ignore_enoent) = req * try: # <<<<<<<<<<<<<< * invalidate_entry(inode_p, name, deleted) * except Exception as exc: */ __pyx_L10_except_error:; __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); goto __pyx_L1_error; __pyx_L9_exception_handled:; __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_L15_try_end:; } } __pyx_L4_break:; /* "src/pyfuse3/internal.pxi":114 * raise * * def _notify_loop(): # <<<<<<<<<<<<<< * '''Process async invalidate_entry calls.''' * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); __Pyx_XDECREF(__pyx_t_16); __Pyx_AddTraceback("pyfuse3._notify_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_req); __Pyx_XDECREF(__pyx_v_inode_p); __Pyx_XDECREF(__pyx_v_name); __Pyx_XDECREF(__pyx_v_deleted); __Pyx_XDECREF(__pyx_v_ignore_enoent); __Pyx_XDECREF(__pyx_v_exc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":133 * 'parent inode %d, name %s', req[0], req[1]) * * cdef str2bytes(s): # <<<<<<<<<<<<<< * '''Convert *s* to bytes''' * */ static PyObject *__pyx_f_7pyfuse3_str2bytes(PyObject *__pyx_v_s) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("str2bytes", 1); /* "src/pyfuse3/internal.pxi":136 * '''Convert *s* to bytes''' * * return s.encode(fse, 'surrogateescape') # <<<<<<<<<<<<<< * * cdef bytes2str(s): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fse); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_n_u_surrogateescape}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "src/pyfuse3/internal.pxi":133 * 'parent inode %d, name %s', req[0], req[1]) * * cdef str2bytes(s): # <<<<<<<<<<<<<< * '''Convert *s* to bytes''' * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.str2bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":138 * return s.encode(fse, 'surrogateescape') * * cdef bytes2str(s): # <<<<<<<<<<<<<< * '''Convert *s* to str''' * */ static PyObject *__pyx_f_7pyfuse3_bytes2str(PyObject *__pyx_v_s) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("bytes2str", 1); /* "src/pyfuse3/internal.pxi":141 * '''Convert *s* to str''' * * return s.decode(fse, 'surrogateescape') # <<<<<<<<<<<<<< * * cdef strerror(int errno): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_decode); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fse); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_n_u_surrogateescape}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "src/pyfuse3/internal.pxi":138 * return s.encode(fse, 'surrogateescape') * * cdef bytes2str(s): # <<<<<<<<<<<<<< * '''Convert *s* to str''' * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.bytes2str", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":143 * return s.decode(fse, 'surrogateescape') * * cdef strerror(int errno): # <<<<<<<<<<<<<< * try: * return os.strerror(errno) */ static PyObject *__pyx_f_7pyfuse3_strerror(int __pyx_v_errno) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; int __pyx_t_9; PyObject *__pyx_t_10 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("strerror", 1); /* "src/pyfuse3/internal.pxi":144 * * cdef strerror(int errno): * try: # <<<<<<<<<<<<<< * return os.strerror(errno) * except ValueError: */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/internal.pxi":145 * cdef strerror(int errno): * try: * return os.strerror(errno) # <<<<<<<<<<<<<< * except ValueError: * return 'errno: %d' % errno */ __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_os); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 145, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strerror); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 145, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 145, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 145, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L7_try_return; /* "src/pyfuse3/internal.pxi":144 * * cdef strerror(int errno): * try: # <<<<<<<<<<<<<< * return os.strerror(errno) * except ValueError: */ } __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/internal.pxi":146 * try: * return os.strerror(errno) * except ValueError: # <<<<<<<<<<<<<< * return 'errno: %d' % errno * */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_9) { __Pyx_AddTraceback("pyfuse3.strerror", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(2, 146, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); /* "src/pyfuse3/internal.pxi":147 * return os.strerror(errno) * except ValueError: * return 'errno: %d' % errno # <<<<<<<<<<<<<< * * cdef PyBytes_from_bufvec(fuse_bufvec *src): */ __Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 147, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = PyUnicode_Format(__pyx_kp_u_errno_d, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 147, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L6_except_return; } goto __pyx_L5_except_error; /* "src/pyfuse3/internal.pxi":144 * * cdef strerror(int errno): * try: # <<<<<<<<<<<<<< * return os.strerror(errno) * except ValueError: */ __pyx_L5_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; __pyx_L6_except_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; } /* "src/pyfuse3/internal.pxi":143 * return s.decode(fse, 'surrogateescape') * * cdef strerror(int errno): # <<<<<<<<<<<<<< * try: * return os.strerror(errno) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("pyfuse3.strerror", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":149 * return 'errno: %d' % errno * * cdef PyBytes_from_bufvec(fuse_bufvec *src): # <<<<<<<<<<<<<< * cdef fuse_bufvec dst * cdef size_t len_ */ static PyObject *__pyx_f_7pyfuse3_PyBytes_from_bufvec(struct fuse_bufvec *__pyx_v_src) { struct fuse_bufvec __pyx_v_dst; size_t __pyx_v_len_; Py_ssize_t __pyx_v_res; PyObject *__pyx_v_buf = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyBytes_from_bufvec", 1); /* "src/pyfuse3/internal.pxi":154 * cdef ssize_t res * * len_ = fuse_buf_size(src) - src.off # <<<<<<<<<<<<<< * if len_ > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') */ __pyx_v_len_ = (fuse_buf_size(__pyx_v_src) - __pyx_v_src->off); /* "src/pyfuse3/internal.pxi":155 * * len_ = fuse_buf_size(src) - src.off * if len_ > PY_SSIZE_T_MAX: # <<<<<<<<<<<<<< * raise OverflowError('Value too long to convert to Python') * buf = PyBytes_FromStringAndSize(NULL, len_) */ __pyx_t_1 = (__pyx_v_len_ > PY_SSIZE_T_MAX); if (unlikely(__pyx_t_1)) { /* "src/pyfuse3/internal.pxi":156 * len_ = fuse_buf_size(src) - src.off * if len_ > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') # <<<<<<<<<<<<<< * buf = PyBytes_FromStringAndSize(NULL, len_) * dst.count = 1 */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(2, 156, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":155 * * len_ = fuse_buf_size(src) - src.off * if len_ > PY_SSIZE_T_MAX: # <<<<<<<<<<<<<< * raise OverflowError('Value too long to convert to Python') * buf = PyBytes_FromStringAndSize(NULL, len_) */ } /* "src/pyfuse3/internal.pxi":157 * if len_ > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') * buf = PyBytes_FromStringAndSize(NULL, len_) # <<<<<<<<<<<<<< * dst.count = 1 * dst.idx = 0 */ __pyx_t_2 = PyBytes_FromStringAndSize(NULL, ((Py_ssize_t)__pyx_v_len_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_buf = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/internal.pxi":158 * raise OverflowError('Value too long to convert to Python') * buf = PyBytes_FromStringAndSize(NULL, len_) * dst.count = 1 # <<<<<<<<<<<<<< * dst.idx = 0 * dst.off = 0 */ __pyx_v_dst.count = 1; /* "src/pyfuse3/internal.pxi":159 * buf = PyBytes_FromStringAndSize(NULL, len_) * dst.count = 1 * dst.idx = 0 # <<<<<<<<<<<<<< * dst.off = 0 * dst.buf[0].mem = PyBytes_AS_STRING(buf) */ __pyx_v_dst.idx = 0; /* "src/pyfuse3/internal.pxi":160 * dst.count = 1 * dst.idx = 0 * dst.off = 0 # <<<<<<<<<<<<<< * dst.buf[0].mem = PyBytes_AS_STRING(buf) * dst.buf[0].size = len_ */ __pyx_v_dst.off = 0; /* "src/pyfuse3/internal.pxi":161 * dst.idx = 0 * dst.off = 0 * dst.buf[0].mem = PyBytes_AS_STRING(buf) # <<<<<<<<<<<<<< * dst.buf[0].size = len_ * dst.buf[0].flags = 0 */ (__pyx_v_dst.buf[0]).mem = PyBytes_AS_STRING(__pyx_v_buf); /* "src/pyfuse3/internal.pxi":162 * dst.off = 0 * dst.buf[0].mem = PyBytes_AS_STRING(buf) * dst.buf[0].size = len_ # <<<<<<<<<<<<<< * dst.buf[0].flags = 0 * res = fuse_buf_copy(&dst, src, 0) */ (__pyx_v_dst.buf[0]).size = __pyx_v_len_; /* "src/pyfuse3/internal.pxi":163 * dst.buf[0].mem = PyBytes_AS_STRING(buf) * dst.buf[0].size = len_ * dst.buf[0].flags = 0 # <<<<<<<<<<<<<< * res = fuse_buf_copy(&dst, src, 0) * if res < 0: */ (__pyx_v_dst.buf[0]).flags = 0; /* "src/pyfuse3/internal.pxi":164 * dst.buf[0].size = len_ * dst.buf[0].flags = 0 * res = fuse_buf_copy(&dst, src, 0) # <<<<<<<<<<<<<< * if res < 0: * raise OSError(errno.errno, 'fuse_buf_copy failed with ' */ __pyx_v_res = fuse_buf_copy((&__pyx_v_dst), __pyx_v_src, 0); /* "src/pyfuse3/internal.pxi":165 * dst.buf[0].flags = 0 * res = fuse_buf_copy(&dst, src, 0) * if res < 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, 'fuse_buf_copy failed with ' * + strerror(errno.errno)) */ __pyx_t_1 = (__pyx_v_res < 0); if (unlikely(__pyx_t_1)) { /* "src/pyfuse3/internal.pxi":166 * res = fuse_buf_copy(&dst, src, 0) * if res < 0: * raise OSError(errno.errno, 'fuse_buf_copy failed with ' # <<<<<<<<<<<<<< * + strerror(errno.errno)) * elif res < len_: */ __pyx_t_2 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* "src/pyfuse3/internal.pxi":167 * if res < 0: * raise OSError(errno.errno, 'fuse_buf_copy failed with ' * + strerror(errno.errno)) # <<<<<<<<<<<<<< * elif res < len_: * # This is expected to be rare */ __pyx_t_3 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Add(__pyx_kp_u_fuse_buf_copy_failed_with, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "src/pyfuse3/internal.pxi":166 * res = fuse_buf_copy(&dst, src, 0) * if res < 0: * raise OSError(errno.errno, 'fuse_buf_copy failed with ' # <<<<<<<<<<<<<< * + strerror(errno.errno)) * elif res < len_: */ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(2, 166, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(2, 166, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(2, 166, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":165 * dst.buf[0].flags = 0 * res = fuse_buf_copy(&dst, src, 0) * if res < 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, 'fuse_buf_copy failed with ' * + strerror(errno.errno)) */ } /* "src/pyfuse3/internal.pxi":168 * raise OSError(errno.errno, 'fuse_buf_copy failed with ' * + strerror(errno.errno)) * elif res < len_: # <<<<<<<<<<<<<< * # This is expected to be rare * return buf[:res] */ __pyx_t_1 = (((size_t)__pyx_v_res) < __pyx_v_len_); if (__pyx_t_1) { /* "src/pyfuse3/internal.pxi":170 * elif res < len_: * # This is expected to be rare * return buf[:res] # <<<<<<<<<<<<<< * else: * return buf */ __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(2, 170, __pyx_L1_error) } __pyx_t_4 = PySequence_GetSlice(__pyx_v_buf, 0, __pyx_v_res); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "src/pyfuse3/internal.pxi":168 * raise OSError(errno.errno, 'fuse_buf_copy failed with ' * + strerror(errno.errno)) * elif res < len_: # <<<<<<<<<<<<<< * # This is expected to be rare * return buf[:res] */ } /* "src/pyfuse3/internal.pxi":172 * return buf[:res] * else: * return buf # <<<<<<<<<<<<<< * * cdef void* calloc_or_raise(size_t nmemb, size_t size) except NULL: */ /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_buf); __pyx_r = __pyx_v_buf; goto __pyx_L0; } /* "src/pyfuse3/internal.pxi":149 * return 'errno: %d' % errno * * cdef PyBytes_from_bufvec(fuse_bufvec *src): # <<<<<<<<<<<<<< * cdef fuse_bufvec dst * cdef size_t len_ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.PyBytes_from_bufvec", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_buf); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":174 * return buf * * cdef void* calloc_or_raise(size_t nmemb, size_t size) except NULL: # <<<<<<<<<<<<<< * cdef void* mem * mem = stdlib.calloc(nmemb, size) */ static void *__pyx_f_7pyfuse3_calloc_or_raise(size_t __pyx_v_nmemb, size_t __pyx_v_size) { void *__pyx_v_mem; void *__pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "src/pyfuse3/internal.pxi":176 * cdef void* calloc_or_raise(size_t nmemb, size_t size) except NULL: * cdef void* mem * mem = stdlib.calloc(nmemb, size) # <<<<<<<<<<<<<< * if mem is NULL: * raise MemoryError() */ __pyx_v_mem = calloc(__pyx_v_nmemb, __pyx_v_size); /* "src/pyfuse3/internal.pxi":177 * cdef void* mem * mem = stdlib.calloc(nmemb, size) * if mem is NULL: # <<<<<<<<<<<<<< * raise MemoryError() * return mem */ __pyx_t_1 = (__pyx_v_mem == NULL); if (unlikely(__pyx_t_1)) { /* "src/pyfuse3/internal.pxi":178 * mem = stdlib.calloc(nmemb, size) * if mem is NULL: * raise MemoryError() # <<<<<<<<<<<<<< * return mem * */ PyErr_NoMemory(); __PYX_ERR(2, 178, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":177 * cdef void* mem * mem = stdlib.calloc(nmemb, size) * if mem is NULL: # <<<<<<<<<<<<<< * raise MemoryError() * return mem */ } /* "src/pyfuse3/internal.pxi":179 * if mem is NULL: * raise MemoryError() * return mem # <<<<<<<<<<<<<< * * cdef class _WorkerData: */ __pyx_r = __pyx_v_mem; goto __pyx_L0; /* "src/pyfuse3/internal.pxi":174 * return buf * * cdef void* calloc_or_raise(size_t nmemb, size_t size) except NULL: # <<<<<<<<<<<<<< * cdef void* mem * mem = stdlib.calloc(nmemb, size) */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.calloc_or_raise", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; return __pyx_r; } /* "src/pyfuse3/internal.pxi":189 * cdef int active_readers * * def __init__(self): # <<<<<<<<<<<<<< * self.read_lock = trio.Lock() * self.active_readers = 0 */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11_WorkerData_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7pyfuse3_11_WorkerData_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; __pyx_r = __pyx_pf_7pyfuse3_11_WorkerData___init__(((struct __pyx_obj_7pyfuse3__WorkerData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11_WorkerData___init__(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 1); /* "src/pyfuse3/internal.pxi":190 * * def __init__(self): * self.read_lock = trio.Lock() # <<<<<<<<<<<<<< * self.active_readers = 0 * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_trio); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->read_lock); __Pyx_DECREF(__pyx_v_self->read_lock); __pyx_v_self->read_lock = __pyx_t_1; __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":191 * def __init__(self): * self.read_lock = trio.Lock() * self.active_readers = 0 # <<<<<<<<<<<<<< * * cdef get_name(self): */ __pyx_v_self->active_readers = 0; /* "src/pyfuse3/internal.pxi":189 * cdef int active_readers * * def __init__(self): # <<<<<<<<<<<<<< * self.read_lock = trio.Lock() * self.active_readers = 0 */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3._WorkerData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "src/pyfuse3/internal.pxi":193 * self.active_readers = 0 * * cdef get_name(self): # <<<<<<<<<<<<<< * self.task_serial += 1 * return 'pyfuse-%02d' % self.task_serial */ static PyObject *__pyx_f_7pyfuse3_11_WorkerData_get_name(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_name", 1); /* "src/pyfuse3/internal.pxi":194 * * cdef get_name(self): * self.task_serial += 1 # <<<<<<<<<<<<<< * return 'pyfuse-%02d' % self.task_serial * */ __pyx_v_self->task_serial = (__pyx_v_self->task_serial + 1); /* "src/pyfuse3/internal.pxi":195 * cdef get_name(self): * self.task_serial += 1 * return 'pyfuse-%02d' % self.task_serial # <<<<<<<<<<<<<< * * # Delay initialization so that pyfuse3.asyncio can replace */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->task_serial); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_pyfuse_02d, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "src/pyfuse3/internal.pxi":193 * self.active_readers = 0 * * cdef get_name(self): # <<<<<<<<<<<<<< * self.task_serial += 1 * return 'pyfuse-%02d' % self.task_serial */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyfuse3._WorkerData.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11_WorkerData_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_11_WorkerData_2__reduce_cython__, "_WorkerData.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_11_WorkerData_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11_WorkerData_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11_WorkerData_2__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_11_WorkerData_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_11_WorkerData_2__reduce_cython__(((struct __pyx_obj_7pyfuse3__WorkerData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11_WorkerData_2__reduce_cython__(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":5 * cdef object _dict * cdef bint use_setstate * state = (self.active_readers, self.read_lock, self.task_count, self.task_serial) # <<<<<<<<<<<<<< * _dict = getattr(self, '__dict__', None) * if _dict is not None: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->active_readers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->task_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->task_serial); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self->read_lock); __Pyx_GIVEREF(__pyx_v_self->read_lock); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->read_lock)) __PYX_ERR(0, 5, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_v_state = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; /* "(tree fragment)":6 * cdef bint use_setstate * state = (self.active_readers, self.read_lock, self.task_count, self.task_serial) * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< * if _dict is not None: * state += (_dict,) */ __pyx_t_4 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v__dict = __pyx_t_4; __pyx_t_4 = 0; /* "(tree fragment)":7 * state = (self.active_readers, self.read_lock, self.task_count, self.task_serial) * _dict = getattr(self, '__dict__', None) * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ __pyx_t_5 = (__pyx_v__dict != Py_None); if (__pyx_t_5) { /* "(tree fragment)":8 * _dict = getattr(self, '__dict__', None) * if _dict is not None: * state += (_dict,) # <<<<<<<<<<<<<< * use_setstate = True * else: */ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v__dict); __Pyx_GIVEREF(__pyx_v__dict); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v__dict)) __PYX_ERR(0, 8, __pyx_L1_error); __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* "(tree fragment)":9 * if _dict is not None: * state += (_dict,) * use_setstate = True # <<<<<<<<<<<<<< * else: * use_setstate = self.read_lock is not None */ __pyx_v_use_setstate = 1; /* "(tree fragment)":7 * state = (self.active_readers, self.read_lock, self.task_count, self.task_serial) * _dict = getattr(self, '__dict__', None) * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ goto __pyx_L3; } /* "(tree fragment)":11 * use_setstate = True * else: * use_setstate = self.read_lock is not None # <<<<<<<<<<<<<< * if use_setstate: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, None), state */ /*else*/ { __pyx_t_5 = (__pyx_v_self->read_lock != Py_None); __pyx_v_use_setstate = __pyx_t_5; } __pyx_L3:; /* "(tree fragment)":12 * else: * use_setstate = self.read_lock is not None * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, None), state * else: */ if (__pyx_v_use_setstate) { /* "(tree fragment)":13 * use_setstate = self.read_lock is not None * if use_setstate: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, None), state # <<<<<<<<<<<<<< * else: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) */ __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__WorkerData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_int_44617694); __Pyx_GIVEREF(__pyx_int_44617694); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_44617694)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None)) __PYX_ERR(0, 13, __pyx_L1_error); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(0, 13, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "(tree fragment)":12 * else: * use_setstate = self.read_lock is not None * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, None), state * else: */ } /* "(tree fragment)":15 * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, None), state * else: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle__WorkerData__set_state(self, __pyx_state) */ /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle__WorkerData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_int_44617694); __Pyx_GIVEREF(__pyx_int_44617694); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_44617694)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(0, 15, __pyx_L1_error); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(0, 15, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3._WorkerData.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); __Pyx_XDECREF(__pyx_v__dict); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":16 * else: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle__WorkerData__set_state(self, __pyx_state) */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11_WorkerData_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_11_WorkerData_4__setstate_cython__, "_WorkerData.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_11_WorkerData_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11_WorkerData_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11_WorkerData_4__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_11_WorkerData_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 16, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 16, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3._WorkerData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_11_WorkerData_4__setstate_cython__(((struct __pyx_obj_7pyfuse3__WorkerData *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11_WorkerData_4__setstate_cython__(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":17 * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle__WorkerData__set_state(self, __pyx_state) # <<<<<<<<<<<<<< */ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(0, 17, __pyx_L1_error) __pyx_t_1 = __pyx_f_7pyfuse3___pyx_unpickle__WorkerData__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":16 * else: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle__WorkerData__set_state(self, __pyx_state) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3._WorkerData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_91generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/internal.pxi":201 * cdef _WorkerData worker_data * * async def _wait_fuse_readable(): # <<<<<<<<<<<<<< * '''Wait for FUSE fd to become readable * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_90_wait_fuse_readable(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_89_wait_fuse_readable, "_wait_fuse_readable()\nWait for FUSE fd to become readable\n\n Return True if the fd is readable, or False if the main loop\n should terminate.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_90_wait_fuse_readable = {"_wait_fuse_readable", (PyCFunction)__pyx_pw_7pyfuse3_90_wait_fuse_readable, METH_NOARGS, __pyx_doc_7pyfuse3_89_wait_fuse_readable}; static PyObject *__pyx_pw_7pyfuse3_90_wait_fuse_readable(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_wait_fuse_readable (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_89_wait_fuse_readable(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_89_wait_fuse_readable(CYTHON_UNUSED PyObject *__pyx_self) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_wait_fuse_readable", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable(__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(2, 201, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_91generator29, __pyx_codeobj__33, (PyObject *) __pyx_cur_scope, __pyx_n_s_wait_fuse_readable, __pyx_n_s_wait_fuse_readable, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(2, 201, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3._wait_fuse_readable", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_91generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; unsigned int __pyx_t_8; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; int __pyx_t_12; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; int __pyx_t_15; PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; PyObject *__pyx_t_19 = NULL; PyObject *__pyx_t_20 = NULL; int __pyx_t_21; PyObject *__pyx_t_22 = NULL; int __pyx_t_23; char const *__pyx_t_24; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_wait_fuse_readable", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L14_resume_from_await; case 2: goto __pyx_L25_resume_from_await; case 3: goto __pyx_L29_resume_from_await; case 4: goto __pyx_L30_resume_from_await; case 5: goto __pyx_L31_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 201, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":209 * * #name = trio.lowlevel.current_task().name * worker_data.active_readers += 1 # <<<<<<<<<<<<<< * try: * #log.debug('%s: Waiting for read lock...', name) */ __pyx_v_7pyfuse3_worker_data->active_readers = (__pyx_v_7pyfuse3_worker_data->active_readers + 1); /* "src/pyfuse3/internal.pxi":210 * #name = trio.lowlevel.current_task().name * worker_data.active_readers += 1 * try: # <<<<<<<<<<<<<< * #log.debug('%s: Waiting for read lock...', name) * async with worker_data.read_lock: */ /*try:*/ { { __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "src/pyfuse3/internal.pxi":212 * try: * #log.debug('%s: Waiting for read lock...', name) * async with worker_data.read_lock: # <<<<<<<<<<<<<< * #log.debug('%s: Waiting for fuse fd to become readable...', name) * if fuse_session_exited(session): */ /*with:*/ { __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7pyfuse3_worker_data->read_lock, __pyx_n_s_aexit); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 212, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_7pyfuse3_worker_data->read_lock, __pyx_n_s_aenter); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 212, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 212, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_3 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L14_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 212, __pyx_L13_error) __pyx_t_5 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_5 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_5) < 0) __PYX_ERR(2, 212, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /*try:*/ { { __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); /*try:*/ { /* "src/pyfuse3/internal.pxi":214 * async with worker_data.read_lock: * #log.debug('%s: Waiting for fuse fd to become readable...', name) * if fuse_session_exited(session): # <<<<<<<<<<<<<< * log.debug('FUSE session exit flag set while waiting for FUSE fd ' * 'to become readable.') */ __pyx_t_12 = fuse_session_exited(__pyx_v_7pyfuse3_session); if (__pyx_t_12) { /* "src/pyfuse3/internal.pxi":215 * #log.debug('%s: Waiting for fuse fd to become readable...', name) * if fuse_session_exited(session): * log.debug('FUSE session exit flag set while waiting for FUSE fd ' # <<<<<<<<<<<<<< * 'to become readable.') * return False */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_log); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 215, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 215, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_u_FUSE_session_exit_flag_set_while}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 215, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "src/pyfuse3/internal.pxi":217 * log.debug('FUSE session exit flag set while waiting for FUSE fd ' * 'to become readable.') * return False # <<<<<<<<<<<<<< * await trio.lowlevel.wait_readable(session_fd) * #log.debug('%s: fuse fd readable, unparking next task.', name) */ __Pyx_XDECREF(__pyx_r); __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False); goto __pyx_L22_try_return; /* "src/pyfuse3/internal.pxi":214 * async with worker_data.read_lock: * #log.debug('%s: Waiting for fuse fd to become readable...', name) * if fuse_session_exited(session): # <<<<<<<<<<<<<< * log.debug('FUSE session exit flag set while waiting for FUSE fd ' * 'to become readable.') */ } /* "src/pyfuse3/internal.pxi":218 * 'to become readable.') * return False * await trio.lowlevel.wait_readable(session_fd) # <<<<<<<<<<<<<< * #log.debug('%s: fuse fd readable, unparking next task.', name) * except trio.ClosedResourceError: */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_trio); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 218, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_lowlevel); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 218, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_wait_readable); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 218, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_7pyfuse3_session_fd); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 218, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_13 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_6}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 218, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_3 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_6 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L25_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_cur_scope->__pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_t_9); __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; __pyx_cur_scope->__pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_t_10); __pyx_t_11 = __pyx_cur_scope->__pyx_t_6; __pyx_cur_scope->__pyx_t_6 = 0; __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 218, __pyx_L18_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(2, 218, __pyx_L18_error) } } /* "src/pyfuse3/internal.pxi":212 * try: * #log.debug('%s: Waiting for read lock...', name) * async with worker_data.read_lock: # <<<<<<<<<<<<<< * #log.debug('%s: Waiting for fuse fd to become readable...', name) * if fuse_session_exited(session): */ } __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L23_try_end; __pyx_L18_error:; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /*except:*/ { __Pyx_AddTraceback("pyfuse3._wait_fuse_readable", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(2, 212, __pyx_L20_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); __pyx_t_13 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 212, __pyx_L20_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_13, NULL); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 212, __pyx_L20_except_error) __Pyx_GOTREF(__pyx_t_14); __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_14); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_3 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_4 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_5 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_t_6 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_7 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_8 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_9 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_t_14); __pyx_cur_scope->__pyx_t_10 = __pyx_t_14; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_SwapException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 3; return __pyx_r; __pyx_L29_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __pyx_cur_scope->__pyx_t_4; __pyx_cur_scope->__pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_t_5); __pyx_t_6 = __pyx_cur_scope->__pyx_t_5; __pyx_cur_scope->__pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_t_6); __pyx_t_7 = __pyx_cur_scope->__pyx_t_6; __pyx_cur_scope->__pyx_t_6 = 0; __Pyx_XGOTREF(__pyx_t_7); __pyx_t_9 = __pyx_cur_scope->__pyx_t_7; __pyx_cur_scope->__pyx_t_7 = 0; __Pyx_XGOTREF(__pyx_t_9); __pyx_t_10 = __pyx_cur_scope->__pyx_t_8; __pyx_cur_scope->__pyx_t_8 = 0; __Pyx_XGOTREF(__pyx_t_10); __pyx_t_11 = __pyx_cur_scope->__pyx_t_9; __pyx_cur_scope->__pyx_t_9 = 0; __Pyx_XGOTREF(__pyx_t_11); __pyx_t_14 = __pyx_cur_scope->__pyx_t_10; __pyx_cur_scope->__pyx_t_10 = 0; __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 212, __pyx_L20_except_error) __pyx_t_13 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_13); } else { __pyx_t_13 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_13) < 0) __PYX_ERR(2, 212, __pyx_L20_except_error) __Pyx_GOTREF(__pyx_t_13); } __pyx_t_14 = __pyx_t_13; __pyx_t_13 = 0; __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_14); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__pyx_t_12 < 0) __PYX_ERR(2, 212, __pyx_L20_except_error) __pyx_t_15 = (!__pyx_t_12); if (unlikely(__pyx_t_15)) { __Pyx_GIVEREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_7, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __PYX_ERR(2, 212, __pyx_L20_except_error) } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L19_exception_handled; } __pyx_L20_except_error:; __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); goto __pyx_L7_error; __pyx_L22_try_return:; __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); goto __pyx_L15_return; __pyx_L19_exception_handled:; __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_L23_try_end:; } } /*finally:*/ { /*normal exit:*/{ if (__pyx_t_4) { __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__34, NULL); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 212, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_11); __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_3 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_4 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 4; return __pyx_r; __pyx_L30_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_11 = __pyx_cur_scope->__pyx_t_4; __pyx_cur_scope->__pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 212, __pyx_L7_error) __pyx_t_6 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_6); } else { __pyx_t_6 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_6) < 0) __PYX_ERR(2, 212, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_11 = __pyx_t_6; __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } goto __pyx_L17; } __pyx_L15_return: { __Pyx_PyThreadState_assign __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_14 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_18 = __pyx_r; __pyx_r = 0; if (__pyx_t_4) { __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__34, NULL); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_19)) __PYX_ERR(2, 212, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_19); __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_19); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_t_2 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_3 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_6 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_t_14); __pyx_cur_scope->__pyx_t_7 = __pyx_t_14; __Pyx_XGIVEREF(__pyx_t_16); __pyx_cur_scope->__pyx_t_8 = __pyx_t_16; __Pyx_XGIVEREF(__pyx_t_17); __pyx_cur_scope->__pyx_t_9 = __pyx_t_17; __Pyx_XGIVEREF(__pyx_t_18); __pyx_cur_scope->__pyx_t_10 = __pyx_t_18; __Pyx_XGIVEREF(__pyx_t_19); __pyx_cur_scope->__pyx_t_11 = __pyx_t_19; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 5; return __pyx_r; __pyx_L31_resume_from_await:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_cur_scope->__pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_t_9); __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; __pyx_cur_scope->__pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_t_10); __pyx_t_11 = __pyx_cur_scope->__pyx_t_6; __pyx_cur_scope->__pyx_t_6 = 0; __Pyx_XGOTREF(__pyx_t_11); __pyx_t_14 = __pyx_cur_scope->__pyx_t_7; __pyx_cur_scope->__pyx_t_7 = 0; __Pyx_XGOTREF(__pyx_t_14); __pyx_t_16 = __pyx_cur_scope->__pyx_t_8; __pyx_cur_scope->__pyx_t_8 = 0; __Pyx_XGOTREF(__pyx_t_16); __pyx_t_17 = __pyx_cur_scope->__pyx_t_9; __pyx_cur_scope->__pyx_t_9 = 0; __Pyx_XGOTREF(__pyx_t_17); __pyx_t_18 = __pyx_cur_scope->__pyx_t_10; __pyx_cur_scope->__pyx_t_10 = 0; __Pyx_XGOTREF(__pyx_t_18); __pyx_t_19 = __pyx_cur_scope->__pyx_t_11; __pyx_cur_scope->__pyx_t_11 = 0; __Pyx_XGOTREF(__pyx_t_19); if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 212, __pyx_L7_error) __pyx_t_6 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_6); } else { __pyx_t_6 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_6) < 0) __PYX_ERR(2, 212, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_19 = __pyx_t_6; __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; } __pyx_r = __pyx_t_18; __pyx_t_18 = 0; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestore(__pyx_t_11, __pyx_t_10, __pyx_t_9); __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_14 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; goto __pyx_L11_try_return; } __pyx_L17:; } goto __pyx_L32; __pyx_L13_error:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L7_error; __pyx_L32:; } /* "src/pyfuse3/internal.pxi":210 * #name = trio.lowlevel.current_task().name * worker_data.active_readers += 1 * try: # <<<<<<<<<<<<<< * #log.debug('%s: Waiting for read lock...', name) * async with worker_data.read_lock: */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/internal.pxi":220 * await trio.lowlevel.wait_readable(session_fd) * #log.debug('%s: fuse fd readable, unparking next task.', name) * except trio.ClosedResourceError: # <<<<<<<<<<<<<< * log.debug('FUSE fd about to be closed.') * return False */ __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_trio); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 220, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_ClosedResourceError); if (unlikely(!__pyx_t_20)) __PYX_ERR(2, 220, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_21 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_20); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; if (__pyx_t_21) { __Pyx_AddTraceback("pyfuse3._wait_fuse_readable", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(2, 220, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); /* "src/pyfuse3/internal.pxi":221 * #log.debug('%s: fuse fd readable, unparking next task.', name) * except trio.ClosedResourceError: * log.debug('FUSE fd about to be closed.') # <<<<<<<<<<<<<< * return False * */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_log); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 221, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_debug); if (unlikely(!__pyx_t_22)) __PYX_ERR(2, 221, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_22); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_22))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_22); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_22, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_kp_u_FUSE_fd_about_to_be_closed}; __pyx_t_20 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_20)) __PYX_ERR(2, 221, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; /* "src/pyfuse3/internal.pxi":222 * except trio.ClosedResourceError: * log.debug('FUSE fd about to be closed.') * return False # <<<<<<<<<<<<<< * * finally: */ __Pyx_XDECREF(__pyx_r); __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L10_except_return; } goto __pyx_L9_except_error; /* "src/pyfuse3/internal.pxi":210 * #name = trio.lowlevel.current_task().name * worker_data.active_readers += 1 * try: # <<<<<<<<<<<<<< * #log.debug('%s: Waiting for read lock...', name) * async with worker_data.read_lock: */ __pyx_L9_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L5_error; __pyx_L11_try_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L4_return; __pyx_L10_except_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L4_return; __pyx_L12_try_end:; } } /* "src/pyfuse3/internal.pxi":225 * * finally: * worker_data.active_readers -= 1 # <<<<<<<<<<<<<< * * return True */ /*finally:*/ { /*normal exit:*/{ __pyx_v_7pyfuse3_worker_data->active_readers = (__pyx_v_7pyfuse3_worker_data->active_readers - 1); goto __pyx_L6; } __pyx_L5_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_4, &__pyx_t_17, &__pyx_t_16); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_16); __pyx_t_21 = __pyx_lineno; __pyx_t_23 = __pyx_clineno; __pyx_t_24 = __pyx_filename; { __pyx_v_7pyfuse3_worker_data->active_readers = (__pyx_v_7pyfuse3_worker_data->active_readers - 1); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_17, __pyx_t_16); } __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_1); __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_23; __pyx_filename = __pyx_t_24; goto __pyx_L1_error; } __pyx_L4_return: { __Pyx_PyThreadState_assign __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __pyx_t_14 = __pyx_r; __pyx_r = 0; __pyx_v_7pyfuse3_worker_data->active_readers = (__pyx_v_7pyfuse3_worker_data->active_readers - 1); __pyx_r = __pyx_t_14; __pyx_t_14 = 0; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); } __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_4); __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; goto __pyx_L0; } __pyx_L6:; } /* "src/pyfuse3/internal.pxi":227 * worker_data.active_readers -= 1 * * return True # <<<<<<<<<<<<<< * * @async_wrapper */ __Pyx_XDECREF(__pyx_r); __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_True); goto __pyx_L0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/internal.pxi":201 * cdef _WorkerData worker_data * * async def _wait_fuse_readable(): # <<<<<<<<<<<<<< * '''Wait for FUSE fd to become readable * */ /* function exit code */ __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_20); __Pyx_XDECREF(__pyx_t_22); __Pyx_AddTraceback("_wait_fuse_readable", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_94generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "src/pyfuse3/internal.pxi":229 * return True * * @async_wrapper # <<<<<<<<<<<<<< * async def _session_loop(nursery, int min_tasks, int max_tasks): * cdef int res */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_93_session_loop(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_92_session_loop, "_session_loop(nursery, int min_tasks, int max_tasks)"); static PyMethodDef __pyx_mdef_7pyfuse3_93_session_loop = {"_session_loop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_93_session_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_92_session_loop}; static PyObject *__pyx_pw_7pyfuse3_93_session_loop(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_nursery = 0; int __pyx_v_min_tasks; int __pyx_v_max_tasks; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_session_loop (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nursery,&__pyx_n_s_min_tasks,&__pyx_n_s_max_tasks,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nursery)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 229, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_min_tasks)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 229, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_session_loop", 1, 3, 3, 1); __PYX_ERR(2, 229, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_max_tasks)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 229, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_session_loop", 1, 3, 3, 2); __PYX_ERR(2, 229, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_session_loop") < 0)) __PYX_ERR(2, 229, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_nursery = values[0]; __pyx_v_min_tasks = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_min_tasks == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 230, __pyx_L3_error) __pyx_v_max_tasks = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_max_tasks == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 230, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_session_loop", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 229, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3._session_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_92_session_loop(__pyx_self, __pyx_v_nursery, __pyx_v_min_tasks, __pyx_v_max_tasks); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_92_session_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nursery, int __pyx_v_min_tasks, int __pyx_v_max_tasks) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_session_loop", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_30__session_loop(__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(2, 229, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_nursery = __pyx_v_nursery; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_nursery); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_nursery); __pyx_cur_scope->__pyx_v_min_tasks = __pyx_v_min_tasks; __pyx_cur_scope->__pyx_v_max_tasks = __pyx_v_max_tasks; { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_94generator30, __pyx_codeobj__35, (PyObject *) __pyx_cur_scope, __pyx_n_s_session_loop, __pyx_n_s_session_loop, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3._session_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_94generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_session_loop", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L8_resume_from_await; case 2: goto __pyx_L14_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 229, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":234 * cdef fuse_buf buf * * name = trio.lowlevel.current_task().name # <<<<<<<<<<<<<< * * buf.mem = NULL */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_trio); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lowlevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_current_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_name = __pyx_t_2; __pyx_t_2 = 0; /* "src/pyfuse3/internal.pxi":236 * name = trio.lowlevel.current_task().name * * buf.mem = NULL # <<<<<<<<<<<<<< * buf.size = 0 * buf.pos = 0 */ __pyx_cur_scope->__pyx_v_buf.mem = NULL; /* "src/pyfuse3/internal.pxi":237 * * buf.mem = NULL * buf.size = 0 # <<<<<<<<<<<<<< * buf.pos = 0 * buf.flags = 0 */ __pyx_cur_scope->__pyx_v_buf.size = 0; /* "src/pyfuse3/internal.pxi":238 * buf.mem = NULL * buf.size = 0 * buf.pos = 0 # <<<<<<<<<<<<<< * buf.flags = 0 * while not fuse_session_exited(session): */ __pyx_cur_scope->__pyx_v_buf.pos = 0; /* "src/pyfuse3/internal.pxi":239 * buf.size = 0 * buf.pos = 0 * buf.flags = 0 # <<<<<<<<<<<<<< * while not fuse_session_exited(session): * if worker_data.active_readers > min_tasks: */ __pyx_cur_scope->__pyx_v_buf.flags = 0; /* "src/pyfuse3/internal.pxi":240 * buf.pos = 0 * buf.flags = 0 * while not fuse_session_exited(session): # <<<<<<<<<<<<<< * if worker_data.active_readers > min_tasks: * log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', */ while (1) { __pyx_t_5 = (!fuse_session_exited(__pyx_v_7pyfuse3_session)); if (!__pyx_t_5) break; /* "src/pyfuse3/internal.pxi":241 * buf.flags = 0 * while not fuse_session_exited(session): * if worker_data.active_readers > min_tasks: # <<<<<<<<<<<<<< * log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', * name, worker_data.task_count, worker_data.active_readers) */ __pyx_t_5 = (__pyx_v_7pyfuse3_worker_data->active_readers > __pyx_cur_scope->__pyx_v_min_tasks); if (__pyx_t_5) { /* "src/pyfuse3/internal.pxi":242 * while not fuse_session_exited(session): * if worker_data.active_readers > min_tasks: * log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', # <<<<<<<<<<<<<< * name, worker_data.task_count, worker_data.active_readers) * break */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":243 * if worker_data.active_readers > min_tasks: * log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', * name, worker_data.task_count, worker_data.active_readers) # <<<<<<<<<<<<<< * break * */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_7pyfuse3_worker_data->task_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_7pyfuse3_worker_data->active_readers); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_7, __pyx_kp_u_s_too_many_idle_tasks_d_total_d, __pyx_cur_scope->__pyx_v_name, __pyx_t_1, __pyx_t_6}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/internal.pxi":244 * log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', * name, worker_data.task_count, worker_data.active_readers) * break # <<<<<<<<<<<<<< * * if not await _wait_fuse_readable(): */ goto __pyx_L5_break; /* "src/pyfuse3/internal.pxi":241 * buf.flags = 0 * while not fuse_session_exited(session): * if worker_data.active_readers > min_tasks: # <<<<<<<<<<<<<< * log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', * name, worker_data.task_count, worker_data.active_readers) */ } /* "src/pyfuse3/internal.pxi":246 * break * * if not await _wait_fuse_readable(): # <<<<<<<<<<<<<< * break * */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_wait_fuse_readable); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_await:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 246, __pyx_L1_error) __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2); } else { __pyx_t_2 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(2, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = (!__pyx_t_5); if (__pyx_t_8) { /* "src/pyfuse3/internal.pxi":247 * * if not await _wait_fuse_readable(): * break # <<<<<<<<<<<<<< * * res = fuse_session_receive_buf(session, &buf) */ goto __pyx_L5_break; /* "src/pyfuse3/internal.pxi":246 * break * * if not await _wait_fuse_readable(): # <<<<<<<<<<<<<< * break * */ } /* "src/pyfuse3/internal.pxi":249 * break * * res = fuse_session_receive_buf(session, &buf) # <<<<<<<<<<<<<< * if not worker_data.active_readers and worker_data.task_count < max_tasks: * worker_data.task_count += 1 */ __pyx_cur_scope->__pyx_v_res = fuse_session_receive_buf(__pyx_v_7pyfuse3_session, (&__pyx_cur_scope->__pyx_v_buf)); /* "src/pyfuse3/internal.pxi":250 * * res = fuse_session_receive_buf(session, &buf) * if not worker_data.active_readers and worker_data.task_count < max_tasks: # <<<<<<<<<<<<<< * worker_data.task_count += 1 * log.debug('%s: No tasks waiting, starting another worker (now %d total).', */ __pyx_t_5 = (!(__pyx_v_7pyfuse3_worker_data->active_readers != 0)); if (__pyx_t_5) { } else { __pyx_t_8 = __pyx_t_5; goto __pyx_L10_bool_binop_done; } __pyx_t_5 = (__pyx_v_7pyfuse3_worker_data->task_count < __pyx_cur_scope->__pyx_v_max_tasks); __pyx_t_8 = __pyx_t_5; __pyx_L10_bool_binop_done:; if (__pyx_t_8) { /* "src/pyfuse3/internal.pxi":251 * res = fuse_session_receive_buf(session, &buf) * if not worker_data.active_readers and worker_data.task_count < max_tasks: * worker_data.task_count += 1 # <<<<<<<<<<<<<< * log.debug('%s: No tasks waiting, starting another worker (now %d total).', * name, worker_data.task_count) */ __pyx_v_7pyfuse3_worker_data->task_count = (__pyx_v_7pyfuse3_worker_data->task_count + 1); /* "src/pyfuse3/internal.pxi":252 * if not worker_data.active_readers and worker_data.task_count < max_tasks: * worker_data.task_count += 1 * log.debug('%s: No tasks waiting, starting another worker (now %d total).', # <<<<<<<<<<<<<< * name, worker_data.task_count) * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "src/pyfuse3/internal.pxi":253 * worker_data.task_count += 1 * log.debug('%s: No tasks waiting, starting another worker (now %d total).', * name, worker_data.task_count) # <<<<<<<<<<<<<< * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, * name=worker_data.get_name()) */ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_7pyfuse3_worker_data->task_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_kp_u_s_No_tasks_waiting_starting_ano, __pyx_cur_scope->__pyx_v_name, __pyx_t_3}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/internal.pxi":254 * log.debug('%s: No tasks waiting, starting another worker (now %d total).', * name, worker_data.task_count) * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, # <<<<<<<<<<<<<< * name=worker_data.get_name()) * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_nursery, __pyx_n_s_start_soon); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_session_loop); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_min_tasks); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_max_tasks); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6)) __PYX_ERR(2, 254, __pyx_L1_error); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_nursery); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_nursery); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_cur_scope->__pyx_v_nursery)) __PYX_ERR(2, 254, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3)) __PYX_ERR(2, 254, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_1)) __PYX_ERR(2, 254, __pyx_L1_error); __pyx_t_6 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":255 * name, worker_data.task_count) * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, * name=worker_data.get_name()) # <<<<<<<<<<<<<< * * if res == -errno.EINTR: */ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = ((struct __pyx_vtabstruct_7pyfuse3__WorkerData *)__pyx_v_7pyfuse3_worker_data->__pyx_vtab)->get_name(__pyx_v_7pyfuse3_worker_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_name, __pyx_t_3) < 0) __PYX_ERR(2, 255, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "src/pyfuse3/internal.pxi":254 * log.debug('%s: No tasks waiting, starting another worker (now %d total).', * name, worker_data.task_count) * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, # <<<<<<<<<<<<<< * name=worker_data.get_name()) * */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "src/pyfuse3/internal.pxi":250 * * res = fuse_session_receive_buf(session, &buf) * if not worker_data.active_readers and worker_data.task_count < max_tasks: # <<<<<<<<<<<<<< * worker_data.task_count += 1 * log.debug('%s: No tasks waiting, starting another worker (now %d total).', */ } /* "src/pyfuse3/internal.pxi":257 * name=worker_data.get_name()) * * if res == -errno.EINTR: # <<<<<<<<<<<<<< * continue * elif res < 0: */ __pyx_t_8 = (__pyx_cur_scope->__pyx_v_res == (-EINTR)); if (__pyx_t_8) { /* "src/pyfuse3/internal.pxi":258 * * if res == -errno.EINTR: * continue # <<<<<<<<<<<<<< * elif res < 0: * raise OSError(-res, 'fuse_session_receive_buf failed with ' */ goto __pyx_L4_continue; /* "src/pyfuse3/internal.pxi":257 * name=worker_data.get_name()) * * if res == -errno.EINTR: # <<<<<<<<<<<<<< * continue * elif res < 0: */ } /* "src/pyfuse3/internal.pxi":259 * if res == -errno.EINTR: * continue * elif res < 0: # <<<<<<<<<<<<<< * raise OSError(-res, 'fuse_session_receive_buf failed with ' * + strerror(-res)) */ __pyx_t_8 = (__pyx_cur_scope->__pyx_v_res < 0); if (unlikely(__pyx_t_8)) { /* "src/pyfuse3/internal.pxi":260 * continue * elif res < 0: * raise OSError(-res, 'fuse_session_receive_buf failed with ' # <<<<<<<<<<<<<< * + strerror(-res)) * elif res == 0: */ __pyx_t_3 = __Pyx_PyInt_From_int((-__pyx_cur_scope->__pyx_v_res)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "src/pyfuse3/internal.pxi":261 * elif res < 0: * raise OSError(-res, 'fuse_session_receive_buf failed with ' * + strerror(-res)) # <<<<<<<<<<<<<< * elif res == 0: * break */ __pyx_t_1 = __pyx_f_7pyfuse3_strerror((-__pyx_cur_scope->__pyx_v_res)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyNumber_Add(__pyx_kp_u_fuse_session_receive_buf_failed, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "src/pyfuse3/internal.pxi":260 * continue * elif res < 0: * raise OSError(-res, 'fuse_session_receive_buf failed with ' # <<<<<<<<<<<<<< * + strerror(-res)) * elif res == 0: */ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3)) __PYX_ERR(2, 260, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7)) __PYX_ERR(2, 260, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(2, 260, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":259 * if res == -errno.EINTR: * continue * elif res < 0: # <<<<<<<<<<<<<< * raise OSError(-res, 'fuse_session_receive_buf failed with ' * + strerror(-res)) */ } /* "src/pyfuse3/internal.pxi":262 * raise OSError(-res, 'fuse_session_receive_buf failed with ' * + strerror(-res)) * elif res == 0: # <<<<<<<<<<<<<< * break * */ __pyx_t_8 = (__pyx_cur_scope->__pyx_v_res == 0); if (__pyx_t_8) { /* "src/pyfuse3/internal.pxi":263 * + strerror(-res)) * elif res == 0: * break # <<<<<<<<<<<<<< * * # When fuse_session_process_buf() calls back into one of our handler */ goto __pyx_L5_break; /* "src/pyfuse3/internal.pxi":262 * raise OSError(-res, 'fuse_session_receive_buf failed with ' * + strerror(-res)) * elif res == 0: # <<<<<<<<<<<<<< * break * */ } /* "src/pyfuse3/internal.pxi":269 * # py_retval. * #log.debug('%s: processing request...', name) * save_retval(None) # <<<<<<<<<<<<<< * fuse_session_process_buf(session, &buf) * if py_retval is not None: */ __pyx_f_7pyfuse3_save_retval(Py_None); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 269, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":270 * #log.debug('%s: processing request...', name) * save_retval(None) * fuse_session_process_buf(session, &buf) # <<<<<<<<<<<<<< * if py_retval is not None: * await py_retval */ fuse_session_process_buf(__pyx_v_7pyfuse3_session, (&__pyx_cur_scope->__pyx_v_buf)); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 270, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":271 * save_retval(None) * fuse_session_process_buf(session, &buf) * if py_retval is not None: # <<<<<<<<<<<<<< * await py_retval * #log.debug('%s: processing complete.', name) */ __pyx_t_8 = (__pyx_v_7pyfuse3_py_retval != Py_None); if (__pyx_t_8) { /* "src/pyfuse3/internal.pxi":272 * fuse_session_process_buf(session, &buf) * if py_retval is not None: * await py_retval # <<<<<<<<<<<<<< * #log.debug('%s: processing complete.', name) * */ __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_v_7pyfuse3_py_retval); __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L14_resume_from_await:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 272, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(2, 272, __pyx_L1_error) } } /* "src/pyfuse3/internal.pxi":271 * save_retval(None) * fuse_session_process_buf(session, &buf) * if py_retval is not None: # <<<<<<<<<<<<<< * await py_retval * #log.debug('%s: processing complete.', name) */ } __pyx_L4_continue:; } __pyx_L5_break:; /* "src/pyfuse3/internal.pxi":275 * #log.debug('%s: processing complete.', name) * * log.debug('%s: terminated', name) # <<<<<<<<<<<<<< * stdlib.free(buf.mem) * worker_data.task_count -= 1 */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_kp_u_s_terminated, __pyx_cur_scope->__pyx_v_name}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "src/pyfuse3/internal.pxi":276 * * log.debug('%s: terminated', name) * stdlib.free(buf.mem) # <<<<<<<<<<<<<< * worker_data.task_count -= 1 */ free(__pyx_cur_scope->__pyx_v_buf.mem); /* "src/pyfuse3/internal.pxi":277 * log.debug('%s: terminated', name) * stdlib.free(buf.mem) * worker_data.task_count -= 1 # <<<<<<<<<<<<<< */ __pyx_v_7pyfuse3_worker_data->task_count = (__pyx_v_7pyfuse3_worker_data->task_count - 1); CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "src/pyfuse3/internal.pxi":229 * return True * * @async_wrapper # <<<<<<<<<<<<<< * async def _session_loop(nursery, int min_tasks, int max_tasks): * cdef int res */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("_session_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":141 * cdef readonly mode_t umask * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("RequestContext instances can't be pickled") * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_1__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_14RequestContext___getstate__, "RequestContext.__getstate__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_14RequestContext_1__getstate__ = {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_14RequestContext_1__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_14RequestContext___getstate__}; static PyObject *__pyx_pw_7pyfuse3_14RequestContext_1__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__getstate__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__getstate__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_14RequestContext___getstate__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext___getstate__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getstate__", 1); /* "pyfuse3/__init__.pyx":142 * * def __getstate__(self): * raise PicklingError("RequestContext instances can't be pickled") # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PicklingError); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_RequestContext_instances_can_t_b}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(3, 142, __pyx_L1_error) /* "pyfuse3/__init__.pyx":141 * cdef readonly mode_t umask * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("RequestContext instances can't be pickled") * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.RequestContext.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":136 * ''' * * cdef readonly uid_t uid # <<<<<<<<<<<<<< * cdef readonly pid_t pid * cdef readonly gid_t gid */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3uid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3uid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_14RequestContext_3uid___get__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext_3uid___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uid_t(__pyx_v_self->uid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.RequestContext.uid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":137 * * cdef readonly uid_t uid * cdef readonly pid_t pid # <<<<<<<<<<<<<< * cdef readonly gid_t gid * cdef readonly mode_t umask */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3pid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3pid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_14RequestContext_3pid___get__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext_3pid___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_pid_t(__pyx_v_self->pid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.RequestContext.pid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":138 * cdef readonly uid_t uid * cdef readonly pid_t pid * cdef readonly gid_t gid # <<<<<<<<<<<<<< * cdef readonly mode_t umask * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3gid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3gid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_14RequestContext_3gid___get__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext_3gid___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_gid_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.RequestContext.gid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":139 * cdef readonly pid_t pid * cdef readonly gid_t gid * cdef readonly mode_t umask # <<<<<<<<<<<<<< * * def __getstate__(self): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_5umask_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_5umask_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_14RequestContext_5umask___get__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext_5umask___get__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_mode_t(__pyx_v_self->umask); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.RequestContext.umask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_14RequestContext_2__reduce_cython__, "RequestContext.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_14RequestContext_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_14RequestContext_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_14RequestContext_2__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_14RequestContext_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_14RequestContext_2__reduce_cython__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext_2__reduce_cython__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":5 * cdef object _dict * cdef bint use_setstate * state = (self.gid, self.pid, self.uid, self.umask) # <<<<<<<<<<<<<< * _dict = getattr(self, '__dict__', None) * if _dict is not None: */ __pyx_t_1 = __Pyx_PyInt_From_gid_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_pid_t(__pyx_v_self->pid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_uid_t(__pyx_v_self->uid); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_mode_t(__pyx_v_self->umask); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4)) __PYX_ERR(0, 5, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_v_state = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":6 * cdef bint use_setstate * state = (self.gid, self.pid, self.uid, self.umask) * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< * if _dict is not None: * state += (_dict,) */ __pyx_t_5 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v__dict = __pyx_t_5; __pyx_t_5 = 0; /* "(tree fragment)":7 * state = (self.gid, self.pid, self.uid, self.umask) * _dict = getattr(self, '__dict__', None) * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ __pyx_t_6 = (__pyx_v__dict != Py_None); if (__pyx_t_6) { /* "(tree fragment)":8 * _dict = getattr(self, '__dict__', None) * if _dict is not None: * state += (_dict,) # <<<<<<<<<<<<<< * use_setstate = True * else: */ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v__dict); __Pyx_GIVEREF(__pyx_v__dict); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v__dict)) __PYX_ERR(0, 8, __pyx_L1_error); __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); __pyx_t_4 = 0; /* "(tree fragment)":9 * if _dict is not None: * state += (_dict,) * use_setstate = True # <<<<<<<<<<<<<< * else: * use_setstate = False */ __pyx_v_use_setstate = 1; /* "(tree fragment)":7 * state = (self.gid, self.pid, self.uid, self.umask) * _dict = getattr(self, '__dict__', None) * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ goto __pyx_L3; } /* "(tree fragment)":11 * use_setstate = True * else: * use_setstate = False # <<<<<<<<<<<<<< * if use_setstate: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, None), state */ /*else*/ { __pyx_v_use_setstate = 0; } __pyx_L3:; /* "(tree fragment)":12 * else: * use_setstate = False * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, None), state * else: */ if (__pyx_v_use_setstate) { /* "(tree fragment)":13 * use_setstate = False * if use_setstate: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, None), state # <<<<<<<<<<<<<< * else: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) */ __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RequestContext); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_int_240542287); __Pyx_GIVEREF(__pyx_int_240542287); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_240542287)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, Py_None)) __PYX_ERR(0, 13, __pyx_L1_error); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state)) __PYX_ERR(0, 13, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "(tree fragment)":12 * else: * use_setstate = False * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, None), state * else: */ } /* "(tree fragment)":15 * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, None), state * else: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_RequestContext__set_state(self, __pyx_state) */ /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_RequestContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_int_240542287); __Pyx_GIVEREF(__pyx_int_240542287); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_240542287)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(0, 15, __pyx_L1_error); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(0, 15, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.RequestContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); __Pyx_XDECREF(__pyx_v__dict); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":16 * else: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_RequestContext__set_state(self, __pyx_state) */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_14RequestContext_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_14RequestContext_4__setstate_cython__, "RequestContext.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_14RequestContext_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_14RequestContext_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_14RequestContext_4__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_14RequestContext_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 16, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 16, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.RequestContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_14RequestContext_4__setstate_cython__(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_14RequestContext_4__setstate_cython__(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":17 * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_RequestContext__set_state(self, __pyx_state) # <<<<<<<<<<<<<< */ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(0, 17, __pyx_L1_error) __pyx_t_1 = __pyx_f_7pyfuse3___pyx_unpickle_RequestContext__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":16 * else: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_RequestContext__set_state(self, __pyx_state) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.RequestContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":160 * cdef readonly object update_size * * def __cinit__(self): # <<<<<<<<<<<<<< * self.update_atime = False * self.update_mtime = False */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_13SetattrFields_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7pyfuse3_13SetattrFields_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields___cinit__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_13SetattrFields___cinit__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 1); /* "pyfuse3/__init__.pyx":161 * * def __cinit__(self): * self.update_atime = False # <<<<<<<<<<<<<< * self.update_mtime = False * self.update_ctime = False */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_atime); __Pyx_DECREF(__pyx_v_self->update_atime); __pyx_v_self->update_atime = Py_False; /* "pyfuse3/__init__.pyx":162 * def __cinit__(self): * self.update_atime = False * self.update_mtime = False # <<<<<<<<<<<<<< * self.update_ctime = False * self.update_mode = False */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_mtime); __Pyx_DECREF(__pyx_v_self->update_mtime); __pyx_v_self->update_mtime = Py_False; /* "pyfuse3/__init__.pyx":163 * self.update_atime = False * self.update_mtime = False * self.update_ctime = False # <<<<<<<<<<<<<< * self.update_mode = False * self.update_uid = False */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_ctime); __Pyx_DECREF(__pyx_v_self->update_ctime); __pyx_v_self->update_ctime = Py_False; /* "pyfuse3/__init__.pyx":164 * self.update_mtime = False * self.update_ctime = False * self.update_mode = False # <<<<<<<<<<<<<< * self.update_uid = False * self.update_gid = False */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_mode); __Pyx_DECREF(__pyx_v_self->update_mode); __pyx_v_self->update_mode = Py_False; /* "pyfuse3/__init__.pyx":165 * self.update_ctime = False * self.update_mode = False * self.update_uid = False # <<<<<<<<<<<<<< * self.update_gid = False * self.update_size = False */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_uid); __Pyx_DECREF(__pyx_v_self->update_uid); __pyx_v_self->update_uid = Py_False; /* "pyfuse3/__init__.pyx":166 * self.update_mode = False * self.update_uid = False * self.update_gid = False # <<<<<<<<<<<<<< * self.update_size = False * */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_gid); __Pyx_DECREF(__pyx_v_self->update_gid); __pyx_v_self->update_gid = Py_False; /* "pyfuse3/__init__.pyx":167 * self.update_uid = False * self.update_gid = False * self.update_size = False # <<<<<<<<<<<<<< * * def __getstate__(self): */ __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->update_size); __Pyx_DECREF(__pyx_v_self->update_size); __pyx_v_self->update_size = Py_False; /* "pyfuse3/__init__.pyx":160 * cdef readonly object update_size * * def __cinit__(self): # <<<<<<<<<<<<<< * self.update_atime = False * self.update_mtime = False */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":169 * self.update_size = False * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("SetattrFields instances can't be pickled") * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_3__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_13SetattrFields_2__getstate__, "SetattrFields.__getstate__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_13SetattrFields_3__getstate__ = {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13SetattrFields_3__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_13SetattrFields_2__getstate__}; static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_3__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__getstate__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__getstate__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_2__getstate__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_2__getstate__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getstate__", 1); /* "pyfuse3/__init__.pyx":170 * * def __getstate__(self): * raise PicklingError("SetattrFields instances can't be pickled") # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PicklingError); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_SetattrFields_instances_can_t_be}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(3, 170, __pyx_L1_error) /* "pyfuse3/__init__.pyx":169 * self.update_size = False * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("SetattrFields instances can't be pickled") * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.SetattrFields.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":152 * ''' * * cdef readonly object update_atime # <<<<<<<<<<<<<< * cdef readonly object update_mtime * cdef readonly object update_ctime */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_12update_atime_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_12update_atime_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_12update_atime___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_12update_atime___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_atime); __pyx_r = __pyx_v_self->update_atime; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":153 * * cdef readonly object update_atime * cdef readonly object update_mtime # <<<<<<<<<<<<<< * cdef readonly object update_ctime * cdef readonly object update_mode */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_12update_mtime_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_12update_mtime_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_12update_mtime___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_12update_mtime___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_mtime); __pyx_r = __pyx_v_self->update_mtime; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":154 * cdef readonly object update_atime * cdef readonly object update_mtime * cdef readonly object update_ctime # <<<<<<<<<<<<<< * cdef readonly object update_mode * cdef readonly object update_uid */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_12update_ctime_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_12update_ctime_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_12update_ctime___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_12update_ctime___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_ctime); __pyx_r = __pyx_v_self->update_ctime; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":155 * cdef readonly object update_mtime * cdef readonly object update_ctime * cdef readonly object update_mode # <<<<<<<<<<<<<< * cdef readonly object update_uid * cdef readonly object update_gid */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_11update_mode_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_11update_mode_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_11update_mode___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_11update_mode___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_mode); __pyx_r = __pyx_v_self->update_mode; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":156 * cdef readonly object update_ctime * cdef readonly object update_mode * cdef readonly object update_uid # <<<<<<<<<<<<<< * cdef readonly object update_gid * cdef readonly object update_size */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_10update_uid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_10update_uid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_10update_uid___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_10update_uid___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_uid); __pyx_r = __pyx_v_self->update_uid; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":157 * cdef readonly object update_mode * cdef readonly object update_uid * cdef readonly object update_gid # <<<<<<<<<<<<<< * cdef readonly object update_size * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_10update_gid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_10update_gid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_10update_gid___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_10update_gid___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_gid); __pyx_r = __pyx_v_self->update_gid; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":158 * cdef readonly object update_uid * cdef readonly object update_gid * cdef readonly object update_size # <<<<<<<<<<<<<< * * def __cinit__(self): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_11update_size_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_11update_size_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_11update_size___get__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_11update_size___get__(struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->update_size); __pyx_r = __pyx_v_self->update_size; goto __pyx_L0; /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_5__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_13SetattrFields_4__reduce_cython__, "SetattrFields.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_13SetattrFields_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13SetattrFields_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_13SetattrFields_4__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_5__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_4__reduce_cython__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.SetattrFields.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_7__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_13SetattrFields_6__setstate_cython__, "SetattrFields.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_13SetattrFields_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13SetattrFields_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_13SetattrFields_6__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_13SetattrFields_7__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.SetattrFields.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_13SetattrFields_6__setstate_cython__(((struct __pyx_obj_7pyfuse3_SetattrFields *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_13SetattrFields_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.SetattrFields.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":187 * cdef struct_stat *attr * * def __cinit__(self): # <<<<<<<<<<<<<< * string.memset(&self.fuse_param, 0, sizeof(fuse_entry_param)) * self.attr = &self.fuse_param.attr */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes___cinit__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes___cinit__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { int __pyx_r; /* "pyfuse3/__init__.pyx":188 * * def __cinit__(self): * string.memset(&self.fuse_param, 0, sizeof(fuse_entry_param)) # <<<<<<<<<<<<<< * self.attr = &self.fuse_param.attr * self.fuse_param.generation = 0 */ (void)(memset((&__pyx_v_self->fuse_param), 0, (sizeof(struct fuse_entry_param)))); /* "pyfuse3/__init__.pyx":189 * def __cinit__(self): * string.memset(&self.fuse_param, 0, sizeof(fuse_entry_param)) * self.attr = &self.fuse_param.attr # <<<<<<<<<<<<<< * self.fuse_param.generation = 0 * self.fuse_param.entry_timeout = 300 */ __pyx_v_self->attr = (&__pyx_v_self->fuse_param.attr); /* "pyfuse3/__init__.pyx":190 * string.memset(&self.fuse_param, 0, sizeof(fuse_entry_param)) * self.attr = &self.fuse_param.attr * self.fuse_param.generation = 0 # <<<<<<<<<<<<<< * self.fuse_param.entry_timeout = 300 * self.fuse_param.attr_timeout = 300 */ __pyx_v_self->fuse_param.generation = 0; /* "pyfuse3/__init__.pyx":191 * self.attr = &self.fuse_param.attr * self.fuse_param.generation = 0 * self.fuse_param.entry_timeout = 300 # <<<<<<<<<<<<<< * self.fuse_param.attr_timeout = 300 * */ __pyx_v_self->fuse_param.entry_timeout = 300.0; /* "pyfuse3/__init__.pyx":192 * self.fuse_param.generation = 0 * self.fuse_param.entry_timeout = 300 * self.fuse_param.attr_timeout = 300 # <<<<<<<<<<<<<< * * self.attr.st_mode = S_IFREG */ __pyx_v_self->fuse_param.attr_timeout = 300.0; /* "pyfuse3/__init__.pyx":194 * self.fuse_param.attr_timeout = 300 * * self.attr.st_mode = S_IFREG # <<<<<<<<<<<<<< * self.attr.st_blksize = 4096 * self.attr.st_nlink = 1 */ __pyx_v_self->attr->st_mode = S_IFREG; /* "pyfuse3/__init__.pyx":195 * * self.attr.st_mode = S_IFREG * self.attr.st_blksize = 4096 # <<<<<<<<<<<<<< * self.attr.st_nlink = 1 * */ __pyx_v_self->attr->st_blksize = 0x1000; /* "pyfuse3/__init__.pyx":196 * self.attr.st_mode = S_IFREG * self.attr.st_blksize = 4096 * self.attr.st_nlink = 1 # <<<<<<<<<<<<<< * * @property */ __pyx_v_self->attr->st_nlink = 1; /* "pyfuse3/__init__.pyx":187 * cdef struct_stat *attr * * def __cinit__(self): # <<<<<<<<<<<<<< * string.memset(&self.fuse_param, 0, sizeof(fuse_entry_param)) * self.attr = &self.fuse_param.attr */ /* function exit code */ __pyx_r = 0; return __pyx_r; } /* "pyfuse3/__init__.pyx":198 * self.attr.st_nlink = 1 * * @property # <<<<<<<<<<<<<< * def st_ino(self): * return self.fuse_param.ino */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_6st_ino_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_6st_ino_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6st_ino___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6st_ino___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":200 * @property * def st_ino(self): * return self.fuse_param.ino # <<<<<<<<<<<<<< * @st_ino.setter * def st_ino(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fuse_ino_t(__pyx_v_self->fuse_param.ino); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":198 * self.attr.st_nlink = 1 * * @property # <<<<<<<<<<<<<< * def st_ino(self): * return self.fuse_param.ino */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_ino.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":201 * def st_ino(self): * return self.fuse_param.ino * @st_ino.setter # <<<<<<<<<<<<<< * def st_ino(self, val): * self.fuse_param.ino = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_6st_ino_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_6st_ino_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6st_ino_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_6st_ino_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fuse_ino_t __pyx_t_1; ino_t __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":203 * @st_ino.setter * def st_ino(self, val): * self.fuse_param.ino = val # <<<<<<<<<<<<<< * self.attr.st_ino = val * */ __pyx_t_1 = __Pyx_PyInt_As_fuse_ino_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fuse_ino_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 203, __pyx_L1_error) __pyx_v_self->fuse_param.ino = __pyx_t_1; /* "pyfuse3/__init__.pyx":204 * def st_ino(self, val): * self.fuse_param.ino = val * self.attr.st_ino = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_2 = __Pyx_PyInt_As_ino_t(__pyx_v_val); if (unlikely((__pyx_t_2 == ((ino_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 204, __pyx_L1_error) __pyx_v_self->attr->st_ino = __pyx_t_2; /* "pyfuse3/__init__.pyx":201 * def st_ino(self): * return self.fuse_param.ino * @st_ino.setter # <<<<<<<<<<<<<< * def st_ino(self, val): * self.fuse_param.ino = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_ino.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":206 * self.attr.st_ino = val * * @property # <<<<<<<<<<<<<< * def generation(self): * '''The inode generation number''' */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_10generation_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_10generation_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_10generation___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_10generation___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":209 * def generation(self): * '''The inode generation number''' * return self.fuse_param.generation # <<<<<<<<<<<<<< * @generation.setter * def generation(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->fuse_param.generation); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":206 * self.attr.st_ino = val * * @property # <<<<<<<<<<<<<< * def generation(self): * '''The inode generation number''' */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.generation.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":210 * '''The inode generation number''' * return self.fuse_param.generation * @generation.setter # <<<<<<<<<<<<<< * def generation(self, val): * self.fuse_param.generation = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_10generation_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_10generation_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_10generation_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_10generation_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; uint64_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":212 * @generation.setter * def generation(self, val): * self.fuse_param.generation = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_uint64_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 212, __pyx_L1_error) __pyx_v_self->fuse_param.generation = __pyx_t_1; /* "pyfuse3/__init__.pyx":210 * '''The inode generation number''' * return self.fuse_param.generation * @generation.setter # <<<<<<<<<<<<<< * def generation(self, val): * self.fuse_param.generation = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.generation.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":214 * self.fuse_param.generation = val * * @property # <<<<<<<<<<<<<< * def attr_timeout(self): * '''Validity timeout for the attributes of the directory entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_12attr_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_12attr_timeout_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_12attr_timeout___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_12attr_timeout___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":220 * Floating point numbers may be used. Units are seconds. * ''' * return self.fuse_param.attr_timeout # <<<<<<<<<<<<<< * @attr_timeout.setter * def attr_timeout(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->fuse_param.attr_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":214 * self.fuse_param.generation = val * * @property # <<<<<<<<<<<<<< * def attr_timeout(self): * '''Validity timeout for the attributes of the directory entry */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.attr_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":221 * ''' * return self.fuse_param.attr_timeout * @attr_timeout.setter # <<<<<<<<<<<<<< * def attr_timeout(self, val): * self.fuse_param.attr_timeout = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_12attr_timeout_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_12attr_timeout_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_12attr_timeout_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_12attr_timeout_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; double __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":223 * @attr_timeout.setter * def attr_timeout(self, val): * self.fuse_param.attr_timeout = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_val); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 223, __pyx_L1_error) __pyx_v_self->fuse_param.attr_timeout = __pyx_t_1; /* "pyfuse3/__init__.pyx":221 * ''' * return self.fuse_param.attr_timeout * @attr_timeout.setter # <<<<<<<<<<<<<< * def attr_timeout(self, val): * self.fuse_param.attr_timeout = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.attr_timeout.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":225 * self.fuse_param.attr_timeout = val * * @property # <<<<<<<<<<<<<< * def entry_timeout(self): * '''Validity timeout for the name/existence of the directory entry */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_13entry_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_13entry_timeout_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_13entry_timeout___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_13entry_timeout___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":231 * Floating point numbers may be used. Units are seconds. * ''' * return self.fuse_param.entry_timeout # <<<<<<<<<<<<<< * @entry_timeout.setter * def entry_timeout(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->fuse_param.entry_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":225 * self.fuse_param.attr_timeout = val * * @property # <<<<<<<<<<<<<< * def entry_timeout(self): * '''Validity timeout for the name/existence of the directory entry */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.entry_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":232 * ''' * return self.fuse_param.entry_timeout * @entry_timeout.setter # <<<<<<<<<<<<<< * def entry_timeout(self, val): * self.fuse_param.entry_timeout = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_13entry_timeout_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_13entry_timeout_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_13entry_timeout_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_13entry_timeout_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; double __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":234 * @entry_timeout.setter * def entry_timeout(self, val): * self.fuse_param.entry_timeout = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_val); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 234, __pyx_L1_error) __pyx_v_self->fuse_param.entry_timeout = __pyx_t_1; /* "pyfuse3/__init__.pyx":232 * ''' * return self.fuse_param.entry_timeout * @entry_timeout.setter # <<<<<<<<<<<<<< * def entry_timeout(self, val): * self.fuse_param.entry_timeout = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.entry_timeout.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":236 * self.fuse_param.entry_timeout = val * * @property # <<<<<<<<<<<<<< * def st_mode(self): * return self.attr.st_mode */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7st_mode_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7st_mode_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_7st_mode___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_7st_mode___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":238 * @property * def st_mode(self): * return self.attr.st_mode # <<<<<<<<<<<<<< * @st_mode.setter * def st_mode(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_mode_t(__pyx_v_self->attr->st_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":236 * self.fuse_param.entry_timeout = val * * @property # <<<<<<<<<<<<<< * def st_mode(self): * return self.attr.st_mode */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_mode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":239 * def st_mode(self): * return self.attr.st_mode * @st_mode.setter # <<<<<<<<<<<<<< * def st_mode(self, val): * self.attr.st_mode = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_7st_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_7st_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_7st_mode_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_7st_mode_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; mode_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":241 * @st_mode.setter * def st_mode(self, val): * self.attr.st_mode = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_mode_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((mode_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 241, __pyx_L1_error) __pyx_v_self->attr->st_mode = __pyx_t_1; /* "pyfuse3/__init__.pyx":239 * def st_mode(self): * return self.attr.st_mode * @st_mode.setter # <<<<<<<<<<<<<< * def st_mode(self, val): * self.attr.st_mode = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_mode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":243 * self.attr.st_mode = val * * @property # <<<<<<<<<<<<<< * def st_nlink(self): * return self.attr.st_nlink */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_8st_nlink_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_8st_nlink_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_8st_nlink___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_8st_nlink___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":245 * @property * def st_nlink(self): * return self.attr.st_nlink # <<<<<<<<<<<<<< * @st_nlink.setter * def st_nlink(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_nlink_t(__pyx_v_self->attr->st_nlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":243 * self.attr.st_mode = val * * @property # <<<<<<<<<<<<<< * def st_nlink(self): * return self.attr.st_nlink */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_nlink.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":246 * def st_nlink(self): * return self.attr.st_nlink * @st_nlink.setter # <<<<<<<<<<<<<< * def st_nlink(self, val): * self.attr.st_nlink = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_8st_nlink_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_8st_nlink_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_8st_nlink_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_8st_nlink_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; nlink_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":248 * @st_nlink.setter * def st_nlink(self, val): * self.attr.st_nlink = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_nlink_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((nlink_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 248, __pyx_L1_error) __pyx_v_self->attr->st_nlink = __pyx_t_1; /* "pyfuse3/__init__.pyx":246 * def st_nlink(self): * return self.attr.st_nlink * @st_nlink.setter # <<<<<<<<<<<<<< * def st_nlink(self, val): * self.attr.st_nlink = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_nlink.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":250 * self.attr.st_nlink = val * * @property # <<<<<<<<<<<<<< * def st_uid(self): * return self.attr.st_uid */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_6st_uid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_6st_uid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6st_uid___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6st_uid___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":252 * @property * def st_uid(self): * return self.attr.st_uid # <<<<<<<<<<<<<< * @st_uid.setter * def st_uid(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uid_t(__pyx_v_self->attr->st_uid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":250 * self.attr.st_nlink = val * * @property # <<<<<<<<<<<<<< * def st_uid(self): * return self.attr.st_uid */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_uid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":253 * def st_uid(self): * return self.attr.st_uid * @st_uid.setter # <<<<<<<<<<<<<< * def st_uid(self, val): * self.attr.st_uid = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_6st_uid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_6st_uid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6st_uid_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_6st_uid_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; uid_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":255 * @st_uid.setter * def st_uid(self, val): * self.attr.st_uid = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_uid_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uid_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 255, __pyx_L1_error) __pyx_v_self->attr->st_uid = __pyx_t_1; /* "pyfuse3/__init__.pyx":253 * def st_uid(self): * return self.attr.st_uid * @st_uid.setter # <<<<<<<<<<<<<< * def st_uid(self, val): * self.attr.st_uid = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_uid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":257 * self.attr.st_uid = val * * @property # <<<<<<<<<<<<<< * def st_gid(self): * return self.attr.st_gid */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_6st_gid_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_6st_gid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6st_gid___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6st_gid___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":259 * @property * def st_gid(self): * return self.attr.st_gid # <<<<<<<<<<<<<< * @st_gid.setter * def st_gid(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_gid_t(__pyx_v_self->attr->st_gid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":257 * self.attr.st_uid = val * * @property # <<<<<<<<<<<<<< * def st_gid(self): * return self.attr.st_gid */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_gid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":260 * def st_gid(self): * return self.attr.st_gid * @st_gid.setter # <<<<<<<<<<<<<< * def st_gid(self, val): * self.attr.st_gid = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_6st_gid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_6st_gid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6st_gid_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_6st_gid_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; gid_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":262 * @st_gid.setter * def st_gid(self, val): * self.attr.st_gid = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_gid_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((gid_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 262, __pyx_L1_error) __pyx_v_self->attr->st_gid = __pyx_t_1; /* "pyfuse3/__init__.pyx":260 * def st_gid(self): * return self.attr.st_gid * @st_gid.setter # <<<<<<<<<<<<<< * def st_gid(self, val): * self.attr.st_gid = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_gid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":264 * self.attr.st_gid = val * * @property # <<<<<<<<<<<<<< * def st_rdev(self): * return self.attr.st_rdev */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7st_rdev_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7st_rdev_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_7st_rdev___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_7st_rdev___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":266 * @property * def st_rdev(self): * return self.attr.st_rdev # <<<<<<<<<<<<<< * @st_rdev.setter * def st_rdev(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_dev_t(__pyx_v_self->attr->st_rdev); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":264 * self.attr.st_gid = val * * @property # <<<<<<<<<<<<<< * def st_rdev(self): * return self.attr.st_rdev */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_rdev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":267 * def st_rdev(self): * return self.attr.st_rdev * @st_rdev.setter # <<<<<<<<<<<<<< * def st_rdev(self, val): * self.attr.st_rdev = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_7st_rdev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_7st_rdev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_7st_rdev_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_7st_rdev_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; dev_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":269 * @st_rdev.setter * def st_rdev(self, val): * self.attr.st_rdev = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_dev_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((dev_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 269, __pyx_L1_error) __pyx_v_self->attr->st_rdev = __pyx_t_1; /* "pyfuse3/__init__.pyx":267 * def st_rdev(self): * return self.attr.st_rdev * @st_rdev.setter # <<<<<<<<<<<<<< * def st_rdev(self, val): * self.attr.st_rdev = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_rdev.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":271 * self.attr.st_rdev = val * * @property # <<<<<<<<<<<<<< * def st_size(self): * return self.attr.st_size */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7st_size_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7st_size_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_7st_size___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_7st_size___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":273 * @property * def st_size(self): * return self.attr.st_size # <<<<<<<<<<<<<< * @st_size.setter * def st_size(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_off_t(__pyx_v_self->attr->st_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":271 * self.attr.st_rdev = val * * @property # <<<<<<<<<<<<<< * def st_size(self): * return self.attr.st_size */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":274 * def st_size(self): * return self.attr.st_size * @st_size.setter # <<<<<<<<<<<<<< * def st_size(self, val): * self.attr.st_size = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_7st_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_7st_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_7st_size_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_7st_size_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; off_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":276 * @st_size.setter * def st_size(self, val): * self.attr.st_size = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_off_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((off_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 276, __pyx_L1_error) __pyx_v_self->attr->st_size = __pyx_t_1; /* "pyfuse3/__init__.pyx":274 * def st_size(self): * return self.attr.st_size * @st_size.setter # <<<<<<<<<<<<<< * def st_size(self, val): * self.attr.st_size = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":278 * self.attr.st_size = val * * @property # <<<<<<<<<<<<<< * def st_blocks(self): * return self.attr.st_blocks */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_9st_blocks_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_9st_blocks_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_9st_blocks___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_9st_blocks___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":280 * @property * def st_blocks(self): * return self.attr.st_blocks # <<<<<<<<<<<<<< * @st_blocks.setter * def st_blocks(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_blkcnt_t(__pyx_v_self->attr->st_blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":278 * self.attr.st_size = val * * @property # <<<<<<<<<<<<<< * def st_blocks(self): * return self.attr.st_blocks */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_blocks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":281 * def st_blocks(self): * return self.attr.st_blocks * @st_blocks.setter # <<<<<<<<<<<<<< * def st_blocks(self, val): * self.attr.st_blocks = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_9st_blocks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_9st_blocks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_9st_blocks_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_9st_blocks_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; blkcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":283 * @st_blocks.setter * def st_blocks(self, val): * self.attr.st_blocks = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_blkcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((blkcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 283, __pyx_L1_error) __pyx_v_self->attr->st_blocks = __pyx_t_1; /* "pyfuse3/__init__.pyx":281 * def st_blocks(self): * return self.attr.st_blocks * @st_blocks.setter # <<<<<<<<<<<<<< * def st_blocks(self, val): * self.attr.st_blocks = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_blocks.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":285 * self.attr.st_blocks = val * * @property # <<<<<<<<<<<<<< * def st_blksize(self): * return self.attr.st_blksize */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_10st_blksize_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_10st_blksize_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_10st_blksize___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_10st_blksize___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":287 * @property * def st_blksize(self): * return self.attr.st_blksize # <<<<<<<<<<<<<< * @st_blksize.setter * def st_blksize(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_blksize_t(__pyx_v_self->attr->st_blksize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":285 * self.attr.st_blocks = val * * @property # <<<<<<<<<<<<<< * def st_blksize(self): * return self.attr.st_blksize */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_blksize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":288 * def st_blksize(self): * return self.attr.st_blksize * @st_blksize.setter # <<<<<<<<<<<<<< * def st_blksize(self, val): * self.attr.st_blksize = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_10st_blksize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_10st_blksize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_10st_blksize_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_10st_blksize_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; blksize_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":290 * @st_blksize.setter * def st_blksize(self, val): * self.attr.st_blksize = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_blksize_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((blksize_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 290, __pyx_L1_error) __pyx_v_self->attr->st_blksize = __pyx_t_1; /* "pyfuse3/__init__.pyx":288 * def st_blksize(self): * return self.attr.st_blksize * @st_blksize.setter # <<<<<<<<<<<<<< * def st_blksize(self, val): * self.attr.st_blksize = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_blksize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":292 * self.attr.st_blksize = val * * @property # <<<<<<<<<<<<<< * def st_atime_ns(self): * '''Time of last access in (integer) nanoseconds''' */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_11st_atime_ns_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_11st_atime_ns_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_11st_atime_ns___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_11st_atime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":295 * def st_atime_ns(self): * '''Time of last access in (integer) nanoseconds''' * return (int(self.attr.st_atime) * _NANOS_PER_SEC + GET_ATIME_NS(self.attr)) # <<<<<<<<<<<<<< * @st_atime_ns.setter * def st_atime_ns(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_time_t(__pyx_v_self->attr->st_atime); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_long(GET_ATIME_NS(__pyx_v_self->attr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":292 * self.attr.st_blksize = val * * @property # <<<<<<<<<<<<<< * def st_atime_ns(self): * '''Time of last access in (integer) nanoseconds''' */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_atime_ns.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":296 * '''Time of last access in (integer) nanoseconds''' * return (int(self.attr.st_atime) * _NANOS_PER_SEC + GET_ATIME_NS(self.attr)) * @st_atime_ns.setter # <<<<<<<<<<<<<< * def st_atime_ns(self, val): * self.attr.st_atime = val // _NANOS_PER_SEC */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_11st_atime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_11st_atime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_11st_atime_ns_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_11st_atime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; time_t __pyx_t_3; long __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 1); /* "pyfuse3/__init__.pyx":298 * @st_atime_ns.setter * def st_atime_ns(self, val): * self.attr.st_atime = val // _NANOS_PER_SEC # <<<<<<<<<<<<<< * SET_ATIME_NS(self.attr, val % _NANOS_PER_SEC) * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_FloorDivide(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyInt_As_time_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 298, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->attr->st_atime = __pyx_t_3; /* "pyfuse3/__init__.pyx":299 * def st_atime_ns(self, val): * self.attr.st_atime = val // _NANOS_PER_SEC * SET_ATIME_NS(self.attr, val % _NANOS_PER_SEC) # <<<<<<<<<<<<<< * * @property */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyNumber_Remainder(__pyx_v_val, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; SET_ATIME_NS(__pyx_v_self->attr, __pyx_t_4); /* "pyfuse3/__init__.pyx":296 * '''Time of last access in (integer) nanoseconds''' * return (int(self.attr.st_atime) * _NANOS_PER_SEC + GET_ATIME_NS(self.attr)) * @st_atime_ns.setter # <<<<<<<<<<<<<< * def st_atime_ns(self, val): * self.attr.st_atime = val // _NANOS_PER_SEC */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_atime_ns.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":301 * SET_ATIME_NS(self.attr, val % _NANOS_PER_SEC) * * @property # <<<<<<<<<<<<<< * def st_mtime_ns(self): * '''Time of last modification in (integer) nanoseconds''' */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_11st_mtime_ns_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_11st_mtime_ns_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_11st_mtime_ns___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_11st_mtime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":304 * def st_mtime_ns(self): * '''Time of last modification in (integer) nanoseconds''' * return (int(self.attr.st_mtime) * _NANOS_PER_SEC + GET_MTIME_NS(self.attr)) # <<<<<<<<<<<<<< * @st_mtime_ns.setter * def st_mtime_ns(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_time_t(__pyx_v_self->attr->st_mtime); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_long(GET_MTIME_NS(__pyx_v_self->attr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":301 * SET_ATIME_NS(self.attr, val % _NANOS_PER_SEC) * * @property # <<<<<<<<<<<<<< * def st_mtime_ns(self): * '''Time of last modification in (integer) nanoseconds''' */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_mtime_ns.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":305 * '''Time of last modification in (integer) nanoseconds''' * return (int(self.attr.st_mtime) * _NANOS_PER_SEC + GET_MTIME_NS(self.attr)) * @st_mtime_ns.setter # <<<<<<<<<<<<<< * def st_mtime_ns(self, val): * self.attr.st_mtime = val // _NANOS_PER_SEC */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_11st_mtime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_11st_mtime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_11st_mtime_ns_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_11st_mtime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; time_t __pyx_t_3; long __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 1); /* "pyfuse3/__init__.pyx":307 * @st_mtime_ns.setter * def st_mtime_ns(self, val): * self.attr.st_mtime = val // _NANOS_PER_SEC # <<<<<<<<<<<<<< * SET_MTIME_NS(self.attr, val % _NANOS_PER_SEC) * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_FloorDivide(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyInt_As_time_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 307, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->attr->st_mtime = __pyx_t_3; /* "pyfuse3/__init__.pyx":308 * def st_mtime_ns(self, val): * self.attr.st_mtime = val // _NANOS_PER_SEC * SET_MTIME_NS(self.attr, val % _NANOS_PER_SEC) # <<<<<<<<<<<<<< * * @property */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyNumber_Remainder(__pyx_v_val, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 308, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; SET_MTIME_NS(__pyx_v_self->attr, __pyx_t_4); /* "pyfuse3/__init__.pyx":305 * '''Time of last modification in (integer) nanoseconds''' * return (int(self.attr.st_mtime) * _NANOS_PER_SEC + GET_MTIME_NS(self.attr)) * @st_mtime_ns.setter # <<<<<<<<<<<<<< * def st_mtime_ns(self, val): * self.attr.st_mtime = val // _NANOS_PER_SEC */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_mtime_ns.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":310 * SET_MTIME_NS(self.attr, val % _NANOS_PER_SEC) * * @property # <<<<<<<<<<<<<< * def st_ctime_ns(self): * '''Time of last inode modification in (integer) nanoseconds''' */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_11st_ctime_ns_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_11st_ctime_ns_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_11st_ctime_ns___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_11st_ctime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":313 * def st_ctime_ns(self): * '''Time of last inode modification in (integer) nanoseconds''' * return (int(self.attr.st_ctime) * _NANOS_PER_SEC + GET_CTIME_NS(self.attr)) # <<<<<<<<<<<<<< * @st_ctime_ns.setter * def st_ctime_ns(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_time_t(__pyx_v_self->attr->st_ctime); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_long(GET_CTIME_NS(__pyx_v_self->attr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":310 * SET_MTIME_NS(self.attr, val % _NANOS_PER_SEC) * * @property # <<<<<<<<<<<<<< * def st_ctime_ns(self): * '''Time of last inode modification in (integer) nanoseconds''' */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_ctime_ns.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":314 * '''Time of last inode modification in (integer) nanoseconds''' * return (int(self.attr.st_ctime) * _NANOS_PER_SEC + GET_CTIME_NS(self.attr)) * @st_ctime_ns.setter # <<<<<<<<<<<<<< * def st_ctime_ns(self, val): * self.attr.st_ctime = val // _NANOS_PER_SEC */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_11st_ctime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_11st_ctime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_11st_ctime_ns_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_11st_ctime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; time_t __pyx_t_3; long __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 1); /* "pyfuse3/__init__.pyx":316 * @st_ctime_ns.setter * def st_ctime_ns(self, val): * self.attr.st_ctime = val // _NANOS_PER_SEC # <<<<<<<<<<<<<< * SET_CTIME_NS(self.attr, val % _NANOS_PER_SEC) * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_FloorDivide(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyInt_As_time_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 316, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->attr->st_ctime = __pyx_t_3; /* "pyfuse3/__init__.pyx":317 * def st_ctime_ns(self, val): * self.attr.st_ctime = val // _NANOS_PER_SEC * SET_CTIME_NS(self.attr, val % _NANOS_PER_SEC) # <<<<<<<<<<<<<< * * @property */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyNumber_Remainder(__pyx_v_val, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 317, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; SET_CTIME_NS(__pyx_v_self->attr, __pyx_t_4); /* "pyfuse3/__init__.pyx":314 * '''Time of last inode modification in (integer) nanoseconds''' * return (int(self.attr.st_ctime) * _NANOS_PER_SEC + GET_CTIME_NS(self.attr)) * @st_ctime_ns.setter # <<<<<<<<<<<<<< * def st_ctime_ns(self, val): * self.attr.st_ctime = val // _NANOS_PER_SEC */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_ctime_ns.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":319 * SET_CTIME_NS(self.attr, val % _NANOS_PER_SEC) * * @property # <<<<<<<<<<<<<< * def st_birthtime_ns(self): * '''Time of inode creation in (integer) nanoseconds. */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_15st_birthtime_ns_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_15st_birthtime_ns_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_15st_birthtime_ns___get__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_15st_birthtime_ns___get__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":328 * # Use C macro to prevent compiler error on Linux * # (where st_birthtime does not exist) * return int(GET_BIRTHTIME(self.attr) * _NANOS_PER_SEC # <<<<<<<<<<<<<< * + GET_BIRTHTIME_NS(self.attr)) * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_long(GET_BIRTHTIME(__pyx_v_self->attr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":329 * # (where st_birthtime does not exist) * return int(GET_BIRTHTIME(self.attr) * _NANOS_PER_SEC * + GET_BIRTHTIME_NS(self.attr)) # <<<<<<<<<<<<<< * * @st_birthtime_ns.setter */ __pyx_t_2 = __Pyx_PyInt_From_long(GET_BIRTHTIME_NS(__pyx_v_self->attr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":328 * # Use C macro to prevent compiler error on Linux * # (where st_birthtime does not exist) * return int(GET_BIRTHTIME(self.attr) * _NANOS_PER_SEC # <<<<<<<<<<<<<< * + GET_BIRTHTIME_NS(self.attr)) * */ __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":319 * SET_CTIME_NS(self.attr, val % _NANOS_PER_SEC) * * @property # <<<<<<<<<<<<<< * def st_birthtime_ns(self): * '''Time of inode creation in (integer) nanoseconds. */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_birthtime_ns.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":331 * + GET_BIRTHTIME_NS(self.attr)) * * @st_birthtime_ns.setter # <<<<<<<<<<<<<< * def st_birthtime_ns(self, val): * # Use C macro to prevent compiler error on Linux */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_15EntryAttributes_15st_birthtime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_15EntryAttributes_15st_birthtime_ns_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_15st_birthtime_ns_2__set__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_15EntryAttributes_15st_birthtime_ns_2__set__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; long __pyx_t_3; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 1); /* "pyfuse3/__init__.pyx":335 * # Use C macro to prevent compiler error on Linux * # (where st_birthtime does not exist) * SET_BIRTHTIME(self.attr, val // _NANOS_PER_SEC) # <<<<<<<<<<<<<< * SET_BIRTHTIME_NS(self.attr, val % _NANOS_PER_SEC) * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_FloorDivide(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_2); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 335, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; SET_BIRTHTIME(__pyx_v_self->attr, __pyx_t_3); /* "pyfuse3/__init__.pyx":336 * # (where st_birthtime does not exist) * SET_BIRTHTIME(self.attr, val // _NANOS_PER_SEC) * SET_BIRTHTIME_NS(self.attr, val % _NANOS_PER_SEC) # <<<<<<<<<<<<<< * * # Pickling and copy support */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_NANOS_PER_SEC); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyNumber_Remainder(__pyx_v_val, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 336, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; SET_BIRTHTIME_NS(__pyx_v_self->attr, __pyx_t_3); /* "pyfuse3/__init__.pyx":331 * + GET_BIRTHTIME_NS(self.attr)) * * @st_birthtime_ns.setter # <<<<<<<<<<<<<< * def st_birthtime_ns(self, val): * # Use C macro to prevent compiler error on Linux */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyfuse3.EntryAttributes.st_birthtime_ns.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":339 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_3__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_15EntryAttributes_2__getstate__, "EntryAttributes.__getstate__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_15EntryAttributes_3__getstate__ = {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_3__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_2__getstate__}; static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_3__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__getstate__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__getstate__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_2__getstate__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_2__getstate__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_v_state = NULL; PyObject *__pyx_v_k = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getstate__", 1); /* "pyfuse3/__init__.pyx":340 * # Pickling and copy support * def __getstate__(self): * state = dict() # <<<<<<<<<<<<<< * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', * 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', */ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_state = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":341 * def __getstate__(self): * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', # <<<<<<<<<<<<<< * 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', * 'st_size', 'st_blksize', 'st_blocks', 'st_atime_ns', */ __pyx_t_1 = __pyx_tuple__36; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= 16) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(3, 341, __pyx_L1_error) #else __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_k, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":345 * 'st_size', 'st_blksize', 'st_blocks', 'st_atime_ns', * 'st_ctime_ns', 'st_mtime_ns', 'st_birthtime_ns'): * state[k] = getattr(self, k) # <<<<<<<<<<<<<< * return state * */ __pyx_t_3 = __Pyx_GetAttr(((PyObject *)__pyx_v_self), __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely((PyDict_SetItem(__pyx_v_state, __pyx_v_k, __pyx_t_3) < 0))) __PYX_ERR(3, 345, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":341 * def __getstate__(self): * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', # <<<<<<<<<<<<<< * 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', * 'st_size', 'st_blksize', 'st_blocks', 'st_atime_ns', */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":346 * 'st_ctime_ns', 'st_mtime_ns', 'st_birthtime_ns'): * state[k] = getattr(self, k) * return state # <<<<<<<<<<<<<< * * def __setstate__(self, state): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_state); __pyx_r = __pyx_v_state; goto __pyx_L0; /* "pyfuse3/__init__.pyx":339 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.EntryAttributes.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); __Pyx_XDECREF(__pyx_v_k); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":348 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_5__setstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_15EntryAttributes_4__setstate__, "EntryAttributes.__setstate__(self, state)"); static PyMethodDef __pyx_mdef_7pyfuse3_15EntryAttributes_5__setstate__ = {"__setstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_5__setstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_4__setstate__}; static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_5__setstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 348, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate__") < 0)) __PYX_ERR(3, 348, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 348, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.EntryAttributes.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_4__setstate__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), __pyx_v_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_4__setstate__(struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, PyObject *__pyx_v_state) { PyObject *__pyx_v_k = NULL; PyObject *__pyx_v_v = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; Py_ssize_t __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate__", 1); /* "pyfuse3/__init__.pyx":349 * * def __setstate__(self, state): * for (k,v) in state.items(): # <<<<<<<<<<<<<< * setattr(self, k, v) * */ __pyx_t_2 = 0; if (unlikely(__pyx_v_state == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); __PYX_ERR(3, 349, __pyx_L1_error) } __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_state, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; while (1) { __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); if (unlikely(__pyx_t_7 == 0)) break; if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(3, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":350 * def __setstate__(self, state): * for (k,v) in state.items(): * setattr(self, k, v) # <<<<<<<<<<<<<< * * */ __pyx_t_8 = PyObject_SetAttr(((PyObject *)__pyx_v_self), __pyx_v_k, __pyx_v_v); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 350, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":348 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("pyfuse3.EntryAttributes.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_k); __Pyx_XDECREF(__pyx_v_v); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_15EntryAttributes_6__reduce_cython__, "EntryAttributes.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_15EntryAttributes_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_6__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_7__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_6__reduce_cython__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_9__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_15EntryAttributes_8__setstate_cython__, "EntryAttributes.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_15EntryAttributes_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_8__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_15EntryAttributes_9__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.EntryAttributes.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_15EntryAttributes_8__setstate_cython__(((struct __pyx_obj_7pyfuse3_EntryAttributes *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_15EntryAttributes_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.EntryAttributes.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":366 * cdef public bint nonseekable * * def __cinit__(self, fh=0, direct_io=0, keep_cache=1, nonseekable=0): # <<<<<<<<<<<<<< * self.fh = fh * self.direct_io = direct_io */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_8FileInfo_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7pyfuse3_8FileInfo_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_fh = 0; PyObject *__pyx_v_direct_io = 0; PyObject *__pyx_v_keep_cache = 0; PyObject *__pyx_v_nonseekable = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[4] = {0,0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fh,&__pyx_n_s_direct_io,&__pyx_n_s_keep_cache,&__pyx_n_s_nonseekable,0}; values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_0)); values[1] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_0)); values[2] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_1)); values[3] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_0)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); switch (__pyx_nargs) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fh); if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 366, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_direct_io); if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 366, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keep_cache); if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 366, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nonseekable); if (value) { values[3] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 366, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(3, 366, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_fh = values[0]; __pyx_v_direct_io = values[1]; __pyx_v_keep_cache = values[2]; __pyx_v_nonseekable = values[3]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 4, __pyx_nargs); __PYX_ERR(3, 366, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.FileInfo.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_8FileInfo___cinit__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self), __pyx_v_fh, __pyx_v_direct_io, __pyx_v_keep_cache, __pyx_v_nonseekable); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_8FileInfo___cinit__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_fh, PyObject *__pyx_v_direct_io, PyObject *__pyx_v_keep_cache, PyObject *__pyx_v_nonseekable) { int __pyx_r; uint64_t __pyx_t_1; int __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":367 * * def __cinit__(self, fh=0, direct_io=0, keep_cache=1, nonseekable=0): * self.fh = fh # <<<<<<<<<<<<<< * self.direct_io = direct_io * self.keep_cache = keep_cache */ __pyx_t_1 = __Pyx_PyInt_As_uint64_t(__pyx_v_fh); if (unlikely((__pyx_t_1 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 367, __pyx_L1_error) __pyx_v_self->fh = __pyx_t_1; /* "pyfuse3/__init__.pyx":368 * def __cinit__(self, fh=0, direct_io=0, keep_cache=1, nonseekable=0): * self.fh = fh * self.direct_io = direct_io # <<<<<<<<<<<<<< * self.keep_cache = keep_cache * self.nonseekable = nonseekable */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_direct_io); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 368, __pyx_L1_error) __pyx_v_self->direct_io = __pyx_t_2; /* "pyfuse3/__init__.pyx":369 * self.fh = fh * self.direct_io = direct_io * self.keep_cache = keep_cache # <<<<<<<<<<<<<< * self.nonseekable = nonseekable * */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_keep_cache); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 369, __pyx_L1_error) __pyx_v_self->keep_cache = __pyx_t_2; /* "pyfuse3/__init__.pyx":370 * self.direct_io = direct_io * self.keep_cache = keep_cache * self.nonseekable = nonseekable # <<<<<<<<<<<<<< * * cdef _copy_to_fuse(self, fuse_file_info *out): */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_nonseekable); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 370, __pyx_L1_error) __pyx_v_self->nonseekable = __pyx_t_2; /* "pyfuse3/__init__.pyx":366 * cdef public bint nonseekable * * def __cinit__(self, fh=0, direct_io=0, keep_cache=1, nonseekable=0): # <<<<<<<<<<<<<< * self.fh = fh * self.direct_io = direct_io */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":372 * self.nonseekable = nonseekable * * cdef _copy_to_fuse(self, fuse_file_info *out): # <<<<<<<<<<<<<< * out.fh = self.fh * */ static PyObject *__pyx_f_7pyfuse3_8FileInfo__copy_to_fuse(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, struct fuse_file_info *__pyx_v_out) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations uint64_t __pyx_t_1; __Pyx_RefNannySetupContext("_copy_to_fuse", 1); /* "pyfuse3/__init__.pyx":373 * * cdef _copy_to_fuse(self, fuse_file_info *out): * out.fh = self.fh # <<<<<<<<<<<<<< * * # Due to how Cython generates its C code, GCC will complain about */ __pyx_t_1 = __pyx_v_self->fh; __pyx_v_out->fh = __pyx_t_1; /* "pyfuse3/__init__.pyx":378 * # assigning to the bitfields in the fuse_file_info struct. * # This is the workaround. * if self.direct_io: # <<<<<<<<<<<<<< * out.direct_io = 1 * else: */ if (__pyx_v_self->direct_io) { /* "pyfuse3/__init__.pyx":379 * # This is the workaround. * if self.direct_io: * out.direct_io = 1 # <<<<<<<<<<<<<< * else: * out.direct_io = 0 */ __pyx_v_out->direct_io = 1; /* "pyfuse3/__init__.pyx":378 * # assigning to the bitfields in the fuse_file_info struct. * # This is the workaround. * if self.direct_io: # <<<<<<<<<<<<<< * out.direct_io = 1 * else: */ goto __pyx_L3; } /* "pyfuse3/__init__.pyx":381 * out.direct_io = 1 * else: * out.direct_io = 0 # <<<<<<<<<<<<<< * * if self.keep_cache: */ /*else*/ { __pyx_v_out->direct_io = 0; } __pyx_L3:; /* "pyfuse3/__init__.pyx":383 * out.direct_io = 0 * * if self.keep_cache: # <<<<<<<<<<<<<< * out.keep_cache = 1 * else: */ if (__pyx_v_self->keep_cache) { /* "pyfuse3/__init__.pyx":384 * * if self.keep_cache: * out.keep_cache = 1 # <<<<<<<<<<<<<< * else: * out.keep_cache = 0 */ __pyx_v_out->keep_cache = 1; /* "pyfuse3/__init__.pyx":383 * out.direct_io = 0 * * if self.keep_cache: # <<<<<<<<<<<<<< * out.keep_cache = 1 * else: */ goto __pyx_L4; } /* "pyfuse3/__init__.pyx":386 * out.keep_cache = 1 * else: * out.keep_cache = 0 # <<<<<<<<<<<<<< * * if self.nonseekable: */ /*else*/ { __pyx_v_out->keep_cache = 0; } __pyx_L4:; /* "pyfuse3/__init__.pyx":388 * out.keep_cache = 0 * * if self.nonseekable: # <<<<<<<<<<<<<< * out.nonseekable = 1 * else: */ if (__pyx_v_self->nonseekable) { /* "pyfuse3/__init__.pyx":389 * * if self.nonseekable: * out.nonseekable = 1 # <<<<<<<<<<<<<< * else: * out.nonseekable = 0 */ __pyx_v_out->nonseekable = 1; /* "pyfuse3/__init__.pyx":388 * out.keep_cache = 0 * * if self.nonseekable: # <<<<<<<<<<<<<< * out.nonseekable = 1 * else: */ goto __pyx_L5; } /* "pyfuse3/__init__.pyx":391 * out.nonseekable = 1 * else: * out.nonseekable = 0 # <<<<<<<<<<<<<< * * */ /*else*/ { __pyx_v_out->nonseekable = 0; } __pyx_L5:; /* "pyfuse3/__init__.pyx":372 * self.nonseekable = nonseekable * * cdef _copy_to_fuse(self, fuse_file_info *out): # <<<<<<<<<<<<<< * out.fh = self.fh * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":361 * ''' * * cdef public uint64_t fh # <<<<<<<<<<<<<< * cdef public bint direct_io * cdef public bint keep_cache */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_2fh_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_2fh_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_2fh___get__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_8FileInfo_2fh___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->fh); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FileInfo.fh.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static int __pyx_pw_7pyfuse3_8FileInfo_2fh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ static int __pyx_pw_7pyfuse3_8FileInfo_2fh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_2fh_2__set__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_8FileInfo_2fh_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; uint64_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __pyx_t_1 = __Pyx_PyInt_As_uint64_t(__pyx_v_value); if (unlikely((__pyx_t_1 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 361, __pyx_L1_error) __pyx_v_self->fh = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.fh.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":362 * * cdef public uint64_t fh * cdef public bint direct_io # <<<<<<<<<<<<<< * cdef public bint keep_cache * cdef public bint nonseekable */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_9direct_io_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_9direct_io_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_9direct_io___get__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_8FileInfo_9direct_io___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->direct_io); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FileInfo.direct_io.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static int __pyx_pw_7pyfuse3_8FileInfo_9direct_io_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ static int __pyx_pw_7pyfuse3_8FileInfo_9direct_io_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_9direct_io_2__set__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_8FileInfo_9direct_io_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 362, __pyx_L1_error) __pyx_v_self->direct_io = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.direct_io.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":363 * cdef public uint64_t fh * cdef public bint direct_io * cdef public bint keep_cache # <<<<<<<<<<<<<< * cdef public bint nonseekable * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_10keep_cache_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_10keep_cache_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_10keep_cache___get__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_8FileInfo_10keep_cache___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->keep_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FileInfo.keep_cache.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static int __pyx_pw_7pyfuse3_8FileInfo_10keep_cache_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ static int __pyx_pw_7pyfuse3_8FileInfo_10keep_cache_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_10keep_cache_2__set__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_8FileInfo_10keep_cache_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 363, __pyx_L1_error) __pyx_v_self->keep_cache = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.keep_cache.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":364 * cdef public bint direct_io * cdef public bint keep_cache * cdef public bint nonseekable # <<<<<<<<<<<<<< * * def __cinit__(self, fh=0, direct_io=0, keep_cache=1, nonseekable=0): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_11nonseekable_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_11nonseekable_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_11nonseekable___get__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_8FileInfo_11nonseekable___get__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->nonseekable); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FileInfo.nonseekable.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static int __pyx_pw_7pyfuse3_8FileInfo_11nonseekable_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ static int __pyx_pw_7pyfuse3_8FileInfo_11nonseekable_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_11nonseekable_2__set__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_8FileInfo_11nonseekable_2__set__(struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 364, __pyx_L1_error) __pyx_v_self->nonseekable = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.nonseekable.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_8FileInfo_2__reduce_cython__, "FileInfo.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_8FileInfo_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_8FileInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_8FileInfo_2__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_8FileInfo_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_2__reduce_cython__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_8FileInfo_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_8FileInfo_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_8FileInfo_4__setstate_cython__, "FileInfo.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_8FileInfo_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_8FileInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_8FileInfo_4__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_8FileInfo_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.FileInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_8FileInfo_4__setstate_cython__(((struct __pyx_obj_7pyfuse3_FileInfo *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_8FileInfo_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FileInfo *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FileInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":404 * cdef statvfs stat * * def __cinit__(self): # <<<<<<<<<<<<<< * string.memset(&self.stat, 0, sizeof(statvfs)) * */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData___cinit__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData___cinit__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { int __pyx_r; /* "pyfuse3/__init__.pyx":405 * * def __cinit__(self): * string.memset(&self.stat, 0, sizeof(statvfs)) # <<<<<<<<<<<<<< * * @property */ (void)(memset((&__pyx_v_self->stat), 0, (sizeof(struct statvfs)))); /* "pyfuse3/__init__.pyx":404 * cdef statvfs stat * * def __cinit__(self): # <<<<<<<<<<<<<< * string.memset(&self.stat, 0, sizeof(statvfs)) * */ /* function exit code */ __pyx_r = 0; return __pyx_r; } /* "pyfuse3/__init__.pyx":407 * string.memset(&self.stat, 0, sizeof(statvfs)) * * @property # <<<<<<<<<<<<<< * def f_bsize(self): * return self.stat.f_bsize */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_bsize_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_bsize_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_bsize___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_bsize___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":409 * @property * def f_bsize(self): * return self.stat.f_bsize # <<<<<<<<<<<<<< * @f_bsize.setter * def f_bsize(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(__pyx_v_self->stat.f_bsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":407 * string.memset(&self.stat, 0, sizeof(statvfs)) * * @property # <<<<<<<<<<<<<< * def f_bsize(self): * return self.stat.f_bsize */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_bsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":410 * def f_bsize(self): * return self.stat.f_bsize * @f_bsize.setter # <<<<<<<<<<<<<< * def f_bsize(self, val): * self.stat.f_bsize = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_bsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_bsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_bsize_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_7f_bsize_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; unsigned long __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":412 * @f_bsize.setter * def f_bsize(self, val): * self.stat.f_bsize = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(3, 412, __pyx_L1_error) __pyx_v_self->stat.f_bsize = __pyx_t_1; /* "pyfuse3/__init__.pyx":410 * def f_bsize(self): * return self.stat.f_bsize * @f_bsize.setter # <<<<<<<<<<<<<< * def f_bsize(self, val): * self.stat.f_bsize = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_bsize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":414 * self.stat.f_bsize = val * * @property # <<<<<<<<<<<<<< * def f_frsize(self): * return self.stat.f_frsize */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_frsize_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_frsize_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_frsize___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_frsize___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":416 * @property * def f_frsize(self): * return self.stat.f_frsize # <<<<<<<<<<<<<< * @f_frsize.setter * def f_frsize(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(__pyx_v_self->stat.f_frsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":414 * self.stat.f_bsize = val * * @property # <<<<<<<<<<<<<< * def f_frsize(self): * return self.stat.f_frsize */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_frsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":417 * def f_frsize(self): * return self.stat.f_frsize * @f_frsize.setter # <<<<<<<<<<<<<< * def f_frsize(self, val): * self.stat.f_frsize = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_frsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_frsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_frsize_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_8f_frsize_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; unsigned long __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":419 * @f_frsize.setter * def f_frsize(self, val): * self.stat.f_frsize = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(3, 419, __pyx_L1_error) __pyx_v_self->stat.f_frsize = __pyx_t_1; /* "pyfuse3/__init__.pyx":417 * def f_frsize(self): * return self.stat.f_frsize * @f_frsize.setter # <<<<<<<<<<<<<< * def f_frsize(self, val): * self.stat.f_frsize = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_frsize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":421 * self.stat.f_frsize = val * * @property # <<<<<<<<<<<<<< * def f_blocks(self): * return self.stat.f_blocks */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_blocks_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_blocks_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_blocks___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_blocks___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":423 * @property * def f_blocks(self): * return self.stat.f_blocks # <<<<<<<<<<<<<< * @f_blocks.setter * def f_blocks(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fsblkcnt_t(__pyx_v_self->stat.f_blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":421 * self.stat.f_frsize = val * * @property # <<<<<<<<<<<<<< * def f_blocks(self): * return self.stat.f_blocks */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_blocks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":424 * def f_blocks(self): * return self.stat.f_blocks * @f_blocks.setter # <<<<<<<<<<<<<< * def f_blocks(self, val): * self.stat.f_blocks = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_blocks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_blocks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_blocks_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_8f_blocks_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fsblkcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":426 * @f_blocks.setter * def f_blocks(self, val): * self.stat.f_blocks = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_fsblkcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fsblkcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 426, __pyx_L1_error) __pyx_v_self->stat.f_blocks = __pyx_t_1; /* "pyfuse3/__init__.pyx":424 * def f_blocks(self): * return self.stat.f_blocks * @f_blocks.setter # <<<<<<<<<<<<<< * def f_blocks(self, val): * self.stat.f_blocks = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_blocks.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":428 * self.stat.f_blocks = val * * @property # <<<<<<<<<<<<<< * def f_bfree(self): * return self.stat.f_bfree */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_bfree_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_bfree_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_bfree___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_bfree___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":430 * @property * def f_bfree(self): * return self.stat.f_bfree # <<<<<<<<<<<<<< * @f_bfree.setter * def f_bfree(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fsblkcnt_t(__pyx_v_self->stat.f_bfree); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":428 * self.stat.f_blocks = val * * @property # <<<<<<<<<<<<<< * def f_bfree(self): * return self.stat.f_bfree */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_bfree.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":431 * def f_bfree(self): * return self.stat.f_bfree * @f_bfree.setter # <<<<<<<<<<<<<< * def f_bfree(self, val): * self.stat.f_bfree = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_bfree_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_bfree_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_bfree_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_7f_bfree_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fsblkcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":433 * @f_bfree.setter * def f_bfree(self, val): * self.stat.f_bfree = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_fsblkcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fsblkcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 433, __pyx_L1_error) __pyx_v_self->stat.f_bfree = __pyx_t_1; /* "pyfuse3/__init__.pyx":431 * def f_bfree(self): * return self.stat.f_bfree * @f_bfree.setter # <<<<<<<<<<<<<< * def f_bfree(self, val): * self.stat.f_bfree = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_bfree.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":435 * self.stat.f_bfree = val * * @property # <<<<<<<<<<<<<< * def f_bavail(self): * return self.stat.f_bavail */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_bavail_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_bavail_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_bavail___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_bavail___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":437 * @property * def f_bavail(self): * return self.stat.f_bavail # <<<<<<<<<<<<<< * @f_bavail.setter * def f_bavail(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fsblkcnt_t(__pyx_v_self->stat.f_bavail); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":435 * self.stat.f_bfree = val * * @property # <<<<<<<<<<<<<< * def f_bavail(self): * return self.stat.f_bavail */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_bavail.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":438 * def f_bavail(self): * return self.stat.f_bavail * @f_bavail.setter # <<<<<<<<<<<<<< * def f_bavail(self, val): * self.stat.f_bavail = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_bavail_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_bavail_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_bavail_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_8f_bavail_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fsblkcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":440 * @f_bavail.setter * def f_bavail(self, val): * self.stat.f_bavail = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_fsblkcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fsblkcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 440, __pyx_L1_error) __pyx_v_self->stat.f_bavail = __pyx_t_1; /* "pyfuse3/__init__.pyx":438 * def f_bavail(self): * return self.stat.f_bavail * @f_bavail.setter # <<<<<<<<<<<<<< * def f_bavail(self, val): * self.stat.f_bavail = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_bavail.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":442 * self.stat.f_bavail = val * * @property # <<<<<<<<<<<<<< * def f_files(self): * return self.stat.f_files */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_files_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_files_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_files___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_files___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":444 * @property * def f_files(self): * return self.stat.f_files # <<<<<<<<<<<<<< * @f_files.setter * def f_files(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fsfilcnt_t(__pyx_v_self->stat.f_files); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":442 * self.stat.f_bavail = val * * @property # <<<<<<<<<<<<<< * def f_files(self): * return self.stat.f_files */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_files.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":445 * def f_files(self): * return self.stat.f_files * @f_files.setter # <<<<<<<<<<<<<< * def f_files(self, val): * self.stat.f_files = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_files_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_files_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_files_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_7f_files_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fsfilcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":447 * @f_files.setter * def f_files(self, val): * self.stat.f_files = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_fsfilcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fsfilcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 447, __pyx_L1_error) __pyx_v_self->stat.f_files = __pyx_t_1; /* "pyfuse3/__init__.pyx":445 * def f_files(self): * return self.stat.f_files * @f_files.setter # <<<<<<<<<<<<<< * def f_files(self, val): * self.stat.f_files = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_files.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":449 * self.stat.f_files = val * * @property # <<<<<<<<<<<<<< * def f_ffree(self): * return self.stat.f_ffree */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_ffree_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7f_ffree_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_ffree___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_7f_ffree___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":451 * @property * def f_ffree(self): * return self.stat.f_ffree # <<<<<<<<<<<<<< * @f_ffree.setter * def f_ffree(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fsfilcnt_t(__pyx_v_self->stat.f_ffree); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":449 * self.stat.f_files = val * * @property # <<<<<<<<<<<<<< * def f_ffree(self): * return self.stat.f_ffree */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_ffree.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":452 * def f_ffree(self): * return self.stat.f_ffree * @f_ffree.setter # <<<<<<<<<<<<<< * def f_ffree(self, val): * self.stat.f_ffree = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_ffree_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_7f_ffree_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_7f_ffree_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_7f_ffree_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fsfilcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":454 * @f_ffree.setter * def f_ffree(self, val): * self.stat.f_ffree = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_fsfilcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fsfilcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 454, __pyx_L1_error) __pyx_v_self->stat.f_ffree = __pyx_t_1; /* "pyfuse3/__init__.pyx":452 * def f_ffree(self): * return self.stat.f_ffree * @f_ffree.setter # <<<<<<<<<<<<<< * def f_ffree(self, val): * self.stat.f_ffree = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_ffree.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":456 * self.stat.f_ffree = val * * @property # <<<<<<<<<<<<<< * def f_favail(self): * return self.stat.f_favail */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_favail_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_8f_favail_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_favail___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8f_favail___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":458 * @property * def f_favail(self): * return self.stat.f_favail # <<<<<<<<<<<<<< * @f_favail.setter * def f_favail(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_fsfilcnt_t(__pyx_v_self->stat.f_favail); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":456 * self.stat.f_ffree = val * * @property # <<<<<<<<<<<<<< * def f_favail(self): * return self.stat.f_favail */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_favail.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":459 * def f_favail(self): * return self.stat.f_favail * @f_favail.setter # <<<<<<<<<<<<<< * def f_favail(self, val): * self.stat.f_favail = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_favail_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_8f_favail_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8f_favail_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_8f_favail_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; fsfilcnt_t __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":461 * @f_favail.setter * def f_favail(self, val): * self.stat.f_favail = val # <<<<<<<<<<<<<< * * @property */ __pyx_t_1 = __Pyx_PyInt_As_fsfilcnt_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((fsfilcnt_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 461, __pyx_L1_error) __pyx_v_self->stat.f_favail = __pyx_t_1; /* "pyfuse3/__init__.pyx":459 * def f_favail(self): * return self.stat.f_favail * @f_favail.setter # <<<<<<<<<<<<<< * def f_favail(self, val): * self.stat.f_favail = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_favail.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":463 * self.stat.f_favail = val * * @property # <<<<<<<<<<<<<< * def f_namemax(self): * return self.stat.f_namemax */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_9f_namemax_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_9f_namemax_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_9f_namemax___get__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_9f_namemax___get__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":465 * @property * def f_namemax(self): * return self.stat.f_namemax # <<<<<<<<<<<<<< * @f_namemax.setter * def f_namemax(self, val): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(__pyx_v_self->stat.f_namemax); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":463 * self.stat.f_favail = val * * @property # <<<<<<<<<<<<<< * def f_namemax(self): * return self.stat.f_namemax */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.StatvfsData.f_namemax.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":466 * def f_namemax(self): * return self.stat.f_namemax * @f_namemax.setter # <<<<<<<<<<<<<< * def f_namemax(self, val): * self.stat.f_namemax = val */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_11StatvfsData_9f_namemax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ static int __pyx_pw_7pyfuse3_11StatvfsData_9f_namemax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_9f_namemax_2__set__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), ((PyObject *)__pyx_v_val)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_11StatvfsData_9f_namemax_2__set__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_val) { int __pyx_r; unsigned long __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":468 * @f_namemax.setter * def f_namemax(self, val): * self.stat.f_namemax = val # <<<<<<<<<<<<<< * * # Pickling and copy support */ __pyx_t_1 = __Pyx_PyInt_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(3, 468, __pyx_L1_error) __pyx_v_self->stat.f_namemax = __pyx_t_1; /* "pyfuse3/__init__.pyx":466 * def f_namemax(self): * return self.stat.f_namemax * @f_namemax.setter # <<<<<<<<<<<<<< * def f_namemax(self, val): * self.stat.f_namemax = val */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.f_namemax.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":471 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_3__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_11StatvfsData_2__getstate__, "StatvfsData.__getstate__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_11StatvfsData_3__getstate__ = {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_3__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_2__getstate__}; static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_3__getstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__getstate__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__getstate__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_2__getstate__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_2__getstate__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_v_state = NULL; PyObject *__pyx_v_k = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getstate__", 1); /* "pyfuse3/__init__.pyx":472 * # Pickling and copy support * def __getstate__(self): * state = dict() # <<<<<<<<<<<<<< * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', * 'f_bavail', 'f_files', 'f_ffree', 'f_favail', */ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_state = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":473 * def __getstate__(self): * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', # <<<<<<<<<<<<<< * 'f_bavail', 'f_files', 'f_ffree', 'f_favail', * 'f_namemax'): */ __pyx_t_1 = __pyx_tuple__37; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= 9) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(3, 473, __pyx_L1_error) #else __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_k, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":476 * 'f_bavail', 'f_files', 'f_ffree', 'f_favail', * 'f_namemax'): * state[k] = getattr(self, k) # <<<<<<<<<<<<<< * return state * */ __pyx_t_3 = __Pyx_GetAttr(((PyObject *)__pyx_v_self), __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely((PyDict_SetItem(__pyx_v_state, __pyx_v_k, __pyx_t_3) < 0))) __PYX_ERR(3, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":473 * def __getstate__(self): * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', # <<<<<<<<<<<<<< * 'f_bavail', 'f_files', 'f_ffree', 'f_favail', * 'f_namemax'): */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":477 * 'f_namemax'): * state[k] = getattr(self, k) * return state # <<<<<<<<<<<<<< * * def __setstate__(self, state): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_state); __pyx_r = __pyx_v_state; goto __pyx_L0; /* "pyfuse3/__init__.pyx":471 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.StatvfsData.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); __Pyx_XDECREF(__pyx_v_k); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":479 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_5__setstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_11StatvfsData_4__setstate__, "StatvfsData.__setstate__(self, state)"); static PyMethodDef __pyx_mdef_7pyfuse3_11StatvfsData_5__setstate__ = {"__setstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_5__setstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_4__setstate__}; static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_5__setstate__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 479, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate__") < 0)) __PYX_ERR(3, 479, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 479, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.StatvfsData.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_4__setstate__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), __pyx_v_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_4__setstate__(struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, PyObject *__pyx_v_state) { PyObject *__pyx_v_k = NULL; PyObject *__pyx_v_v = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; Py_ssize_t __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate__", 1); /* "pyfuse3/__init__.pyx":480 * * def __setstate__(self, state): * for (k,v) in state.items(): # <<<<<<<<<<<<<< * setattr(self, k, v) * */ __pyx_t_2 = 0; if (unlikely(__pyx_v_state == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); __PYX_ERR(3, 480, __pyx_L1_error) } __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_state, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; while (1) { __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); if (unlikely(__pyx_t_7 == 0)) break; if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(3, 480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":481 * def __setstate__(self, state): * for (k,v) in state.items(): * setattr(self, k, v) # <<<<<<<<<<<<<< * * */ __pyx_t_8 = PyObject_SetAttr(((PyObject *)__pyx_v_self), __pyx_v_k, __pyx_v_v); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 481, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":479 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("pyfuse3.StatvfsData.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_k); __Pyx_XDECREF(__pyx_v_v); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_11StatvfsData_6__reduce_cython__, "StatvfsData.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_11StatvfsData_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_6__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_7__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_6__reduce_cython__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_9__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_11StatvfsData_8__setstate_cython__, "StatvfsData.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_11StatvfsData_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_8__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_11StatvfsData_9__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.StatvfsData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_11StatvfsData_8__setstate_cython__(((struct __pyx_obj_7pyfuse3_StatvfsData *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_11StatvfsData_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.StatvfsData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":499 * cdef readonly int errno_ * * @property # <<<<<<<<<<<<<< * def errno(self): * '''Error code to return to client process''' */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_5errno_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_5errno_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_9FUSEError_5errno___get__(((struct __pyx_obj_7pyfuse3_FUSEError *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_9FUSEError_5errno___get__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); /* "pyfuse3/__init__.pyx":502 * def errno(self): * '''Error code to return to client process''' * return self.errno_ # <<<<<<<<<<<<<< * * def __cinit__(self, errno): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->errno_); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":499 * cdef readonly int errno_ * * @property # <<<<<<<<<<<<<< * def errno(self): * '''Error code to return to client process''' */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FUSEError.errno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":504 * return self.errno_ * * def __cinit__(self, errno): # <<<<<<<<<<<<<< * self.errno_ = errno * */ /* Python wrapper */ static int __pyx_pw_7pyfuse3_9FUSEError_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7pyfuse3_9FUSEError_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_errno = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errno,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errno)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 504, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(3, 504, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); } __pyx_v_errno = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 504, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.FUSEError.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_9FUSEError___cinit__(((struct __pyx_obj_7pyfuse3_FUSEError *)__pyx_v_self), __pyx_v_errno); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7pyfuse3_9FUSEError___cinit__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self, PyObject *__pyx_v_errno) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "pyfuse3/__init__.pyx":505 * * def __cinit__(self, errno): * self.errno_ = errno # <<<<<<<<<<<<<< * * def __str__(self): */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_errno); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 505, __pyx_L1_error) __pyx_v_self->errno_ = __pyx_t_1; /* "pyfuse3/__init__.pyx":504 * return self.errno_ * * def __cinit__(self, errno): # <<<<<<<<<<<<<< * self.errno_ = errno * */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FUSEError.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "pyfuse3/__init__.pyx":507 * self.errno_ = errno * * def __str__(self): # <<<<<<<<<<<<<< * return strerror(self.errno_) * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_3__str__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_3__str__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_9FUSEError_2__str__(((struct __pyx_obj_7pyfuse3_FUSEError *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_9FUSEError_2__str__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 1); /* "pyfuse3/__init__.pyx":508 * * def __str__(self): * return strerror(self.errno_) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_7pyfuse3_strerror(__pyx_v_self->errno_); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyfuse3/__init__.pyx":507 * self.errno_ = errno * * def __str__(self): # <<<<<<<<<<<<<< * return strerror(self.errno_) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FUSEError.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":497 * # during C compilation (maybe something else declares errno as * # a macro?) * cdef readonly int errno_ # <<<<<<<<<<<<<< * * @property */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_6errno__1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_6errno__1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_9FUSEError_6errno____get__(((struct __pyx_obj_7pyfuse3_FUSEError *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_9FUSEError_6errno____get__(struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->errno_); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyfuse3.FUSEError.errno_.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_5__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_9FUSEError_4__reduce_cython__, "FUSEError.__reduce_cython__(self)"); static PyMethodDef __pyx_mdef_7pyfuse3_9FUSEError_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_9FUSEError_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_9FUSEError_4__reduce_cython__}; static PyObject *__pyx_pw_7pyfuse3_9FUSEError_5__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_7pyfuse3_9FUSEError_4__reduce_cython__(((struct __pyx_obj_7pyfuse3_FUSEError *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_9FUSEError_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FUSEError.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_9FUSEError_7__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_9FUSEError_6__setstate_cython__, "FUSEError.__setstate_cython__(self, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_9FUSEError_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_9FUSEError_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_9FUSEError_6__setstate_cython__}; static PyObject *__pyx_pw_7pyfuse3_9FUSEError_7__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.FUSEError.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_9FUSEError_6__setstate_cython__(((struct __pyx_obj_7pyfuse3_FUSEError *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_9FUSEError_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyfuse3_FUSEError *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.FUSEError.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":511 * * * def listdir(path): # <<<<<<<<<<<<<< * '''Like `os.listdir`, but releases the GIL. * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_96listdir(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_95listdir, "listdir(path)\nLike `os.listdir`, but releases the GIL.\n\n This function returns an iterator over the directory entries in *path*.\n\n The returned values are of type :ref:`str `. Surrogate\n escape coding (cf. `PEP 383 `_)\n is used for directory names that do not have a string representation.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_96listdir = {"listdir", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_96listdir, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_95listdir}; static PyObject *__pyx_pw_7pyfuse3_96listdir(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_path = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("listdir (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 511, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "listdir") < 0)) __PYX_ERR(3, 511, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_path = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("listdir", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 511, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.listdir", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_95listdir(__pyx_self, __pyx_v_path); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_95listdir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path) { DIR *__pyx_v_dirp; struct dirent *__pyx_v_res; char *__pyx_v_buf; PyObject *__pyx_v_path_b = NULL; PyObject *__pyx_v_names = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; char *__pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("listdir", 1); /* "pyfuse3/__init__.pyx":521 * ''' * * if not isinstance(path, str): # <<<<<<<<<<<<<< * raise TypeError('*path* argument must be of type str') * */ __pyx_t_1 = PyUnicode_Check(__pyx_v_path); __pyx_t_2 = (!__pyx_t_1); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":522 * * if not isinstance(path, str): * raise TypeError('*path* argument must be of type str') # <<<<<<<<<<<<<< * * cdef libc_extra.DIR* dirp */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 522, __pyx_L1_error) /* "pyfuse3/__init__.pyx":521 * ''' * * if not isinstance(path, str): # <<<<<<<<<<<<<< * raise TypeError('*path* argument must be of type str') * */ } /* "pyfuse3/__init__.pyx":528 * cdef char* buf * * path_b = str2bytes(path) # <<<<<<<<<<<<<< * buf = path_b * */ __pyx_t_3 = __pyx_f_7pyfuse3_str2bytes(__pyx_v_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_path_b = __pyx_t_3; __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":529 * * path_b = str2bytes(path) * buf = path_b # <<<<<<<<<<<<<< * * with nogil: */ __pyx_t_4 = __Pyx_PyObject_AsWritableString(__pyx_v_path_b); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 529, __pyx_L1_error) __pyx_v_buf = ((char *)__pyx_t_4); /* "pyfuse3/__init__.pyx":531 * buf = path_b * * with nogil: # <<<<<<<<<<<<<< * dirp = libc_extra.opendir(buf) * */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":532 * * with nogil: * dirp = libc_extra.opendir(buf) # <<<<<<<<<<<<<< * * if dirp == NULL: */ __pyx_v_dirp = opendir(__pyx_v_buf); } /* "pyfuse3/__init__.pyx":531 * buf = path_b * * with nogil: # <<<<<<<<<<<<<< * dirp = libc_extra.opendir(buf) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L6; } __pyx_L6:; } } /* "pyfuse3/__init__.pyx":534 * dirp = libc_extra.opendir(buf) * * if dirp == NULL: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * */ __pyx_t_2 = (__pyx_v_dirp == NULL); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":535 * * if dirp == NULL: * raise OSError(errno.errno, strerror(errno.errno), path) # <<<<<<<<<<<<<< * * names = list() */ __pyx_t_3 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3)) __PYX_ERR(3, 535, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5)) __PYX_ERR(3, 535, __pyx_L1_error); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_path)) __PYX_ERR(3, 535, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(3, 535, __pyx_L1_error) /* "pyfuse3/__init__.pyx":534 * dirp = libc_extra.opendir(buf) * * if dirp == NULL: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * */ } /* "pyfuse3/__init__.pyx":537 * raise OSError(errno.errno, strerror(errno.errno), path) * * names = list() # <<<<<<<<<<<<<< * while True: * errno.errno = 0 */ __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v_names = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":538 * * names = list() * while True: # <<<<<<<<<<<<<< * errno.errno = 0 * with nogil: */ while (1) { /* "pyfuse3/__init__.pyx":539 * names = list() * while True: * errno.errno = 0 # <<<<<<<<<<<<<< * with nogil: * res = libc_extra.readdir(dirp) */ errno = 0; /* "pyfuse3/__init__.pyx":540 * while True: * errno.errno = 0 * with nogil: # <<<<<<<<<<<<<< * res = libc_extra.readdir(dirp) * */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":541 * errno.errno = 0 * with nogil: * res = libc_extra.readdir(dirp) # <<<<<<<<<<<<<< * * if res is NULL: */ __pyx_v_res = readdir(__pyx_v_dirp); } /* "pyfuse3/__init__.pyx":540 * while True: * errno.errno = 0 * with nogil: # <<<<<<<<<<<<<< * res = libc_extra.readdir(dirp) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L14; } __pyx_L14:; } } /* "pyfuse3/__init__.pyx":543 * res = libc_extra.readdir(dirp) * * if res is NULL: # <<<<<<<<<<<<<< * if errno.errno != 0: * raise OSError(errno.errno, strerror(errno.errno), path) */ __pyx_t_2 = (__pyx_v_res == NULL); if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":544 * * if res is NULL: * if errno.errno != 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * else: */ __pyx_t_2 = (errno != 0); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":545 * if res is NULL: * if errno.errno != 0: * raise OSError(errno.errno, strerror(errno.errno), path) # <<<<<<<<<<<<<< * else: * break */ __pyx_t_5 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(3, 545, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6)) __PYX_ERR(3, 545, __pyx_L1_error); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_path)) __PYX_ERR(3, 545, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(3, 545, __pyx_L1_error) /* "pyfuse3/__init__.pyx":544 * * if res is NULL: * if errno.errno != 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * else: */ } /* "pyfuse3/__init__.pyx":547 * raise OSError(errno.errno, strerror(errno.errno), path) * else: * break # <<<<<<<<<<<<<< * if string.strcmp(res.d_name, b'.') == 0 or \ * string.strcmp(res.d_name, b'..') == 0: */ /*else*/ { goto __pyx_L9_break; } /* "pyfuse3/__init__.pyx":543 * res = libc_extra.readdir(dirp) * * if res is NULL: # <<<<<<<<<<<<<< * if errno.errno != 0: * raise OSError(errno.errno, strerror(errno.errno), path) */ } /* "pyfuse3/__init__.pyx":548 * else: * break * if string.strcmp(res.d_name, b'.') == 0 or \ # <<<<<<<<<<<<<< * string.strcmp(res.d_name, b'..') == 0: * continue */ __pyx_t_1 = (strcmp(__pyx_v_res->d_name, ((char const *)".")) == 0); if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L18_bool_binop_done; } /* "pyfuse3/__init__.pyx":549 * break * if string.strcmp(res.d_name, b'.') == 0 or \ * string.strcmp(res.d_name, b'..') == 0: # <<<<<<<<<<<<<< * continue * */ __pyx_t_1 = (strcmp(__pyx_v_res->d_name, ((char const *)"..")) == 0); __pyx_t_2 = __pyx_t_1; __pyx_L18_bool_binop_done:; /* "pyfuse3/__init__.pyx":548 * else: * break * if string.strcmp(res.d_name, b'.') == 0 or \ # <<<<<<<<<<<<<< * string.strcmp(res.d_name, b'..') == 0: * continue */ if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":550 * if string.strcmp(res.d_name, b'.') == 0 or \ * string.strcmp(res.d_name, b'..') == 0: * continue # <<<<<<<<<<<<<< * * names.append(bytes2str(PyBytes_FromString(res.d_name))) */ goto __pyx_L8_continue; /* "pyfuse3/__init__.pyx":548 * else: * break * if string.strcmp(res.d_name, b'.') == 0 or \ # <<<<<<<<<<<<<< * string.strcmp(res.d_name, b'..') == 0: * continue */ } /* "pyfuse3/__init__.pyx":552 * continue * * names.append(bytes2str(PyBytes_FromString(res.d_name))) # <<<<<<<<<<<<<< * * with nogil: */ __pyx_t_6 = PyBytes_FromString(__pyx_v_res->d_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __pyx_f_7pyfuse3_bytes2str(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_names, __pyx_t_3); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 552, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_L8_continue:; } __pyx_L9_break:; /* "pyfuse3/__init__.pyx":554 * names.append(bytes2str(PyBytes_FromString(res.d_name))) * * with nogil: # <<<<<<<<<<<<<< * libc_extra.closedir(dirp) * */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":555 * * with nogil: * libc_extra.closedir(dirp) # <<<<<<<<<<<<<< * * return names */ (void)(closedir(__pyx_v_dirp)); } /* "pyfuse3/__init__.pyx":554 * names.append(bytes2str(PyBytes_FromString(res.d_name))) * * with nogil: # <<<<<<<<<<<<<< * libc_extra.closedir(dirp) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L22; } __pyx_L22:; } } /* "pyfuse3/__init__.pyx":557 * libc_extra.closedir(dirp) * * return names # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_names); __pyx_r = __pyx_v_names; goto __pyx_L0; /* "pyfuse3/__init__.pyx":511 * * * def listdir(path): # <<<<<<<<<<<<<< * '''Like `os.listdir`, but releases the GIL. * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("pyfuse3.listdir", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_path_b); __Pyx_XDECREF(__pyx_v_names); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":560 * * * def syncfs(path): # <<<<<<<<<<<<<< * '''Sync filesystem mounted at *path* * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_98syncfs(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_97syncfs, "syncfs(path)\nSync filesystem mounted at *path*\n\n This is a Python interface to the syncfs(2) system call. There is no\n particular relation to libfuse, it is provided by pyfuse3 as a convience.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_98syncfs = {"syncfs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_98syncfs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_97syncfs}; static PyObject *__pyx_pw_7pyfuse3_98syncfs(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_path = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("syncfs (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 560, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "syncfs") < 0)) __PYX_ERR(3, 560, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_path = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("syncfs", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 560, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.syncfs", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_97syncfs(__pyx_self, __pyx_v_path); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_97syncfs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path) { int __pyx_v_ret; PyObject *__pyx_v_fd = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; int __pyx_t_7; unsigned int __pyx_t_8; int __pyx_t_9; char const *__pyx_t_10; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("syncfs", 1); /* "pyfuse3/__init__.pyx":569 * cdef int ret * * fd = os.open(path, flags=os.O_DIRECTORY) # <<<<<<<<<<<<<< * try: * ret = libc_extra.syncfs(fd) */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_path)) __PYX_ERR(3, 569, __pyx_L1_error); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_O_DIRECTORY); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_flags, __pyx_t_5) < 0) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_fd = __pyx_t_5; __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":570 * * fd = os.open(path, flags=os.O_DIRECTORY) * try: # <<<<<<<<<<<<<< * ret = libc_extra.syncfs(fd) * */ /*try:*/ { /* "pyfuse3/__init__.pyx":571 * fd = os.open(path, flags=os.O_DIRECTORY) * try: * ret = libc_extra.syncfs(fd) # <<<<<<<<<<<<<< * * if ret != 0: */ __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 571, __pyx_L4_error) __pyx_v_ret = syncfs(__pyx_t_6); /* "pyfuse3/__init__.pyx":573 * ret = libc_extra.syncfs(fd) * * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * finally: */ __pyx_t_7 = (__pyx_v_ret != 0); if (unlikely(__pyx_t_7)) { /* "pyfuse3/__init__.pyx":574 * * if ret != 0: * raise OSError(errno.errno, strerror(errno.errno), path) # <<<<<<<<<<<<<< * finally: * os.close(fd) */ __pyx_t_5 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 574, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 574, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 574, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5)) __PYX_ERR(3, 574, __pyx_L4_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(3, 574, __pyx_L4_error); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_path)) __PYX_ERR(3, 574, __pyx_L4_error); __pyx_t_5 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 574, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 574, __pyx_L4_error) /* "pyfuse3/__init__.pyx":573 * ret = libc_extra.syncfs(fd) * * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * finally: */ } } /* "pyfuse3/__init__.pyx":576 * raise OSError(errno.errno, strerror(errno.errno), path) * finally: * os.close(fd) # <<<<<<<<<<<<<< * * */ /*finally:*/ { /*normal exit:*/{ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_fd}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5; } __pyx_L4_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __pyx_t_6 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; { __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_os); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 576, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 576, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_fd}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 576, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); } __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; goto __pyx_L1_error; __pyx_L8_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); } __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; goto __pyx_L1_error; } __pyx_L5:; } /* "pyfuse3/__init__.pyx":560 * * * def syncfs(path): # <<<<<<<<<<<<<< * '''Sync filesystem mounted at *path* * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.syncfs", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_fd); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":579 * * * def setxattr(path, name, bytes value, namespace='user'): # <<<<<<<<<<<<<< * '''Set extended attribute * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_100setxattr(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_99setxattr, "setxattr(path, name, bytes value, namespace=u'user')\nSet extended attribute\n\n *path* and *name* have to be of type `str`. In Python 3.x, they may\n contain surrogates. *value* has to be of type `bytes`.\n\n Under FreeBSD, the *namespace* parameter may be set to *system* or *user* to\n select the namespace for the extended attribute. For other platforms, this\n parameter is ignored.\n\n In contrast to the `os.setxattr` function from the standard library, the\n method provided by pyfuse3 is also available for non-Linux systems.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_100setxattr = {"setxattr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_100setxattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_99setxattr}; static PyObject *__pyx_pw_7pyfuse3_100setxattr(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_path = 0; PyObject *__pyx_v_name = 0; PyObject *__pyx_v_value = 0; PyObject *__pyx_v_namespace = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[4] = {0,0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setxattr (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_name,&__pyx_n_s_value,&__pyx_n_s_namespace,0}; values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject*)__pyx_n_u_user))); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 579, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 579, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("setxattr", 0, 3, 4, 1); __PYX_ERR(3, 579, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 579, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("setxattr", 0, 3, 4, 2); __PYX_ERR(3, 579, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_namespace); if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 579, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setxattr") < 0)) __PYX_ERR(3, 579, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_path = values[0]; __pyx_v_name = values[1]; __pyx_v_value = ((PyObject*)values[2]); __pyx_v_namespace = values[3]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("setxattr", 0, 3, 4, __pyx_nargs); __PYX_ERR(3, 579, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.setxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(3, 579, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_99setxattr(__pyx_self, __pyx_v_path, __pyx_v_name, __pyx_v_value, __pyx_v_namespace); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_99setxattr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_namespace) { int __pyx_v_ret; Py_ssize_t __pyx_v_len_; char *__pyx_v_cvalue; char *__pyx_v_cpath; char *__pyx_v_cname; int __pyx_v_cnamespace; PyObject *__pyx_v_path_b = NULL; PyObject *__pyx_v_name_b = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; char *__pyx_t_6; PyObject *__pyx_t_7 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setxattr", 1); /* "pyfuse3/__init__.pyx":593 * ''' * * if not isinstance(path, str): # <<<<<<<<<<<<<< * raise TypeError('*path* argument must be of type str') * */ __pyx_t_1 = PyUnicode_Check(__pyx_v_path); __pyx_t_2 = (!__pyx_t_1); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":594 * * if not isinstance(path, str): * raise TypeError('*path* argument must be of type str') # <<<<<<<<<<<<<< * * if not isinstance(name, str): */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 594, __pyx_L1_error) /* "pyfuse3/__init__.pyx":593 * ''' * * if not isinstance(path, str): # <<<<<<<<<<<<<< * raise TypeError('*path* argument must be of type str') * */ } /* "pyfuse3/__init__.pyx":596 * raise TypeError('*path* argument must be of type str') * * if not isinstance(name, str): # <<<<<<<<<<<<<< * raise TypeError('*name* argument must be of type str') * */ __pyx_t_2 = PyUnicode_Check(__pyx_v_name); __pyx_t_1 = (!__pyx_t_2); if (unlikely(__pyx_t_1)) { /* "pyfuse3/__init__.pyx":597 * * if not isinstance(name, str): * raise TypeError('*name* argument must be of type str') # <<<<<<<<<<<<<< * * if namespace not in ('system', 'user'): */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 597, __pyx_L1_error) /* "pyfuse3/__init__.pyx":596 * raise TypeError('*path* argument must be of type str') * * if not isinstance(name, str): # <<<<<<<<<<<<<< * raise TypeError('*name* argument must be of type str') * */ } /* "pyfuse3/__init__.pyx":599 * raise TypeError('*name* argument must be of type str') * * if namespace not in ('system', 'user'): # <<<<<<<<<<<<<< * raise ValueError('*namespace* parameter must be "system" or "user", not %s' * % namespace) */ __Pyx_INCREF(__pyx_v_namespace); __pyx_t_3 = __pyx_v_namespace; __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_system, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 599, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_user, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 599, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":601 * if namespace not in ('system', 'user'): * raise ValueError('*namespace* parameter must be "system" or "user", not %s' * % namespace) # <<<<<<<<<<<<<< * * cdef int ret */ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_namespace_parameter_must_be_sys, __pyx_v_namespace); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "pyfuse3/__init__.pyx":600 * * if namespace not in ('system', 'user'): * raise ValueError('*namespace* parameter must be "system" or "user", not %s' # <<<<<<<<<<<<<< * % namespace) * */ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(3, 600, __pyx_L1_error) /* "pyfuse3/__init__.pyx":599 * raise TypeError('*name* argument must be of type str') * * if namespace not in ('system', 'user'): # <<<<<<<<<<<<<< * raise ValueError('*namespace* parameter must be "system" or "user", not %s' * % namespace) */ } /* "pyfuse3/__init__.pyx":610 * cdef int cnamespace * * if namespace == 'system': # <<<<<<<<<<<<<< * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM * else: */ __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_namespace, __pyx_n_u_system, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 610, __pyx_L1_error) if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":611 * * if namespace == 'system': * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM # <<<<<<<<<<<<<< * else: * cnamespace = libc_extra.EXTATTR_NAMESPACE_USER */ __pyx_v_cnamespace = EXTATTR_NAMESPACE_SYSTEM; /* "pyfuse3/__init__.pyx":610 * cdef int cnamespace * * if namespace == 'system': # <<<<<<<<<<<<<< * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM * else: */ goto __pyx_L8; } /* "pyfuse3/__init__.pyx":613 * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM * else: * cnamespace = libc_extra.EXTATTR_NAMESPACE_USER # <<<<<<<<<<<<<< * * path_b = str2bytes(path) */ /*else*/ { __pyx_v_cnamespace = EXTATTR_NAMESPACE_USER; } __pyx_L8:; /* "pyfuse3/__init__.pyx":615 * cnamespace = libc_extra.EXTATTR_NAMESPACE_USER * * path_b = str2bytes(path) # <<<<<<<<<<<<<< * name_b = str2bytes(name) * PyBytes_AsStringAndSize(value, &cvalue, &len_) */ __pyx_t_4 = __pyx_f_7pyfuse3_str2bytes(__pyx_v_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_path_b = __pyx_t_4; __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":616 * * path_b = str2bytes(path) * name_b = str2bytes(name) # <<<<<<<<<<<<<< * PyBytes_AsStringAndSize(value, &cvalue, &len_) * cpath = path_b */ __pyx_t_4 = __pyx_f_7pyfuse3_str2bytes(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_name_b = __pyx_t_4; __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":617 * path_b = str2bytes(path) * name_b = str2bytes(name) * PyBytes_AsStringAndSize(value, &cvalue, &len_) # <<<<<<<<<<<<<< * cpath = path_b * cname = name_b */ __pyx_t_5 = PyBytes_AsStringAndSize(__pyx_v_value, (&__pyx_v_cvalue), (&__pyx_v_len_)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(3, 617, __pyx_L1_error) /* "pyfuse3/__init__.pyx":618 * name_b = str2bytes(name) * PyBytes_AsStringAndSize(value, &cvalue, &len_) * cpath = path_b # <<<<<<<<<<<<<< * cname = name_b * */ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_path_b); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(3, 618, __pyx_L1_error) __pyx_v_cpath = ((char *)__pyx_t_6); /* "pyfuse3/__init__.pyx":619 * PyBytes_AsStringAndSize(value, &cvalue, &len_) * cpath = path_b * cname = name_b # <<<<<<<<<<<<<< * * with nogil: */ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_name_b); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(3, 619, __pyx_L1_error) __pyx_v_cname = ((char *)__pyx_t_6); /* "pyfuse3/__init__.pyx":621 * cname = name_b * * with nogil: # <<<<<<<<<<<<<< * # len_ is guaranteed positive * ret = libc_extra.setxattr_p( */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":623 * with nogil: * # len_ is guaranteed positive * ret = libc_extra.setxattr_p( # <<<<<<<<<<<<<< * cpath, cname, cvalue, len_, cnamespace) * */ __pyx_v_ret = setxattr_p(__pyx_v_cpath, __pyx_v_cname, __pyx_v_cvalue, ((size_t)__pyx_v_len_), __pyx_v_cnamespace); } /* "pyfuse3/__init__.pyx":621 * cname = name_b * * with nogil: # <<<<<<<<<<<<<< * # len_ is guaranteed positive * ret = libc_extra.setxattr_p( */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L11; } __pyx_L11:; } } /* "pyfuse3/__init__.pyx":626 * cpath, cname, cvalue, len_, cnamespace) * * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * */ __pyx_t_2 = (__pyx_v_ret != 0); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":627 * * if ret != 0: * raise OSError(errno.errno, strerror(errno.errno), path) # <<<<<<<<<<<<<< * * */ __pyx_t_4 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4)) __PYX_ERR(3, 627, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3)) __PYX_ERR(3, 627, __pyx_L1_error); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_path)) __PYX_ERR(3, 627, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 627, __pyx_L1_error) /* "pyfuse3/__init__.pyx":626 * cpath, cname, cvalue, len_, cnamespace) * * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * */ } /* "pyfuse3/__init__.pyx":579 * * * def setxattr(path, name, bytes value, namespace='user'): # <<<<<<<<<<<<<< * '''Set extended attribute * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("pyfuse3.setxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_path_b); __Pyx_XDECREF(__pyx_v_name_b); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":630 * * * def getxattr(path, name, size_t size_guess=128, namespace='user'): # <<<<<<<<<<<<<< * '''Get extended attribute * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_102getxattr(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_101getxattr, "getxattr(path, name, size_t size_guess=128, namespace=u'user')\nGet extended attribute\n\n *path* and *name* have to be of type `str`. In Python 3.x, they may\n contain surrogates. Returns a value of type `bytes`.\n\n If the caller knows the approximate size of the attribute value,\n it should be supplied in *size_guess*. If the guess turns out\n to be wrong, the system call has to be carried out three times\n (the first call will fail, the second determines the size and\n the third finally gets the value).\n\n Under FreeBSD, the *namespace* parameter may be set to *system* or *user* to\n select the namespace for the extended attribute. For other platforms, this\n parameter is ignored.\n\n In contrast to the `os.getxattr` function from the standard library, the\n method provided by pyfuse3 is also available for non-Linux systems.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_102getxattr = {"getxattr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_102getxattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_101getxattr}; static PyObject *__pyx_pw_7pyfuse3_102getxattr(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_path = 0; PyObject *__pyx_v_name = 0; size_t __pyx_v_size_guess; PyObject *__pyx_v_namespace = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[4] = {0,0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("getxattr (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_name,&__pyx_n_s_size_guess,&__pyx_n_s_namespace,0}; values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject*)__pyx_n_u_user))); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 630, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 630, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("getxattr", 0, 2, 4, 1); __PYX_ERR(3, 630, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_guess); if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 630, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_namespace); if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 630, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getxattr") < 0)) __PYX_ERR(3, 630, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_path = values[0]; __pyx_v_name = values[1]; if (values[2]) { __pyx_v_size_guess = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_size_guess == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 630, __pyx_L3_error) } else { __pyx_v_size_guess = ((size_t)((size_t)0x80)); } __pyx_v_namespace = values[3]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("getxattr", 0, 2, 4, __pyx_nargs); __PYX_ERR(3, 630, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.getxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_101getxattr(__pyx_self, __pyx_v_path, __pyx_v_name, __pyx_v_size_guess, __pyx_v_namespace); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_101getxattr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_name, size_t __pyx_v_size_guess, PyObject *__pyx_v_namespace) { Py_ssize_t __pyx_v_ret; char *__pyx_v_buf; char *__pyx_v_cpath; char *__pyx_v_cname; size_t __pyx_v_bufsize; int __pyx_v_cnamespace; PyObject *__pyx_v_path_b = NULL; PyObject *__pyx_v_name_b = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; char *__pyx_t_5; PyObject *__pyx_t_6; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; int __pyx_t_9; char const *__pyx_t_10; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("getxattr", 1); /* "pyfuse3/__init__.pyx":650 * ''' * * if not isinstance(path, str): # <<<<<<<<<<<<<< * raise TypeError('*path* argument must be of type str') * */ __pyx_t_1 = PyUnicode_Check(__pyx_v_path); __pyx_t_2 = (!__pyx_t_1); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":651 * * if not isinstance(path, str): * raise TypeError('*path* argument must be of type str') # <<<<<<<<<<<<<< * * if not isinstance(name, str): */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 651, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 651, __pyx_L1_error) /* "pyfuse3/__init__.pyx":650 * ''' * * if not isinstance(path, str): # <<<<<<<<<<<<<< * raise TypeError('*path* argument must be of type str') * */ } /* "pyfuse3/__init__.pyx":653 * raise TypeError('*path* argument must be of type str') * * if not isinstance(name, str): # <<<<<<<<<<<<<< * raise TypeError('*name* argument must be of type str') * */ __pyx_t_2 = PyUnicode_Check(__pyx_v_name); __pyx_t_1 = (!__pyx_t_2); if (unlikely(__pyx_t_1)) { /* "pyfuse3/__init__.pyx":654 * * if not isinstance(name, str): * raise TypeError('*name* argument must be of type str') # <<<<<<<<<<<<<< * * if namespace not in ('system', 'user'): */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 654, __pyx_L1_error) /* "pyfuse3/__init__.pyx":653 * raise TypeError('*path* argument must be of type str') * * if not isinstance(name, str): # <<<<<<<<<<<<<< * raise TypeError('*name* argument must be of type str') * */ } /* "pyfuse3/__init__.pyx":656 * raise TypeError('*name* argument must be of type str') * * if namespace not in ('system', 'user'): # <<<<<<<<<<<<<< * raise ValueError('*namespace* parameter must be "system" or "user", not %s' * % namespace) */ __Pyx_INCREF(__pyx_v_namespace); __pyx_t_3 = __pyx_v_namespace; __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_system, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 656, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_user, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 656, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":658 * if namespace not in ('system', 'user'): * raise ValueError('*namespace* parameter must be "system" or "user", not %s' * % namespace) # <<<<<<<<<<<<<< * * cdef ssize_t ret */ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_namespace_parameter_must_be_sys, __pyx_v_namespace); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "pyfuse3/__init__.pyx":657 * * if namespace not in ('system', 'user'): * raise ValueError('*namespace* parameter must be "system" or "user", not %s' # <<<<<<<<<<<<<< * % namespace) * */ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(3, 657, __pyx_L1_error) /* "pyfuse3/__init__.pyx":656 * raise TypeError('*name* argument must be of type str') * * if namespace not in ('system', 'user'): # <<<<<<<<<<<<<< * raise ValueError('*namespace* parameter must be "system" or "user", not %s' * % namespace) */ } /* "pyfuse3/__init__.pyx":667 * cdef int cnamespace * * if namespace == 'system': # <<<<<<<<<<<<<< * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM * else: */ __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_namespace, __pyx_n_u_system, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 667, __pyx_L1_error) if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":668 * * if namespace == 'system': * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM # <<<<<<<<<<<<<< * else: * cnamespace = libc_extra.EXTATTR_NAMESPACE_USER */ __pyx_v_cnamespace = EXTATTR_NAMESPACE_SYSTEM; /* "pyfuse3/__init__.pyx":667 * cdef int cnamespace * * if namespace == 'system': # <<<<<<<<<<<<<< * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM * else: */ goto __pyx_L8; } /* "pyfuse3/__init__.pyx":670 * cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM * else: * cnamespace = libc_extra.EXTATTR_NAMESPACE_USER # <<<<<<<<<<<<<< * * path_b = str2bytes(path) */ /*else*/ { __pyx_v_cnamespace = EXTATTR_NAMESPACE_USER; } __pyx_L8:; /* "pyfuse3/__init__.pyx":672 * cnamespace = libc_extra.EXTATTR_NAMESPACE_USER * * path_b = str2bytes(path) # <<<<<<<<<<<<<< * name_b = str2bytes(name) * cpath = path_b */ __pyx_t_4 = __pyx_f_7pyfuse3_str2bytes(__pyx_v_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_path_b = __pyx_t_4; __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":673 * * path_b = str2bytes(path) * name_b = str2bytes(name) # <<<<<<<<<<<<<< * cpath = path_b * cname = name_b */ __pyx_t_4 = __pyx_f_7pyfuse3_str2bytes(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_name_b = __pyx_t_4; __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":674 * path_b = str2bytes(path) * name_b = str2bytes(name) * cpath = path_b # <<<<<<<<<<<<<< * cname = name_b * */ __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_path_b); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(3, 674, __pyx_L1_error) __pyx_v_cpath = ((char *)__pyx_t_5); /* "pyfuse3/__init__.pyx":675 * name_b = str2bytes(name) * cpath = path_b * cname = name_b # <<<<<<<<<<<<<< * * bufsize = size_guess */ __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_name_b); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(3, 675, __pyx_L1_error) __pyx_v_cname = ((char *)__pyx_t_5); /* "pyfuse3/__init__.pyx":677 * cname = name_b * * bufsize = size_guess # <<<<<<<<<<<<<< * buf = stdlib.malloc(bufsize * sizeof(char)) * */ __pyx_v_bufsize = __pyx_v_size_guess; /* "pyfuse3/__init__.pyx":678 * * bufsize = size_guess * buf = stdlib.malloc(bufsize * sizeof(char)) # <<<<<<<<<<<<<< * * if buf is NULL: */ __pyx_v_buf = ((char *)malloc((__pyx_v_bufsize * (sizeof(char))))); /* "pyfuse3/__init__.pyx":680 * buf = stdlib.malloc(bufsize * sizeof(char)) * * if buf is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ __pyx_t_2 = (__pyx_v_buf == NULL); if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":681 * * if buf is NULL: * cpython.exc.PyErr_NoMemory() # <<<<<<<<<<<<<< * * try: */ __pyx_t_6 = PyErr_NoMemory(); if (unlikely(__pyx_t_6 == ((PyObject *)NULL))) __PYX_ERR(3, 681, __pyx_L1_error) /* "pyfuse3/__init__.pyx":680 * buf = stdlib.malloc(bufsize * sizeof(char)) * * if buf is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ } /* "pyfuse3/__init__.pyx":683 * cpython.exc.PyErr_NoMemory() * * try: # <<<<<<<<<<<<<< * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) */ /*try:*/ { /* "pyfuse3/__init__.pyx":684 * * try: * with nogil: # <<<<<<<<<<<<<< * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":685 * try: * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) # <<<<<<<<<<<<<< * * if ret < 0 and errno.errno == errno.ERANGE: */ __pyx_v_ret = getxattr_p(__pyx_v_cpath, __pyx_v_cname, __pyx_v_buf, __pyx_v_bufsize, __pyx_v_cnamespace); } /* "pyfuse3/__init__.pyx":684 * * try: * with nogil: # <<<<<<<<<<<<<< * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L15; } __pyx_L15:; } } /* "pyfuse3/__init__.pyx":687 * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * * if ret < 0 and errno.errno == errno.ERANGE: # <<<<<<<<<<<<<< * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) */ __pyx_t_1 = (__pyx_v_ret < 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L17_bool_binop_done; } __pyx_t_1 = (errno == ERANGE); __pyx_t_2 = __pyx_t_1; __pyx_L17_bool_binop_done:; if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":688 * * if ret < 0 and errno.errno == errno.ERANGE: * with nogil: # <<<<<<<<<<<<<< * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) * if ret < 0: */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":689 * if ret < 0 and errno.errno == errno.ERANGE: * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) # <<<<<<<<<<<<<< * if ret < 0: * raise OSError(errno.errno, strerror(errno.errno), path) */ __pyx_v_ret = getxattr_p(__pyx_v_cpath, __pyx_v_cname, NULL, 0, __pyx_v_cnamespace); } /* "pyfuse3/__init__.pyx":688 * * if ret < 0 and errno.errno == errno.ERANGE: * with nogil: # <<<<<<<<<<<<<< * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) * if ret < 0: */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L21; } __pyx_L21:; } } /* "pyfuse3/__init__.pyx":690 * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) * if ret < 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * bufsize = ret */ __pyx_t_2 = (__pyx_v_ret < 0); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":691 * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) * if ret < 0: * raise OSError(errno.errno, strerror(errno.errno), path) # <<<<<<<<<<<<<< * bufsize = ret * stdlib.free(buf) */ __pyx_t_4 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 691, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 691, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 691, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4)) __PYX_ERR(3, 691, __pyx_L11_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3)) __PYX_ERR(3, 691, __pyx_L11_error); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_path)) __PYX_ERR(3, 691, __pyx_L11_error); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 691, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 691, __pyx_L11_error) /* "pyfuse3/__init__.pyx":690 * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) * if ret < 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * bufsize = ret */ } /* "pyfuse3/__init__.pyx":692 * if ret < 0: * raise OSError(errno.errno, strerror(errno.errno), path) * bufsize = ret # <<<<<<<<<<<<<< * stdlib.free(buf) * buf = stdlib.malloc(bufsize * sizeof(char)) */ __pyx_v_bufsize = ((size_t)__pyx_v_ret); /* "pyfuse3/__init__.pyx":693 * raise OSError(errno.errno, strerror(errno.errno), path) * bufsize = ret * stdlib.free(buf) # <<<<<<<<<<<<<< * buf = stdlib.malloc(bufsize * sizeof(char)) * if buf is NULL: */ free(__pyx_v_buf); /* "pyfuse3/__init__.pyx":694 * bufsize = ret * stdlib.free(buf) * buf = stdlib.malloc(bufsize * sizeof(char)) # <<<<<<<<<<<<<< * if buf is NULL: * cpython.exc.PyErr_NoMemory() */ __pyx_v_buf = ((char *)malloc((__pyx_v_bufsize * (sizeof(char))))); /* "pyfuse3/__init__.pyx":695 * stdlib.free(buf) * buf = stdlib.malloc(bufsize * sizeof(char)) * if buf is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ __pyx_t_2 = (__pyx_v_buf == NULL); if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":696 * buf = stdlib.malloc(bufsize * sizeof(char)) * if buf is NULL: * cpython.exc.PyErr_NoMemory() # <<<<<<<<<<<<<< * * with nogil: */ __pyx_t_6 = PyErr_NoMemory(); if (unlikely(__pyx_t_6 == ((PyObject *)NULL))) __PYX_ERR(3, 696, __pyx_L11_error) /* "pyfuse3/__init__.pyx":695 * stdlib.free(buf) * buf = stdlib.malloc(bufsize * sizeof(char)) * if buf is NULL: # <<<<<<<<<<<<<< * cpython.exc.PyErr_NoMemory() * */ } /* "pyfuse3/__init__.pyx":698 * cpython.exc.PyErr_NoMemory() * * with nogil: # <<<<<<<<<<<<<< * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":699 * * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) # <<<<<<<<<<<<<< * * if ret < 0: */ __pyx_v_ret = getxattr_p(__pyx_v_cpath, __pyx_v_cname, __pyx_v_buf, __pyx_v_bufsize, __pyx_v_cnamespace); } /* "pyfuse3/__init__.pyx":698 * cpython.exc.PyErr_NoMemory() * * with nogil: # <<<<<<<<<<<<<< * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L26; } __pyx_L26:; } } /* "pyfuse3/__init__.pyx":687 * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * * if ret < 0 and errno.errno == errno.ERANGE: # <<<<<<<<<<<<<< * with nogil: * ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) */ } /* "pyfuse3/__init__.pyx":701 * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * * if ret < 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * */ __pyx_t_2 = (__pyx_v_ret < 0); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":702 * * if ret < 0: * raise OSError(errno.errno, strerror(errno.errno), path) # <<<<<<<<<<<<<< * * return PyBytes_FromStringAndSize(buf, ret) */ __pyx_t_3 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 702, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __pyx_f_7pyfuse3_strerror(errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 702, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 702, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(3, 702, __pyx_L11_error); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(3, 702, __pyx_L11_error); __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_path)) __PYX_ERR(3, 702, __pyx_L11_error); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 702, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(3, 702, __pyx_L11_error) /* "pyfuse3/__init__.pyx":701 * ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) * * if ret < 0: # <<<<<<<<<<<<<< * raise OSError(errno.errno, strerror(errno.errno), path) * */ } /* "pyfuse3/__init__.pyx":704 * raise OSError(errno.errno, strerror(errno.errno), path) * * return PyBytes_FromStringAndSize(buf, ret) # <<<<<<<<<<<<<< * * finally: */ __Pyx_XDECREF(__pyx_r); __pyx_t_7 = PyBytes_FromStringAndSize(__pyx_v_buf, __pyx_v_ret); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 704, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_7); __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L10_return; } /* "pyfuse3/__init__.pyx":707 * * finally: * stdlib.free(buf) # <<<<<<<<<<<<<< * * */ /*finally:*/ { __pyx_L11_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; { free(__pyx_v_buf); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); } __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; goto __pyx_L1_error; } __pyx_L10_return: { __pyx_t_16 = __pyx_r; __pyx_r = 0; free(__pyx_v_buf); __pyx_r = __pyx_t_16; __pyx_t_16 = 0; goto __pyx_L0; } } /* "pyfuse3/__init__.pyx":630 * * * def getxattr(path, name, size_t size_guess=128, namespace='user'): # <<<<<<<<<<<<<< * '''Get extended attribute * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("pyfuse3.getxattr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_path_b); __Pyx_XDECREF(__pyx_v_name_b); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":712 * default_options = frozenset(('default_permissions',)) * * def init(ops, mountpoint, options=default_options): # <<<<<<<<<<<<<< * '''Initialize and mount FUSE file system * */ static PyObject *__pyx_pf_7pyfuse3_128__defaults__(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__defaults__", 1); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_options); __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_options); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_options)) __PYX_ERR(3, 712, __pyx_L1_error); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(3, 712, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(3, 712, __pyx_L1_error); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyfuse3.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_104init(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_103init, "init(ops, mountpoint, options=default_options)\nInitialize and mount FUSE file system\n\n *ops* has to be an instance of the `Operations` class (or another\n class defining the same methods).\n\n *args* has to be a set of strings. `default_options` provides some\n reasonable defaults. It is recommended to use these options as a basis and\n add or remove options as necessary. For example::\n\n my_opts = set(pyfuse3.default_options)\n my_opts.add('allow_other')\n my_opts.discard('default_permissions')\n pyfuse3.init(ops, mountpoint, my_opts)\n\n Valid options are listed under ``struct\n fuse_opt fuse_mount_opts[]``\n (in `mount.c `_)\n and ``struct fuse_opt fuse_ll_opts[]``\n (in `fuse_lowlevel_c `_).\n "); static PyMethodDef __pyx_mdef_7pyfuse3_104init = {"init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_104init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_103init}; static PyObject *__pyx_pw_7pyfuse3_104init(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_ops = 0; PyObject *__pyx_v_mountpoint = 0; PyObject *__pyx_v_options = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ops,&__pyx_n_s_mountpoint,&__pyx_n_s_options,0}; __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self); values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_dynamic_args->__pyx_arg_options); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ops)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 712, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mountpoint)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 712, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("init", 0, 2, 3, 1); __PYX_ERR(3, 712, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_options); if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 712, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "init") < 0)) __PYX_ERR(3, 712, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_ops = values[0]; __pyx_v_mountpoint = values[1]; __pyx_v_options = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("init", 0, 2, 3, __pyx_nargs); __PYX_ERR(3, 712, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.init", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_103init(__pyx_self, __pyx_v_ops, __pyx_v_mountpoint, __pyx_v_options); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_103init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ops, PyObject *__pyx_v_mountpoint, PyObject *__pyx_v_options) { struct fuse_args __pyx_v_f_args; int __pyx_v_res; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; unsigned int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; char *__pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init", 1); /* "pyfuse3/__init__.pyx":734 * ''' * * log.debug('Initializing pyfuse3') # <<<<<<<<<<<<<< * cdef fuse_args f_args * cdef int res */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u_Initializing_pyfuse3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":738 * cdef int res * * if not isinstance(mountpoint, str): # <<<<<<<<<<<<<< * raise TypeError('*mountpoint_* argument must be of type str') * */ __pyx_t_5 = PyUnicode_Check(__pyx_v_mountpoint); __pyx_t_6 = (!__pyx_t_5); if (unlikely(__pyx_t_6)) { /* "pyfuse3/__init__.pyx":739 * * if not isinstance(mountpoint, str): * raise TypeError('*mountpoint_* argument must be of type str') # <<<<<<<<<<<<<< * * global operations */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(3, 739, __pyx_L1_error) /* "pyfuse3/__init__.pyx":738 * cdef int res * * if not isinstance(mountpoint, str): # <<<<<<<<<<<<<< * raise TypeError('*mountpoint_* argument must be of type str') * */ } /* "pyfuse3/__init__.pyx":748 * global worker_data * * worker_data = _WorkerData() # <<<<<<<<<<<<<< * mountpoint_b = str2bytes(os.path.abspath(mountpoint)) * operations = ops */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyfuse3__WorkerData)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XGOTREF((PyObject *)__pyx_v_7pyfuse3_worker_data); __Pyx_DECREF_SET(__pyx_v_7pyfuse3_worker_data, ((struct __pyx_obj_7pyfuse3__WorkerData *)__pyx_t_1)); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":749 * * worker_data = _WorkerData() * mountpoint_b = str2bytes(os.path.abspath(mountpoint)) # <<<<<<<<<<<<<< * operations = ops * */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_abspath); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_mountpoint}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_t_3 = __pyx_f_7pyfuse3_str2bytes(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_v_7pyfuse3_mountpoint_b); __Pyx_DECREF_SET(__pyx_v_7pyfuse3_mountpoint_b, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":750 * worker_data = _WorkerData() * mountpoint_b = str2bytes(os.path.abspath(mountpoint)) * operations = ops # <<<<<<<<<<<<<< * * make_fuse_args(options, &f_args) */ __Pyx_INCREF(__pyx_v_ops); __Pyx_XGOTREF(__pyx_v_7pyfuse3_operations); __Pyx_DECREF_SET(__pyx_v_7pyfuse3_operations, __pyx_v_ops); __Pyx_GIVEREF(__pyx_v_ops); /* "pyfuse3/__init__.pyx":752 * operations = ops * * make_fuse_args(options, &f_args) # <<<<<<<<<<<<<< * * log.debug('Calling fuse_session_new') */ __pyx_t_3 = __pyx_f_7pyfuse3_make_fuse_args(__pyx_v_options, (&__pyx_v_f_args)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":754 * make_fuse_args(options, &f_args) * * log.debug('Calling fuse_session_new') # <<<<<<<<<<<<<< * init_fuse_ops() * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_kp_u_Calling_fuse_session_new}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":755 * * log.debug('Calling fuse_session_new') * init_fuse_ops() # <<<<<<<<<<<<<< * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) * if not session: */ __pyx_f_7pyfuse3_init_fuse_ops(); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 755, __pyx_L1_error) /* "pyfuse3/__init__.pyx":756 * log.debug('Calling fuse_session_new') * init_fuse_ops() * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) # <<<<<<<<<<<<<< * if not session: * raise RuntimeError("fuse_session_new() failed") */ __pyx_v_7pyfuse3_session = fuse_session_new((&__pyx_v_f_args), (&__pyx_v_7pyfuse3_fuse_ops), (sizeof(__pyx_v_7pyfuse3_fuse_ops)), NULL); /* "pyfuse3/__init__.pyx":757 * init_fuse_ops() * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) * if not session: # <<<<<<<<<<<<<< * raise RuntimeError("fuse_session_new() failed") * */ __pyx_t_6 = (!(__pyx_v_7pyfuse3_session != 0)); if (unlikely(__pyx_t_6)) { /* "pyfuse3/__init__.pyx":758 * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) * if not session: * raise RuntimeError("fuse_session_new() failed") # <<<<<<<<<<<<<< * * log.debug('Calling fuse_session_mount') */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 758, __pyx_L1_error) /* "pyfuse3/__init__.pyx":757 * init_fuse_ops() * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) * if not session: # <<<<<<<<<<<<<< * raise RuntimeError("fuse_session_new() failed") * */ } /* "pyfuse3/__init__.pyx":760 * raise RuntimeError("fuse_session_new() failed") * * log.debug('Calling fuse_session_mount') # <<<<<<<<<<<<<< * res = fuse_session_mount(session, mountpoint_b) * if res != 0: */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_u_Calling_fuse_session_mount}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":761 * * log.debug('Calling fuse_session_mount') * res = fuse_session_mount(session, mountpoint_b) # <<<<<<<<<<<<<< * if res != 0: * raise RuntimeError('fuse_session_mount failed') */ __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_7pyfuse3_mountpoint_b); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(3, 761, __pyx_L1_error) __pyx_v_res = fuse_session_mount(__pyx_v_7pyfuse3_session, ((char *)__pyx_t_7)); /* "pyfuse3/__init__.pyx":762 * log.debug('Calling fuse_session_mount') * res = fuse_session_mount(session, mountpoint_b) * if res != 0: # <<<<<<<<<<<<<< * raise RuntimeError('fuse_session_mount failed') * */ __pyx_t_6 = (__pyx_v_res != 0); if (unlikely(__pyx_t_6)) { /* "pyfuse3/__init__.pyx":763 * res = fuse_session_mount(session, mountpoint_b) * if res != 0: * raise RuntimeError('fuse_session_mount failed') # <<<<<<<<<<<<<< * * session_fd = fuse_session_fd(session) */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 763, __pyx_L1_error) /* "pyfuse3/__init__.pyx":762 * log.debug('Calling fuse_session_mount') * res = fuse_session_mount(session, mountpoint_b) * if res != 0: # <<<<<<<<<<<<<< * raise RuntimeError('fuse_session_mount failed') * */ } /* "pyfuse3/__init__.pyx":765 * raise RuntimeError('fuse_session_mount failed') * * session_fd = fuse_session_fd(session) # <<<<<<<<<<<<<< * * */ __pyx_v_7pyfuse3_session_fd = fuse_session_fd(__pyx_v_7pyfuse3_session); /* "pyfuse3/__init__.pyx":712 * default_options = frozenset(('default_permissions',)) * * def init(ops, mountpoint, options=default_options): # <<<<<<<<<<<<<< * '''Initialize and mount FUSE file system * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyfuse3.init", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_107generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "pyfuse3/__init__.pyx":768 * * * @async_wrapper # <<<<<<<<<<<<<< * async def main(int min_tasks=1, int max_tasks=99): * '''Run FUSE main loop''' */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_106main(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_105main, "main(int min_tasks=1, int max_tasks=99)\nRun FUSE main loop"); static PyMethodDef __pyx_mdef_7pyfuse3_106main = {"main", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_106main, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_105main}; static PyObject *__pyx_pw_7pyfuse3_106main(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { int __pyx_v_min_tasks; int __pyx_v_max_tasks; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("main (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_min_tasks,&__pyx_n_s_max_tasks,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_min_tasks); if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 768, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_max_tasks); if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 768, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "main") < 0)) __PYX_ERR(3, 768, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } if (values[0]) { __pyx_v_min_tasks = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_min_tasks == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 769, __pyx_L3_error) } else { __pyx_v_min_tasks = ((int)((int)1)); } if (values[1]) { __pyx_v_max_tasks = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_max_tasks == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 769, __pyx_L3_error) } else { __pyx_v_max_tasks = ((int)((int)99)); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("main", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 768, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.main", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_105main(__pyx_self, __pyx_v_min_tasks, __pyx_v_max_tasks); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_105main(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_min_tasks, int __pyx_v_max_tasks) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("main", 0); __pyx_cur_scope = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_31_main(__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(3, 768, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_min_tasks = __pyx_v_min_tasks; __pyx_cur_scope->__pyx_v_max_tasks = __pyx_v_max_tasks; { __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7pyfuse3_107generator31, __pyx_codeobj__43, (PyObject *) __pyx_cur_scope, __pyx_n_s_main, __pyx_n_s_main, __pyx_n_s_pyfuse3); if (unlikely(!gen)) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyfuse3.main", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7pyfuse3_107generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *__pyx_cur_scope = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *)__pyx_generator->closure); PyObject *__pyx_r = NULL; int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; char const *__pyx_t_16; PyObject *__pyx_t_17 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("main", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; case 1: goto __pyx_L9_resume_from_await; case 2: goto __pyx_L22_resume_from_await; case 3: goto __pyx_L23_resume_from_await; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 768, __pyx_L1_error) /* "pyfuse3/__init__.pyx":772 * '''Run FUSE main loop''' * * if session == NULL: # <<<<<<<<<<<<<< * raise RuntimeError('Need to call init() before main()') * */ __pyx_t_1 = (__pyx_v_7pyfuse3_session == NULL); if (unlikely(__pyx_t_1)) { /* "pyfuse3/__init__.pyx":773 * * if session == NULL: * raise RuntimeError('Need to call init() before main()') # <<<<<<<<<<<<<< * * global trio_token */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(3, 773, __pyx_L1_error) /* "pyfuse3/__init__.pyx":772 * '''Run FUSE main loop''' * * if session == NULL: # <<<<<<<<<<<<<< * raise RuntimeError('Need to call init() before main()') * */ } /* "pyfuse3/__init__.pyx":776 * * global trio_token * trio_token = trio.lowlevel.current_trio_token() # <<<<<<<<<<<<<< * * try: */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_trio); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_lowlevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_current_trio_token); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } if (PyDict_SetItem(__pyx_d, __pyx_n_s_trio_token, __pyx_t_2) < 0) __PYX_ERR(3, 776, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":778 * trio_token = trio.lowlevel.current_trio_token() * * try: # <<<<<<<<<<<<<< * async with trio.open_nursery() as nursery: * worker_data.task_count = 1 */ /*try:*/ { /* "pyfuse3/__init__.pyx":779 * * try: * async with trio.open_nursery() as nursery: # <<<<<<<<<<<<<< * worker_data.task_count = 1 * worker_data.task_serial = 1 */ /*with:*/ { __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_trio); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 779, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_open_nursery); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 779, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 779, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_aexit); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 779, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_aenter); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 779, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 779, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L9_resume_from_await:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 779, __pyx_L8_error) __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4); } else { __pyx_t_4 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(3, 779, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /*try:*/ { { __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); /*try:*/ { __Pyx_GIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_v_nursery = __pyx_t_3; __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":780 * try: * async with trio.open_nursery() as nursery: * worker_data.task_count = 1 # <<<<<<<<<<<<<< * worker_data.task_serial = 1 * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, */ __pyx_v_7pyfuse3_worker_data->task_count = 1; /* "pyfuse3/__init__.pyx":781 * async with trio.open_nursery() as nursery: * worker_data.task_count = 1 * worker_data.task_serial = 1 # <<<<<<<<<<<<<< * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, * name=worker_data.get_name()) */ __pyx_v_7pyfuse3_worker_data->task_serial = 1; /* "pyfuse3/__init__.pyx":782 * worker_data.task_count = 1 * worker_data.task_serial = 1 * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, # <<<<<<<<<<<<<< * name=worker_data.get_name()) * finally: */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_nursery, __pyx_n_s_start_soon); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 782, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_session_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 782, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_min_tasks); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 782, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_max_tasks); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 782, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 782, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2)) __PYX_ERR(3, 782, __pyx_L13_error); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_nursery); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_nursery); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_nursery)) __PYX_ERR(3, 782, __pyx_L13_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4)) __PYX_ERR(3, 782, __pyx_L13_error); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_7)) __PYX_ERR(3, 782, __pyx_L13_error); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0; /* "pyfuse3/__init__.pyx":783 * worker_data.task_serial = 1 * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, * name=worker_data.get_name()) # <<<<<<<<<<<<<< * finally: * trio_token = None */ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 783, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = ((struct __pyx_vtabstruct_7pyfuse3__WorkerData *)__pyx_v_7pyfuse3_worker_data->__pyx_vtab)->get_name(__pyx_v_7pyfuse3_worker_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 783, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_name, __pyx_t_4) < 0) __PYX_ERR(3, 783, __pyx_L13_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":782 * worker_data.task_count = 1 * worker_data.task_serial = 1 * nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, # <<<<<<<<<<<<<< * name=worker_data.get_name()) * finally: */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 782, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":779 * * try: * async with trio.open_nursery() as nursery: # <<<<<<<<<<<<<< * worker_data.task_count = 1 * worker_data.task_serial = 1 */ } __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L18_try_end; __pyx_L13_error:; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /*except:*/ { __Pyx_AddTraceback("pyfuse3.main", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_11) < 0) __PYX_ERR(3, 779, __pyx_L15_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_11); __pyx_t_3 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 779, __pyx_L15_except_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 779, __pyx_L15_except_error) __Pyx_GOTREF(__pyx_t_12); __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_0 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; __Pyx_XGIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_t_6 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_t_12); __pyx_cur_scope->__pyx_t_7 = __pyx_t_12; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_SwapException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L22_resume_from_await:; __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_6); __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_8); __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_cur_scope->__pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_t_9); __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; __pyx_cur_scope->__pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_t_10); __pyx_t_11 = __pyx_cur_scope->__pyx_t_6; __pyx_cur_scope->__pyx_t_6 = 0; __Pyx_XGOTREF(__pyx_t_11); __pyx_t_12 = __pyx_cur_scope->__pyx_t_7; __pyx_cur_scope->__pyx_t_7 = 0; __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 779, __pyx_L15_except_error) __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3); } else { __pyx_t_3 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(3, 779, __pyx_L15_except_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_12 = __pyx_t_3; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (__pyx_t_1 < 0) __PYX_ERR(3, 779, __pyx_L15_except_error) __pyx_t_13 = (!__pyx_t_1); if (unlikely(__pyx_t_13)) { __Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_7, __pyx_t_11); __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_11 = 0; __PYX_ERR(3, 779, __pyx_L15_except_error) } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L14_exception_handled; } __pyx_L15_except_error:; __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); goto __pyx_L6_error; __pyx_L14_exception_handled:; __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); __pyx_L18_try_end:; } } /*finally:*/ { /*normal exit:*/{ if (__pyx_t_6) { __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__34, NULL); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 779, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_10); __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_0 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_t_1 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, awaiting value */ __pyx_generator->resume_label = 3; return __pyx_r; __pyx_L23_resume_from_await:; __pyx_t_6 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_6); __pyx_t_10 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 779, __pyx_L6_error) __pyx_t_11 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_11); } else { __pyx_t_11 = NULL; if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_11) < 0) __PYX_ERR(3, 779, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_11); } __pyx_t_10 = __pyx_t_11; __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } goto __pyx_L12; } __pyx_L12:; } goto __pyx_L24; __pyx_L8_error:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L6_error; __pyx_L24:; } } /* "pyfuse3/__init__.pyx":785 * name=worker_data.get_name()) * finally: * trio_token = None # <<<<<<<<<<<<<< * if _notify_queue is not None: * _notify_queue.put(None) */ /*finally:*/ { /*normal exit:*/{ if (PyDict_SetItem(__pyx_d, __pyx_n_s_trio_token, Py_None) < 0) __PYX_ERR(3, 785, __pyx_L1_error) /* "pyfuse3/__init__.pyx":786 * finally: * trio_token = None * if _notify_queue is not None: # <<<<<<<<<<<<<< * _notify_queue.put(None) * */ __pyx_t_13 = (__pyx_v_7pyfuse3__notify_queue != Py_None); if (__pyx_t_13) { /* "pyfuse3/__init__.pyx":787 * trio_token = None * if _notify_queue is not None: * _notify_queue.put(None) # <<<<<<<<<<<<<< * * */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3__notify_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, Py_None}; __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* "pyfuse3/__init__.pyx":786 * finally: * trio_token = None * if _notify_queue is not None: # <<<<<<<<<<<<<< * _notify_queue.put(None) * */ } goto __pyx_L7; } __pyx_L6_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_12 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_8, &__pyx_t_12, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_10, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename; { /* "pyfuse3/__init__.pyx":785 * name=worker_data.get_name()) * finally: * trio_token = None # <<<<<<<<<<<<<< * if _notify_queue is not None: * _notify_queue.put(None) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_trio_token, Py_None) < 0) __PYX_ERR(3, 785, __pyx_L27_error) /* "pyfuse3/__init__.pyx":786 * finally: * trio_token = None * if _notify_queue is not None: # <<<<<<<<<<<<<< * _notify_queue.put(None) * */ __pyx_t_13 = (__pyx_v_7pyfuse3__notify_queue != Py_None); if (__pyx_t_13) { /* "pyfuse3/__init__.pyx":787 * trio_token = None * if _notify_queue is not None: * _notify_queue.put(None) # <<<<<<<<<<<<<< * * */ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3__notify_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 787, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, Py_None}; __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 787, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* "pyfuse3/__init__.pyx":786 * finally: * trio_token = None * if _notify_queue is not None: # <<<<<<<<<<<<<< * _notify_queue.put(None) * */ } } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_12, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestore(__pyx_t_6, __pyx_t_10, __pyx_t_9); __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_12 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16; goto __pyx_L1_error; __pyx_L27_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_12, __pyx_t_17); } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_12 = 0; __pyx_t_17 = 0; goto __pyx_L1_error; } __pyx_L7:; } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* "pyfuse3/__init__.pyx":768 * * * @async_wrapper # <<<<<<<<<<<<<< * async def main(int min_tasks=1, int max_tasks=99): * '''Run FUSE main loop''' */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_Generator_Replace_StopIteration(0); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("main", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":790 * * * def terminate(): # <<<<<<<<<<<<<< * '''Terminate FUSE main loop. * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_109terminate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_108terminate, "terminate()\nTerminate FUSE main loop.\n\n This function gracefully terminates the FUSE main loop (resulting in the call to\n main() to return).\n\n When called by a thread different from the one that runs the main loop, the call must\n be wrapped with `trio.from_thread.run_sync`. The necessary *trio_token* argument can\n (for convience) be retrieved from the `trio_token` module attribute.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_109terminate = {"terminate", (PyCFunction)__pyx_pw_7pyfuse3_109terminate, METH_NOARGS, __pyx_doc_7pyfuse3_108terminate}; static PyObject *__pyx_pw_7pyfuse3_109terminate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("terminate (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7pyfuse3_108terminate(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_108terminate(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("terminate", 1); /* "pyfuse3/__init__.pyx":801 * ''' * * fuse_session_exit(session) # <<<<<<<<<<<<<< * trio.lowlevel.notify_closing(session_fd) * */ fuse_session_exit(__pyx_v_7pyfuse3_session); /* "pyfuse3/__init__.pyx":802 * * fuse_session_exit(session) * trio.lowlevel.notify_closing(session_fd) # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_trio); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lowlevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_notify_closing); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_7pyfuse3_session_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":790 * * * def terminate(): # <<<<<<<<<<<<<< * '''Terminate FUSE main loop. * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.terminate", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":805 * * * def close(unmount=True): # <<<<<<<<<<<<<< * '''Clean up and ensure filesystem is unmounted * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_111close(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_110close, "close(unmount=True)\nClean up and ensure filesystem is unmounted\n\n If *unmount* is False, only clean up operations are peformed, but the file\n system is not explicitly unmounted.\n\n Normally, the filesystem is unmounted by the user calling umount(8) or\n fusermount(1), which then terminates the FUSE main loop. However, the loop\n may also terminate as a result of an exception or a signal. In this case the\n filesystem remains mounted, but any attempt to access it will block (while\n the filesystem process is still running) or (after the filesystem process\n has terminated) return an error. If *unmount* is True, this function will\n ensure that the filesystem is properly unmounted.\n\n Note: if the connection to the kernel is terminated via the\n ``/sys/fs/fuse/connections/`` interface, this function will *not* unmount\n the filesystem even if *unmount* is True.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_111close = {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_111close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_110close}; static PyObject *__pyx_pw_7pyfuse3_111close(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_unmount = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unmount,0}; values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_True))); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unmount); if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 805, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "close") < 0)) __PYX_ERR(3, 805, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_unmount = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("close", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 805, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_110close(__pyx_self, __pyx_v_unmount); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_110close(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_unmount) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("close", 1); /* "pyfuse3/__init__.pyx":827 * global session * * if unmount: # <<<<<<<<<<<<<< * log.debug('Calling fuse_session_unmount') * fuse_session_unmount(session) */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unmount); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 827, __pyx_L1_error) if (__pyx_t_1) { /* "pyfuse3/__init__.pyx":828 * * if unmount: * log.debug('Calling fuse_session_unmount') # <<<<<<<<<<<<<< * fuse_session_unmount(session) * */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_Calling_fuse_session_unmount}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":829 * if unmount: * log.debug('Calling fuse_session_unmount') * fuse_session_unmount(session) # <<<<<<<<<<<<<< * * log.debug('Calling fuse_session_destroy') */ fuse_session_unmount(__pyx_v_7pyfuse3_session); /* "pyfuse3/__init__.pyx":827 * global session * * if unmount: # <<<<<<<<<<<<<< * log.debug('Calling fuse_session_unmount') * fuse_session_unmount(session) */ } /* "pyfuse3/__init__.pyx":831 * fuse_session_unmount(session) * * log.debug('Calling fuse_session_destroy') # <<<<<<<<<<<<<< * fuse_session_destroy(session) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_log); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_Calling_fuse_session_destroy}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":832 * * log.debug('Calling fuse_session_destroy') * fuse_session_destroy(session) # <<<<<<<<<<<<<< * * mountpoint_b = None */ fuse_session_destroy(__pyx_v_7pyfuse3_session); /* "pyfuse3/__init__.pyx":834 * fuse_session_destroy(session) * * mountpoint_b = None # <<<<<<<<<<<<<< * session = NULL * */ __Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7pyfuse3_mountpoint_b); __Pyx_DECREF_SET(__pyx_v_7pyfuse3_mountpoint_b, Py_None); __Pyx_GIVEREF(Py_None); /* "pyfuse3/__init__.pyx":835 * * mountpoint_b = None * session = NULL # <<<<<<<<<<<<<< * * */ __pyx_v_7pyfuse3_session = NULL; /* "pyfuse3/__init__.pyx":805 * * * def close(unmount=True): # <<<<<<<<<<<<<< * '''Clean up and ensure filesystem is unmounted * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":838 * * * def invalidate_inode(fuse_ino_t inode, attr_only=False): # <<<<<<<<<<<<<< * '''Invalidate cache for *inode* * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_113invalidate_inode(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_112invalidate_inode, "invalidate_inode(fuse_ino_t inode, attr_only=False)\nInvalidate cache for *inode*\n\n Instructs the FUSE kernel module to forget cached attributes and\n data (unless *attr_only* is True) for *inode*.\n\n **This operation may block** if writeback caching is active and there is\n dirty data for the inode that is to be invalidated. Unfortunately there is\n no way to return control to the event loop until writeback is complete\n (leading to a deadlock if the necessary write() requests cannot be processed\n by the filesystem). Unless writeback caching is disabled, this function\n should therefore be called from a separate thread.\n\n If the operation is not supported by the kernel, raises `OSError`\n with errno ENOSYS.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_113invalidate_inode = {"invalidate_inode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_113invalidate_inode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_112invalidate_inode}; static PyObject *__pyx_pw_7pyfuse3_113invalidate_inode(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { fuse_ino_t __pyx_v_inode; PyObject *__pyx_v_attr_only = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("invalidate_inode (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inode,&__pyx_n_s_attr_only,0}; values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False))); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inode)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 838, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attr_only); if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 838, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "invalidate_inode") < 0)) __PYX_ERR(3, 838, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_inode = __Pyx_PyInt_As_fuse_ino_t(values[0]); if (unlikely((__pyx_v_inode == ((fuse_ino_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 838, __pyx_L3_error) __pyx_v_attr_only = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("invalidate_inode", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 838, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.invalidate_inode", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_112invalidate_inode(__pyx_self, __pyx_v_inode, __pyx_v_attr_only); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_112invalidate_inode(CYTHON_UNUSED PyObject *__pyx_self, fuse_ino_t __pyx_v_inode, PyObject *__pyx_v_attr_only) { int __pyx_v_ret; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("invalidate_inode", 1); /* "pyfuse3/__init__.pyx":856 * * cdef int ret * if attr_only: # <<<<<<<<<<<<<< * with nogil: * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attr_only); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 856, __pyx_L1_error) if (__pyx_t_1) { /* "pyfuse3/__init__.pyx":857 * cdef int ret * if attr_only: * with nogil: # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) * else: */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":858 * if attr_only: * with nogil: * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) # <<<<<<<<<<<<<< * else: * with nogil: */ __pyx_v_ret = fuse_lowlevel_notify_inval_inode(__pyx_v_7pyfuse3_session, __pyx_v_inode, -1L, 0); } /* "pyfuse3/__init__.pyx":857 * cdef int ret * if attr_only: * with nogil: # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) * else: */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L6; } __pyx_L6:; } } /* "pyfuse3/__init__.pyx":856 * * cdef int ret * if attr_only: # <<<<<<<<<<<<<< * with nogil: * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) */ goto __pyx_L3; } /* "pyfuse3/__init__.pyx":860 * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) * else: * with nogil: # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_inval_inode(session, inode, 0, 0) * */ /*else*/ { { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":861 * else: * with nogil: * ret = fuse_lowlevel_notify_inval_inode(session, inode, 0, 0) # <<<<<<<<<<<<<< * * if ret != 0: */ __pyx_v_ret = fuse_lowlevel_notify_inval_inode(__pyx_v_7pyfuse3_session, __pyx_v_inode, 0, 0); } /* "pyfuse3/__init__.pyx":860 * ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) * else: * with nogil: # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_inval_inode(session, inode, 0, 0) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L9; } __pyx_L9:; } } } __pyx_L3:; /* "pyfuse3/__init__.pyx":863 * ret = fuse_lowlevel_notify_inval_inode(session, inode, 0, 0) * * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_inval_inode returned: ' + strerror(-ret)) * */ __pyx_t_1 = (__pyx_v_ret != 0); if (unlikely(__pyx_t_1)) { /* "pyfuse3/__init__.pyx":864 * * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_inval_inode returned: ' + strerror(-ret)) # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __Pyx_PyInt_From_int((-__pyx_v_ret)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_7pyfuse3_strerror((-__pyx_v_ret)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Add(__pyx_kp_u_fuse_lowlevel_notify_inval_inode, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(3, 864, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(3, 864, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(3, 864, __pyx_L1_error) /* "pyfuse3/__init__.pyx":863 * ret = fuse_lowlevel_notify_inval_inode(session, inode, 0, 0) * * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_inval_inode returned: ' + strerror(-ret)) * */ } /* "pyfuse3/__init__.pyx":838 * * * def invalidate_inode(fuse_ino_t inode, attr_only=False): # <<<<<<<<<<<<<< * '''Invalidate cache for *inode* * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.invalidate_inode", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":867 * * * def invalidate_entry(fuse_ino_t inode_p, bytes name, fuse_ino_t deleted=0): # <<<<<<<<<<<<<< * '''Invalidate directory entry * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_115invalidate_entry(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_114invalidate_entry, "invalidate_entry(fuse_ino_t inode_p, bytes name, fuse_ino_t deleted=0)\nInvalidate directory entry\n\n Instructs the FUSE kernel module to forget about the directory entry *name*\n in the directory with inode *inode_p*.\n\n If the inode passed as *deleted* matches the inode that is currently\n associated with *name* by the kernel, any inotify watchers of this inode are\n informed that the entry has been deleted.\n\n If there is a pending filesystem operation that is related to the parent\n directory or directory entry, this function will block until that operation\n has completed. Therefore, to avoid a deadlock this function must not be\n called while handling a related request, nor while holding a lock that could\n be needed for handling such a request.\n\n As for kernel 4.18, a \"related operation\" is a `~Operations.lookup`,\n `~Operations.symlink`, `~Operations.mknod`, `~Operations.mkdir`,\n `~Operations.unlink`, `~Operations.rename`, `~Operations.link` or\n `~Operations.create` request for the parent, and a `~Operations.setattr`,\n `~Operations.unlink`, `~Operations.rmdir`, `~Operations.rename`,\n `~Operations.setxattr`, `~Operations.removexattr` or `~Operations.readdir`\n request for the inode itself.\n\n For technical reasons, this function can also not return control to the main\n event loop but will actually block. To return control to the event loop\n while this function is running, call it in a separate thread using\n `trio.run_sync_in_worker_thread\n `_.\n A less complicated alternative is to use the `invalidate_entry_async` function\n instead.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_115invalidate_entry = {"invalidate_entry", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_115invalidate_entry, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_114invalidate_entry}; static PyObject *__pyx_pw_7pyfuse3_115invalidate_entry(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { fuse_ino_t __pyx_v_inode_p; PyObject *__pyx_v_name = 0; fuse_ino_t __pyx_v_deleted; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("invalidate_entry (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inode_p,&__pyx_n_s_name,&__pyx_n_s_deleted,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inode_p)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 867, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 867, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("invalidate_entry", 0, 2, 3, 1); __PYX_ERR(3, 867, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_deleted); if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 867, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "invalidate_entry") < 0)) __PYX_ERR(3, 867, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_inode_p = __Pyx_PyInt_As_fuse_ino_t(values[0]); if (unlikely((__pyx_v_inode_p == ((fuse_ino_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 867, __pyx_L3_error) __pyx_v_name = ((PyObject*)values[1]); if (values[2]) { __pyx_v_deleted = __Pyx_PyInt_As_fuse_ino_t(values[2]); if (unlikely((__pyx_v_deleted == ((fuse_ino_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 867, __pyx_L3_error) } else { __pyx_v_deleted = ((fuse_ino_t)((fuse_ino_t)0)); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("invalidate_entry", 0, 2, 3, __pyx_nargs); __PYX_ERR(3, 867, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.invalidate_entry", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyBytes_Type), 1, "name", 1))) __PYX_ERR(3, 867, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_114invalidate_entry(__pyx_self, __pyx_v_inode_p, __pyx_v_name, __pyx_v_deleted); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_114invalidate_entry(CYTHON_UNUSED PyObject *__pyx_self, fuse_ino_t __pyx_v_inode_p, PyObject *__pyx_v_name, fuse_ino_t __pyx_v_deleted) { char *__pyx_v_cname; Py_ssize_t __pyx_v_slen; size_t __pyx_v_len_; int __pyx_v_ret; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("invalidate_entry", 1); /* "pyfuse3/__init__.pyx":905 * cdef int ret * * PyBytes_AsStringAndSize(name, &cname, &slen) # <<<<<<<<<<<<<< * # len_ is guaranteed positive * len_ = slen */ __pyx_t_1 = PyBytes_AsStringAndSize(__pyx_v_name, (&__pyx_v_cname), ((Py_ssize_t *)(&__pyx_v_slen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 905, __pyx_L1_error) /* "pyfuse3/__init__.pyx":907 * PyBytes_AsStringAndSize(name, &cname, &slen) * # len_ is guaranteed positive * len_ = slen # <<<<<<<<<<<<<< * * if deleted: */ __pyx_v_len_ = ((size_t)__pyx_v_slen); /* "pyfuse3/__init__.pyx":909 * len_ = slen * * if deleted: # <<<<<<<<<<<<<< * with nogil: # might block! * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) */ __pyx_t_2 = (__pyx_v_deleted != 0); if (__pyx_t_2) { /* "pyfuse3/__init__.pyx":910 * * if deleted: * with nogil: # might block! # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) * if ret != 0: */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":911 * if deleted: * with nogil: # might block! * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) # <<<<<<<<<<<<<< * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' */ __pyx_v_ret = fuse_lowlevel_notify_delete(__pyx_v_7pyfuse3_session, __pyx_v_inode_p, __pyx_v_deleted, __pyx_v_cname, __pyx_v_len_); } /* "pyfuse3/__init__.pyx":910 * * if deleted: * with nogil: # might block! # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) * if ret != 0: */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L6; } __pyx_L6:; } } /* "pyfuse3/__init__.pyx":912 * with nogil: # might block! * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' * + strerror(-ret)) */ __pyx_t_2 = (__pyx_v_ret != 0); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":913 * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' # <<<<<<<<<<<<<< * + strerror(-ret)) * else: */ __pyx_t_3 = __Pyx_PyInt_From_int((-__pyx_v_ret)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "pyfuse3/__init__.pyx":914 * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' * + strerror(-ret)) # <<<<<<<<<<<<<< * else: * with nogil: # might block! */ __pyx_t_4 = __pyx_f_7pyfuse3_strerror((-__pyx_v_ret)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Add(__pyx_kp_u_fuse_lowlevel_notify_delete_retu, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":913 * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' # <<<<<<<<<<<<<< * + strerror(-ret)) * else: */ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(3, 913, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(3, 913, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(3, 913, __pyx_L1_error) /* "pyfuse3/__init__.pyx":912 * with nogil: # might block! * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' * + strerror(-ret)) */ } /* "pyfuse3/__init__.pyx":909 * len_ = slen * * if deleted: # <<<<<<<<<<<<<< * with nogil: # might block! * ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) */ goto __pyx_L3; } /* "pyfuse3/__init__.pyx":916 * + strerror(-ret)) * else: * with nogil: # might block! # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) * if ret != 0: */ /*else*/ { { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":917 * else: * with nogil: # might block! * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) # <<<<<<<<<<<<<< * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' */ __pyx_v_ret = fuse_lowlevel_notify_inval_entry(__pyx_v_7pyfuse3_session, __pyx_v_inode_p, __pyx_v_cname, __pyx_v_len_); } /* "pyfuse3/__init__.pyx":916 * + strerror(-ret)) * else: * with nogil: # might block! # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) * if ret != 0: */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L10; } __pyx_L10:; } } /* "pyfuse3/__init__.pyx":918 * with nogil: # might block! * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' * + strerror(-ret)) */ __pyx_t_2 = (__pyx_v_ret != 0); if (unlikely(__pyx_t_2)) { /* "pyfuse3/__init__.pyx":919 * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' # <<<<<<<<<<<<<< * + strerror(-ret)) * */ __pyx_t_5 = __Pyx_PyInt_From_int((-__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* "pyfuse3/__init__.pyx":920 * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' * + strerror(-ret)) # <<<<<<<<<<<<<< * * */ __pyx_t_4 = __pyx_f_7pyfuse3_strerror((-__pyx_v_ret)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Add(__pyx_kp_u_fuse_lowlevel_notify_inval_entry, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":919 * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' # <<<<<<<<<<<<<< * + strerror(-ret)) * */ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(3, 919, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(3, 919, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(3, 919, __pyx_L1_error) /* "pyfuse3/__init__.pyx":918 * with nogil: # might block! * ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' * + strerror(-ret)) */ } } __pyx_L3:; /* "pyfuse3/__init__.pyx":867 * * * def invalidate_entry(fuse_ino_t inode_p, bytes name, fuse_ino_t deleted=0): # <<<<<<<<<<<<<< * '''Invalidate directory entry * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.invalidate_entry", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":923 * * * def invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False): # <<<<<<<<<<<<<< * '''Asynchronously invalidate directory entry * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_117invalidate_entry_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_116invalidate_entry_async, "invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False)\nAsynchronously invalidate directory entry\n\n This function performs the same operation as `invalidate_entry`, but does so\n asynchronously in a separate thread. This avoids the deadlocks that may\n occur when using `invalidate_entry` from within a request handler, but means\n that the function generally returns before the kernel has actually\n invalidated the entry, and that no errors can be reported (they will be\n logged though).\n\n The directory entries that are to be invalidated are put in an unbounded\n queue which is processed by a single thread. This means that if the entry at\n the beginning of the queue cannot be invalidated yet because a related file\n system operation is still in progress, none of the other entries will be\n processed and repeated calls to this function will result in continued\n growth of the queue.\n\n If there are errors, an exception is logged using the `logging` module.\n\n If *ignore_enoent* is True, ignore ENOENT errors (which occur if the\n kernel doesn't actually have knowledge of the entry that is to be\n removed).\n "); static PyMethodDef __pyx_mdef_7pyfuse3_117invalidate_entry_async = {"invalidate_entry_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_117invalidate_entry_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_116invalidate_entry_async}; static PyObject *__pyx_pw_7pyfuse3_117invalidate_entry_async(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_inode_p = 0; PyObject *__pyx_v_name = 0; PyObject *__pyx_v_deleted = 0; PyObject *__pyx_v_ignore_enoent = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[4] = {0,0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("invalidate_entry_async (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inode_p,&__pyx_n_s_name,&__pyx_n_s_deleted,&__pyx_n_s_ignore_enoent,0}; values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)__pyx_int_0))); values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False))); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inode_p)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 923, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 923, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("invalidate_entry_async", 0, 2, 4, 1); __PYX_ERR(3, 923, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_deleted); if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 923, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ignore_enoent); if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 923, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "invalidate_entry_async") < 0)) __PYX_ERR(3, 923, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_inode_p = values[0]; __pyx_v_name = values[1]; __pyx_v_deleted = values[2]; __pyx_v_ignore_enoent = values[3]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("invalidate_entry_async", 0, 2, 4, __pyx_nargs); __PYX_ERR(3, 923, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.invalidate_entry_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_116invalidate_entry_async(__pyx_self, __pyx_v_inode_p, __pyx_v_name, __pyx_v_deleted, __pyx_v_ignore_enoent); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_116invalidate_entry_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_inode_p, PyObject *__pyx_v_name, PyObject *__pyx_v_deleted, PyObject *__pyx_v_ignore_enoent) { PyObject *__pyx_v_t = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; PyObject *__pyx_t_6 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("invalidate_entry_async", 1); /* "pyfuse3/__init__.pyx":949 * global _notify_queue * * if _notify_queue is None: # <<<<<<<<<<<<<< * log.debug('Starting notify worker.') * _notify_queue = Queue() */ __pyx_t_1 = (__pyx_v_7pyfuse3__notify_queue == Py_None); if (__pyx_t_1) { /* "pyfuse3/__init__.pyx":950 * * if _notify_queue is None: * log.debug('Starting notify worker.') # <<<<<<<<<<<<<< * _notify_queue = Queue() * t = threading.Thread(target=_notify_loop) */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_Starting_notify_worker}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":951 * if _notify_queue is None: * log.debug('Starting notify worker.') * _notify_queue = Queue() # <<<<<<<<<<<<<< * t = threading.Thread(target=_notify_loop) * t.daemon = True */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Queue); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_XGOTREF(__pyx_v_7pyfuse3__notify_queue); __Pyx_DECREF_SET(__pyx_v_7pyfuse3__notify_queue, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":952 * log.debug('Starting notify worker.') * _notify_queue = Queue() * t = threading.Thread(target=_notify_loop) # <<<<<<<<<<<<<< * t.daemon = True * t.start() */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_notify_loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_target, __pyx_t_3) < 0) __PYX_ERR(3, 952, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_t = __pyx_t_3; __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":953 * _notify_queue = Queue() * t = threading.Thread(target=_notify_loop) * t.daemon = True # <<<<<<<<<<<<<< * t.start() * */ if (__Pyx_PyObject_SetAttrStr(__pyx_v_t, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(3, 953, __pyx_L1_error) /* "pyfuse3/__init__.pyx":954 * t = threading.Thread(target=_notify_loop) * t.daemon = True * t.start() # <<<<<<<<<<<<<< * * _notify_queue.put((inode_p, name, deleted, ignore_enoent)) */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 954, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 954, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":949 * global _notify_queue * * if _notify_queue is None: # <<<<<<<<<<<<<< * log.debug('Starting notify worker.') * _notify_queue = Queue() */ } /* "pyfuse3/__init__.pyx":956 * t.start() * * _notify_queue.put((inode_p, name, deleted, ignore_enoent)) # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7pyfuse3__notify_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_inode_p); __Pyx_GIVEREF(__pyx_v_inode_p); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_inode_p)) __PYX_ERR(3, 956, __pyx_L1_error); __Pyx_INCREF(__pyx_v_name); __Pyx_GIVEREF(__pyx_v_name); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_name)) __PYX_ERR(3, 956, __pyx_L1_error); __Pyx_INCREF(__pyx_v_deleted); __Pyx_GIVEREF(__pyx_v_deleted); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_deleted)) __PYX_ERR(3, 956, __pyx_L1_error); __Pyx_INCREF(__pyx_v_ignore_enoent); __Pyx_GIVEREF(__pyx_v_ignore_enoent); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_ignore_enoent)) __PYX_ERR(3, 956, __pyx_L1_error); __pyx_t_6 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":923 * * * def invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False): # <<<<<<<<<<<<<< * '''Asynchronously invalidate directory entry * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("pyfuse3.invalidate_entry_async", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_t); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":959 * * * def notify_store(inode, offset, data): # <<<<<<<<<<<<<< * '''Store data in kernel page cache * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_119notify_store(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_118notify_store, "notify_store(inode, offset, data)\nStore data in kernel page cache\n\n Sends *data* for the kernel to store it in the page cache for *inode* at\n *offset*. If this provides data beyond the current file size, the file is\n automatically extended.\n\n If this function raises an exception, the store may still have completed\n partially.\n\n If the operation is not supported by the kernel, raises `OSError`\n with errno ENOSYS.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_119notify_store = {"notify_store", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_119notify_store, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_118notify_store}; static PyObject *__pyx_pw_7pyfuse3_119notify_store(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_inode = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_data = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("notify_store (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inode,&__pyx_n_s_offset,&__pyx_n_s_data,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inode)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 959, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 959, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("notify_store", 1, 3, 3, 1); __PYX_ERR(3, 959, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 959, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("notify_store", 1, 3, 3, 2); __PYX_ERR(3, 959, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "notify_store") < 0)) __PYX_ERR(3, 959, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_inode = values[0]; __pyx_v_offset = values[1]; __pyx_v_data = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("notify_store", 1, 3, 3, __pyx_nargs); __PYX_ERR(3, 959, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.notify_store", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_118notify_store(__pyx_self, __pyx_v_inode, __pyx_v_offset, __pyx_v_data); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_118notify_store(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_inode, PyObject *__pyx_v_offset, PyObject *__pyx_v_data) { int __pyx_v_ret; fuse_ino_t __pyx_v_ino; off_t __pyx_v_off; Py_buffer __pyx_v_pybuf; struct fuse_bufvec __pyx_v_bufvec; struct fuse_buf *__pyx_v_buf; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; struct fuse_buf *__pyx_t_2; void *__pyx_t_3; fuse_ino_t __pyx_t_4; off_t __pyx_t_5; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("notify_store", 1); /* "pyfuse3/__init__.pyx":983 * cdef fuse_buf *buf * * PyObject_GetBuffer(data, &pybuf, PyBUF_CONTIG_RO) # <<<<<<<<<<<<<< * bufvec.count = 1 * bufvec.idx = 0 */ __pyx_t_1 = PyObject_GetBuffer(__pyx_v_data, (&__pyx_v_pybuf), PyBUF_CONTIG_RO); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 983, __pyx_L1_error) /* "pyfuse3/__init__.pyx":984 * * PyObject_GetBuffer(data, &pybuf, PyBUF_CONTIG_RO) * bufvec.count = 1 # <<<<<<<<<<<<<< * bufvec.idx = 0 * bufvec.off = 0 */ __pyx_v_bufvec.count = 1; /* "pyfuse3/__init__.pyx":985 * PyObject_GetBuffer(data, &pybuf, PyBUF_CONTIG_RO) * bufvec.count = 1 * bufvec.idx = 0 # <<<<<<<<<<<<<< * bufvec.off = 0 * */ __pyx_v_bufvec.idx = 0; /* "pyfuse3/__init__.pyx":986 * bufvec.count = 1 * bufvec.idx = 0 * bufvec.off = 0 # <<<<<<<<<<<<<< * * buf = bufvec.buf */ __pyx_v_bufvec.off = 0; /* "pyfuse3/__init__.pyx":988 * bufvec.off = 0 * * buf = bufvec.buf # <<<<<<<<<<<<<< * buf[0].flags = 0 * buf[0].mem = pybuf.buf */ __pyx_t_2 = __pyx_v_bufvec.buf; __pyx_v_buf = __pyx_t_2; /* "pyfuse3/__init__.pyx":989 * * buf = bufvec.buf * buf[0].flags = 0 # <<<<<<<<<<<<<< * buf[0].mem = pybuf.buf * buf[0].size = pybuf.len # guaranteed positive */ (__pyx_v_buf[0]).flags = 0; /* "pyfuse3/__init__.pyx":990 * buf = bufvec.buf * buf[0].flags = 0 * buf[0].mem = pybuf.buf # <<<<<<<<<<<<<< * buf[0].size = pybuf.len # guaranteed positive * */ __pyx_t_3 = __pyx_v_pybuf.buf; (__pyx_v_buf[0]).mem = __pyx_t_3; /* "pyfuse3/__init__.pyx":991 * buf[0].flags = 0 * buf[0].mem = pybuf.buf * buf[0].size = pybuf.len # guaranteed positive # <<<<<<<<<<<<<< * * ino = inode */ (__pyx_v_buf[0]).size = ((size_t)__pyx_v_pybuf.len); /* "pyfuse3/__init__.pyx":993 * buf[0].size = pybuf.len # guaranteed positive * * ino = inode # <<<<<<<<<<<<<< * off = offset * with nogil: */ __pyx_t_4 = __Pyx_PyInt_As_fuse_ino_t(__pyx_v_inode); if (unlikely((__pyx_t_4 == ((fuse_ino_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 993, __pyx_L1_error) __pyx_v_ino = __pyx_t_4; /* "pyfuse3/__init__.pyx":994 * * ino = inode * off = offset # <<<<<<<<<<<<<< * with nogil: * ret = fuse_lowlevel_notify_store(session, ino, off, &bufvec, 0) */ __pyx_t_5 = __Pyx_PyInt_As_off_t(__pyx_v_offset); if (unlikely((__pyx_t_5 == ((off_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 994, __pyx_L1_error) __pyx_v_off = __pyx_t_5; /* "pyfuse3/__init__.pyx":995 * ino = inode * off = offset * with nogil: # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_store(session, ino, off, &bufvec, 0) * */ { #ifdef WITH_THREAD PyThreadState *_save; _save = NULL; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* "pyfuse3/__init__.pyx":996 * off = offset * with nogil: * ret = fuse_lowlevel_notify_store(session, ino, off, &bufvec, 0) # <<<<<<<<<<<<<< * * PyBuffer_Release(&pybuf) */ __pyx_v_ret = fuse_lowlevel_notify_store(__pyx_v_7pyfuse3_session, __pyx_v_ino, __pyx_v_off, (&__pyx_v_bufvec), 0); } /* "pyfuse3/__init__.pyx":995 * ino = inode * off = offset * with nogil: # <<<<<<<<<<<<<< * ret = fuse_lowlevel_notify_store(session, ino, off, &bufvec, 0) * */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L5:; } } /* "pyfuse3/__init__.pyx":998 * ret = fuse_lowlevel_notify_store(session, ino, off, &bufvec, 0) * * PyBuffer_Release(&pybuf) # <<<<<<<<<<<<<< * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_store returned: ' + strerror(-ret)) */ PyBuffer_Release((&__pyx_v_pybuf)); /* "pyfuse3/__init__.pyx":999 * * PyBuffer_Release(&pybuf) * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_store returned: ' + strerror(-ret)) * */ __pyx_t_6 = (__pyx_v_ret != 0); if (unlikely(__pyx_t_6)) { /* "pyfuse3/__init__.pyx":1000 * PyBuffer_Release(&pybuf) * if ret != 0: * raise OSError(-ret, 'fuse_lowlevel_notify_store returned: ' + strerror(-ret)) # <<<<<<<<<<<<<< * * */ __pyx_t_7 = __Pyx_PyInt_From_int((-__pyx_v_ret)); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __pyx_f_7pyfuse3_strerror((-__pyx_v_ret)); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyNumber_Add(__pyx_kp_u_fuse_lowlevel_notify_store_retur, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7)) __PYX_ERR(3, 1000, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_9); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9)) __PYX_ERR(3, 1000, __pyx_L1_error); __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(3, 1000, __pyx_L1_error) /* "pyfuse3/__init__.pyx":999 * * PyBuffer_Release(&pybuf) * if ret != 0: # <<<<<<<<<<<<<< * raise OSError(-ret, 'fuse_lowlevel_notify_store returned: ' + strerror(-ret)) * */ } /* "pyfuse3/__init__.pyx":959 * * * def notify_store(inode, offset, data): # <<<<<<<<<<<<<< * '''Store data in kernel page cache * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("pyfuse3.notify_store", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":1003 * * * def get_sup_groups(pid): # <<<<<<<<<<<<<< * '''Return supplementary group ids of *pid* * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_121get_sup_groups(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_120get_sup_groups, "get_sup_groups(pid)\nReturn supplementary group ids of *pid*\n\n This function is relatively expensive because it has to read the group ids\n from ``/proc/[pid]/status``. For the same reason, it will also not work on\n systems that do not provide a ``/proc`` file system.\n\n Returns a set.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_121get_sup_groups = {"get_sup_groups", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_121get_sup_groups, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_120get_sup_groups}; static PyObject *__pyx_pw_7pyfuse3_121get_sup_groups(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_pid = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_sup_groups (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pid,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pid)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 1003, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_sup_groups") < 0)) __PYX_ERR(3, 1003, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_pid = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_sup_groups", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 1003, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.get_sup_groups", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_120get_sup_groups(__pyx_self, __pyx_v_pid); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_120get_sup_groups(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pid) { PyObject *__pyx_v_fh = NULL; PyObject *__pyx_v_line = NULL; PyObject *__pyx_v_gids = NULL; PyObject *__pyx_v_x = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; unsigned int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; Py_ssize_t __pyx_t_10; PyObject *(*__pyx_t_11)(PyObject *); int __pyx_t_12; PyObject *__pyx_t_13 = NULL; int __pyx_t_14; int __pyx_t_15; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_sup_groups", 1); /* "pyfuse3/__init__.pyx":1013 * ''' * * with open('/proc/%d/status' % pid, 'r') as fh: # <<<<<<<<<<<<<< * for line in fh: * if line.startswith('Groups:'): */ /*with:*/ { __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_proc_d_status, __pyx_v_pid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(3, 1013, __pyx_L1_error); __Pyx_INCREF(__pyx_n_u_r); __Pyx_GIVEREF(__pyx_n_u_r); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_r)) __PYX_ERR(3, 1013, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1013, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1013, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_t_4 = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*try:*/ { { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { __pyx_v_fh = __pyx_t_4; __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":1014 * * with open('/proc/%d/status' % pid, 'r') as fh: * for line in fh: # <<<<<<<<<<<<<< * if line.startswith('Groups:'): * break */ if (likely(PyList_CheckExact(__pyx_v_fh)) || PyTuple_CheckExact(__pyx_v_fh)) { __pyx_t_4 = __pyx_v_fh; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0; __pyx_t_11 = NULL; } else { __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_fh); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1014, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 1014, __pyx_L7_error) } for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_4))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 1014, __pyx_L7_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(3, 1014, __pyx_L7_error) #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1014, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 1014, __pyx_L7_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(3, 1014, __pyx_L7_error) #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1014, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_4); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(3, 1014, __pyx_L7_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":1015 * with open('/proc/%d/status' % pid, 'r') as fh: * for line in fh: * if line.startswith('Groups:'): # <<<<<<<<<<<<<< * break * else: */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1015, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_u_Groups}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1015, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(3, 1015, __pyx_L7_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { /* "pyfuse3/__init__.pyx":1016 * for line in fh: * if line.startswith('Groups:'): * break # <<<<<<<<<<<<<< * else: * raise RuntimeError("Unable to parse %s" % fh.name) */ goto __pyx_L14_break; /* "pyfuse3/__init__.pyx":1015 * with open('/proc/%d/status' % pid, 'r') as fh: * for line in fh: * if line.startswith('Groups:'): # <<<<<<<<<<<<<< * break * else: */ } /* "pyfuse3/__init__.pyx":1014 * * with open('/proc/%d/status' % pid, 'r') as fh: * for line in fh: # <<<<<<<<<<<<<< * if line.startswith('Groups:'): * break */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L16_for_else; __pyx_L14_break:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L17_for_end; /*else*/ { __pyx_L16_for_else:; /* "pyfuse3/__init__.pyx":1018 * break * else: * raise RuntimeError("Unable to parse %s" % fh.name) # <<<<<<<<<<<<<< * gids = set() * for x in line.split()[1:]: */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fh, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1018, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Unable_to_parse_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1018, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_RuntimeError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1018, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(3, 1018, __pyx_L7_error) } __pyx_L17_for_end:; /* "pyfuse3/__init__.pyx":1013 * ''' * * with open('/proc/%d/status' % pid, 'r') as fh: # <<<<<<<<<<<<<< * for line in fh: * if line.startswith('Groups:'): */ } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; /*except:*/ { __Pyx_AddTraceback("pyfuse3.get_sup_groups", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(3, 1013, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1013, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 1013, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_12 < 0) __PYX_ERR(3, 1013, __pyx_L9_except_error) __pyx_t_14 = (!__pyx_t_12); if (unlikely(__pyx_t_14)) { __Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_1, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; __PYX_ERR(3, 1013, __pyx_L9_except_error) } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L8_exception_handled; } __pyx_L9_except_error:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L1_error; __pyx_L8_exception_handled:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_L12_try_end:; } } /*finally:*/ { /*normal exit:*/{ if (__pyx_t_3) { __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__34, NULL); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } goto __pyx_L6; } __pyx_L6:; } goto __pyx_L21; __pyx_L3_error:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L1_error; __pyx_L21:; } /* "pyfuse3/__init__.pyx":1019 * else: * raise RuntimeError("Unable to parse %s" % fh.name) * gids = set() # <<<<<<<<<<<<<< * for x in line.split()[1:]: * gids.add(int(x)) */ __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1019, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_gids = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":1020 * raise RuntimeError("Unable to parse %s" % fh.name) * gids = set() * for x in line.split()[1:]: # <<<<<<<<<<<<<< * gids.add(int(x)) * */ if (unlikely(!__pyx_v_line)) { __Pyx_RaiseUnboundLocalError("line"); __PYX_ERR(3, 1020, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__45, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_10 = 0; __pyx_t_11 = NULL; } else { __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 1020, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_2))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 1020, __pyx_L1_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(3, 1020, __pyx_L1_error) #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 1020, __pyx_L1_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(3, 1020, __pyx_L1_error) #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(3, 1020, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":1021 * gids = set() * for x in line.split()[1:]: * gids.add(int(x)) # <<<<<<<<<<<<<< * * return gids */ __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = PySet_Add(__pyx_v_gids, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(3, 1021, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyfuse3/__init__.pyx":1020 * raise RuntimeError("Unable to parse %s" % fh.name) * gids = set() * for x in line.split()[1:]: # <<<<<<<<<<<<<< * gids.add(int(x)) * */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":1023 * gids.add(int(x)) * * return gids # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_gids); __pyx_r = __pyx_v_gids; goto __pyx_L0; /* "pyfuse3/__init__.pyx":1003 * * * def get_sup_groups(pid): # <<<<<<<<<<<<<< * '''Return supplementary group ids of *pid* * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.get_sup_groups", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_fh); __Pyx_XDECREF(__pyx_v_line); __Pyx_XDECREF(__pyx_v_gids); __Pyx_XDECREF(__pyx_v_x); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyfuse3/__init__.pyx":1026 * * * def readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id): # <<<<<<<<<<<<<< * '''Report a directory entry in response to a `~Operations.readdir` request. * */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_123readdir_reply(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_122readdir_reply, "readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id)\nReport a directory entry in response to a `~Operations.readdir` request.\n\n This function should be called by the `~Operations.readdir` handler to\n provide the list of directory entries. The function should be called\n once for each directory entry, until it returns False.\n\n *token* must be the token received by the `~Operations.readdir` handler.\n\n *name* and must be the name of the directory entry and *attr* an\n `EntryAttributes` instance holding its attributes.\n\n *next_id* must be a 64-bit integer value that uniquely identifies the\n current position in the list of directory entries. It may be passed back\n to a later `~Operations.readdir` call to start another listing at the\n right position. This value should be robust in the presence of file\n removals and creations, i.e. if files are created or removed after a\n call to `~Operations.readdir` and `~Operations.readdir` is called again\n with *start_id* set to any previously supplied *next_id* values, under\n no circumstances must any file be reported twice or skipped over.\n "); static PyMethodDef __pyx_mdef_7pyfuse3_123readdir_reply = {"readdir_reply", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_123readdir_reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_122readdir_reply}; static PyObject *__pyx_pw_7pyfuse3_123readdir_reply(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_token = 0; PyObject *__pyx_v_name = 0; struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_attr = 0; off_t __pyx_v_next_id; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[4] = {0,0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("readdir_reply (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_token,&__pyx_n_s_name,&__pyx_n_s_attr,&__pyx_n_s_next_id,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_token)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 1026, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 1026, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("readdir_reply", 1, 4, 4, 1); __PYX_ERR(3, 1026, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attr)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 1026, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("readdir_reply", 1, 4, 4, 2); __PYX_ERR(3, 1026, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_next_id)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 1026, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("readdir_reply", 1, 4, 4, 3); __PYX_ERR(3, 1026, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "readdir_reply") < 0)) __PYX_ERR(3, 1026, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 4)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); } __pyx_v_token = ((struct __pyx_obj_7pyfuse3_ReaddirToken *)values[0]); __pyx_v_name = values[1]; __pyx_v_attr = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)values[2]); __pyx_v_next_id = __Pyx_PyInt_As_off_t(values[3]); if (unlikely((__pyx_v_next_id == ((off_t)-1)) && PyErr_Occurred())) __PYX_ERR(3, 1026, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("readdir_reply", 1, 4, 4, __pyx_nargs); __PYX_ERR(3, 1026, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.readdir_reply", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token), __pyx_ptype_7pyfuse3_ReaddirToken, 1, "token", 0))) __PYX_ERR(3, 1026, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attr), __pyx_ptype_7pyfuse3_EntryAttributes, 1, "attr", 0))) __PYX_ERR(3, 1026, __pyx_L1_error) __pyx_r = __pyx_pf_7pyfuse3_122readdir_reply(__pyx_self, __pyx_v_token, __pyx_v_name, __pyx_v_attr, __pyx_v_next_id); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_122readdir_reply(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_v_token, PyObject *__pyx_v_name, struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_v_attr, off_t __pyx_v_next_id) { char *__pyx_v_cname; PyObject *__pyx_v_len_ = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; void *__pyx_t_2; char *__pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; size_t __pyx_t_6; Py_ssize_t __pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("readdir_reply", 1); /* "pyfuse3/__init__.pyx":1050 * cdef char *cname * * if token.buf_start == NULL: # <<<<<<<<<<<<<< * token.buf_start = calloc_or_raise(token.size, sizeof(char)) * token.buf = token.buf_start */ __pyx_t_1 = (__pyx_v_token->buf_start == NULL); if (__pyx_t_1) { /* "pyfuse3/__init__.pyx":1051 * * if token.buf_start == NULL: * token.buf_start = calloc_or_raise(token.size, sizeof(char)) # <<<<<<<<<<<<<< * token.buf = token.buf_start * */ __pyx_t_2 = __pyx_f_7pyfuse3_calloc_or_raise(__pyx_v_token->size, (sizeof(char))); if (unlikely(__pyx_t_2 == ((void *)NULL))) __PYX_ERR(3, 1051, __pyx_L1_error) __pyx_v_token->buf_start = ((char *)__pyx_t_2); /* "pyfuse3/__init__.pyx":1052 * if token.buf_start == NULL: * token.buf_start = calloc_or_raise(token.size, sizeof(char)) * token.buf = token.buf_start # <<<<<<<<<<<<<< * * cname = PyBytes_AsString(name) */ __pyx_t_3 = __pyx_v_token->buf_start; __pyx_v_token->buf = __pyx_t_3; /* "pyfuse3/__init__.pyx":1050 * cdef char *cname * * if token.buf_start == NULL: # <<<<<<<<<<<<<< * token.buf_start = calloc_or_raise(token.size, sizeof(char)) * token.buf = token.buf_start */ } /* "pyfuse3/__init__.pyx":1054 * token.buf = token.buf_start * * cname = PyBytes_AsString(name) # <<<<<<<<<<<<<< * len_ = fuse_add_direntry_plus(token.req, token.buf, token.size, * cname, &attr.fuse_param, next_id) */ __pyx_t_3 = PyBytes_AsString(__pyx_v_name); if (unlikely(__pyx_t_3 == ((char *)NULL))) __PYX_ERR(3, 1054, __pyx_L1_error) __pyx_v_cname = __pyx_t_3; /* "pyfuse3/__init__.pyx":1055 * * cname = PyBytes_AsString(name) * len_ = fuse_add_direntry_plus(token.req, token.buf, token.size, # <<<<<<<<<<<<<< * cname, &attr.fuse_param, next_id) * if len_ > token.size: */ __pyx_t_4 = __Pyx_PyInt_FromSize_t(fuse_add_direntry_plus(__pyx_v_token->req, __pyx_v_token->buf, __pyx_v_token->size, __pyx_v_cname, (&__pyx_v_attr->fuse_param), __pyx_v_next_id)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1055, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_len_ = __pyx_t_4; __pyx_t_4 = 0; /* "pyfuse3/__init__.pyx":1057 * len_ = fuse_add_direntry_plus(token.req, token.buf, token.size, * cname, &attr.fuse_param, next_id) * if len_ > token.size: # <<<<<<<<<<<<<< * return False * */ __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_token->size); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyObject_RichCompare(__pyx_v_len_, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1057, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 1057, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_1) { /* "pyfuse3/__init__.pyx":1058 * cname, &attr.fuse_param, next_id) * if len_ > token.size: * return False # <<<<<<<<<<<<<< * * token.size -= len_ */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_False); __pyx_r = Py_False; goto __pyx_L0; /* "pyfuse3/__init__.pyx":1057 * len_ = fuse_add_direntry_plus(token.req, token.buf, token.size, * cname, &attr.fuse_param, next_id) * if len_ > token.size: # <<<<<<<<<<<<<< * return False * */ } /* "pyfuse3/__init__.pyx":1060 * return False * * token.size -= len_ # <<<<<<<<<<<<<< * token.buf = &token.buf[len_] * return True */ __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_token->size); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_5, __pyx_v_len_); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 1060, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_token->size = __pyx_t_6; /* "pyfuse3/__init__.pyx":1061 * * token.size -= len_ * token.buf = &token.buf[len_] # <<<<<<<<<<<<<< * return True */ __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_len_); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 1061, __pyx_L1_error) __pyx_v_token->buf = (&(__pyx_v_token->buf[__pyx_t_7])); /* "pyfuse3/__init__.pyx":1062 * token.size -= len_ * token.buf = &token.buf[len_] * return True # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_True); __pyx_r = Py_True; goto __pyx_L0; /* "pyfuse3/__init__.pyx":1026 * * * def readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id): # <<<<<<<<<<<<<< * '''Report a directory entry in response to a `~Operations.readdir` request. * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyfuse3.readdir_reply", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_len_); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __pyx_unpickle__WorkerData(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_125__pyx_unpickle__WorkerData(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_124__pyx_unpickle__WorkerData, "__pyx_unpickle__WorkerData(__pyx_type, long __pyx_checksum, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_125__pyx_unpickle__WorkerData = {"__pyx_unpickle__WorkerData", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_125__pyx_unpickle__WorkerData, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_124__pyx_unpickle__WorkerData}; static PyObject *__pyx_pw_7pyfuse3_125__pyx_unpickle__WorkerData(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v___pyx_type = 0; long __pyx_v___pyx_checksum; PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__pyx_unpickle__WorkerData (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__WorkerData", 1, 3, 3, 1); __PYX_ERR(0, 1, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__WorkerData", 1, 3, 3, 2); __PYX_ERR(0, 1, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__WorkerData") < 0)) __PYX_ERR(0, 1, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v___pyx_type = values[0]; __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) __pyx_v___pyx_state = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__WorkerData", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.__pyx_unpickle__WorkerData", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_124__pyx_unpickle__WorkerData(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_124__pyx_unpickle__WorkerData(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_PickleError = 0; PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle__WorkerData", 1); /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum not in (0x2a8cfde, 0x9365cf3, 0xe8d9c4e): # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum */ __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__46, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* "(tree fragment)":5 * cdef object __pyx_result * if __pyx_checksum not in (0x2a8cfde, 0x9365cf3, 0xe8d9c4e): * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum * __pyx_result = _WorkerData.__new__(__pyx_type) */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_PickleError); __Pyx_GIVEREF(__pyx_n_s_PickleError); if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(0, 5, __pyx_L1_error); __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v___pyx_PickleError = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":6 * if __pyx_checksum not in (0x2a8cfde, 0x9365cf3, 0xe8d9c4e): * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum # <<<<<<<<<<<<<< * __pyx_result = _WorkerData.__new__(__pyx_type) * if __pyx_state is not None: */ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 6, __pyx_L1_error) /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum not in (0x2a8cfde, 0x9365cf3, 0xe8d9c4e): # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum */ } /* "(tree fragment)":7 * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum * __pyx_result = _WorkerData.__new__(__pyx_type) # <<<<<<<<<<<<<< * if __pyx_state is not None: * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7pyfuse3__WorkerData), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v___pyx_result = __pyx_t_1; __pyx_t_1 = 0; /* "(tree fragment)":8 * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum * __pyx_result = _WorkerData.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) * return __pyx_result */ __pyx_t_2 = (__pyx_v___pyx_state != Py_None); if (__pyx_t_2) { /* "(tree fragment)":9 * __pyx_result = _WorkerData.__new__(__pyx_type) * if __pyx_state is not None: * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< * return __pyx_result * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): */ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(0, 9, __pyx_L1_error) __pyx_t_1 = __pyx_f_7pyfuse3___pyx_unpickle__WorkerData__set_state(((struct __pyx_obj_7pyfuse3__WorkerData *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":8 * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum * __pyx_result = _WorkerData.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) * return __pyx_result */ } /* "(tree fragment)":10 * if __pyx_state is not None: * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) * return __pyx_result # <<<<<<<<<<<<<< * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v___pyx_result); __pyx_r = __pyx_v___pyx_result; goto __pyx_L0; /* "(tree fragment)":1 * def __pyx_unpickle__WorkerData(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.__pyx_unpickle__WorkerData", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_PickleError); __Pyx_XDECREF(__pyx_v___pyx_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":11 * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): */ static PyObject *__pyx_f_7pyfuse3___pyx_unpickle__WorkerData__set_state(struct __pyx_obj_7pyfuse3__WorkerData *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; Py_ssize_t __pyx_t_4; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; unsigned int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle__WorkerData__set_state", 1); /* "(tree fragment)":12 * return __pyx_result * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] # <<<<<<<<<<<<<< * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[4]) */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->active_readers = __pyx_t_2; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v___pyx_result->read_lock); __Pyx_DECREF(__pyx_v___pyx_result->read_lock); __pyx_v___pyx_result->read_lock = __pyx_t_1; __pyx_t_1 = 0; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->task_count = __pyx_t_2; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->task_serial = __pyx_t_2; /* "(tree fragment)":13 * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< * __pyx_result.__dict__.update(__pyx_state[4]) */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 13, __pyx_L1_error) } __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 13, __pyx_L1_error) __pyx_t_5 = (__pyx_t_4 > 4); if (__pyx_t_5) { } else { __pyx_t_3 = __pyx_t_5; goto __pyx_L4_bool_binop_done; } __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 13, __pyx_L1_error) __pyx_t_3 = __pyx_t_5; __pyx_L4_bool_binop_done:; if (__pyx_t_3) { /* "(tree fragment)":14 * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 14, __pyx_L1_error) } __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":13 * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< * __pyx_result.__dict__.update(__pyx_state[4]) */ } /* "(tree fragment)":11 * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("pyfuse3.__pyx_unpickle__WorkerData__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __pyx_unpickle_RequestContext(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ /* Python wrapper */ static PyObject *__pyx_pw_7pyfuse3_127__pyx_unpickle_RequestContext(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7pyfuse3_126__pyx_unpickle_RequestContext, "__pyx_unpickle_RequestContext(__pyx_type, long __pyx_checksum, __pyx_state)"); static PyMethodDef __pyx_mdef_7pyfuse3_127__pyx_unpickle_RequestContext = {"__pyx_unpickle_RequestContext", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_127__pyx_unpickle_RequestContext, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_126__pyx_unpickle_RequestContext}; static PyObject *__pyx_pw_7pyfuse3_127__pyx_unpickle_RequestContext(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v___pyx_type = 0; long __pyx_v___pyx_checksum; PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__pyx_unpickle_RequestContext (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RequestContext", 1, 3, 3, 1); __PYX_ERR(0, 1, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RequestContext", 1, 3, 3, 2); __PYX_ERR(0, 1, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_RequestContext") < 0)) __PYX_ERR(0, 1, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v___pyx_type = values[0]; __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error) __pyx_v___pyx_state = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RequestContext", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("pyfuse3.__pyx_unpickle_RequestContext", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7pyfuse3_126__pyx_unpickle_RequestContext(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7pyfuse3_126__pyx_unpickle_RequestContext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_PickleError = 0; PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; unsigned int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle_RequestContext", 1); /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum not in (0xe56624f, 0x8a019cd, 0x223b7a8): # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum */ __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__48, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* "(tree fragment)":5 * cdef object __pyx_result * if __pyx_checksum not in (0xe56624f, 0x8a019cd, 0x223b7a8): * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum * __pyx_result = RequestContext.__new__(__pyx_type) */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_PickleError); __Pyx_GIVEREF(__pyx_n_s_PickleError); if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(0, 5, __pyx_L1_error); __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v___pyx_PickleError = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":6 * if __pyx_checksum not in (0xe56624f, 0x8a019cd, 0x223b7a8): * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum # <<<<<<<<<<<<<< * __pyx_result = RequestContext.__new__(__pyx_type) * if __pyx_state is not None: */ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 6, __pyx_L1_error) /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum not in (0xe56624f, 0x8a019cd, 0x223b7a8): # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum */ } /* "(tree fragment)":7 * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum * __pyx_result = RequestContext.__new__(__pyx_type) # <<<<<<<<<<<<<< * if __pyx_state is not None: * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7pyfuse3_RequestContext), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v___pyx_result = __pyx_t_1; __pyx_t_1 = 0; /* "(tree fragment)":8 * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum * __pyx_result = RequestContext.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) * return __pyx_result */ __pyx_t_2 = (__pyx_v___pyx_state != Py_None); if (__pyx_t_2) { /* "(tree fragment)":9 * __pyx_result = RequestContext.__new__(__pyx_type) * if __pyx_state is not None: * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< * return __pyx_result * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): */ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(0, 9, __pyx_L1_error) __pyx_t_1 = __pyx_f_7pyfuse3___pyx_unpickle_RequestContext__set_state(((struct __pyx_obj_7pyfuse3_RequestContext *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":8 * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe56624f, 0x8a019cd, 0x223b7a8) = (gid, pid, uid, umask))" % __pyx_checksum * __pyx_result = RequestContext.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) * return __pyx_result */ } /* "(tree fragment)":10 * if __pyx_state is not None: * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) * return __pyx_result # <<<<<<<<<<<<<< * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v___pyx_result); __pyx_r = __pyx_v___pyx_result; goto __pyx_L0; /* "(tree fragment)":1 * def __pyx_unpickle_RequestContext(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyfuse3.__pyx_unpickle_RequestContext", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_PickleError); __Pyx_XDECREF(__pyx_v___pyx_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":11 * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): */ static PyObject *__pyx_f_7pyfuse3___pyx_unpickle_RequestContext__set_state(struct __pyx_obj_7pyfuse3_RequestContext *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; gid_t __pyx_t_2; pid_t __pyx_t_3; uid_t __pyx_t_4; mode_t __pyx_t_5; int __pyx_t_6; Py_ssize_t __pyx_t_7; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; unsigned int __pyx_t_12; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle_RequestContext__set_state", 1); /* "(tree fragment)":12 * return __pyx_result * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] # <<<<<<<<<<<<<< * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[4]) */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_gid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((gid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->gid = __pyx_t_2; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_As_pid_t(__pyx_t_1); if (unlikely((__pyx_t_3 == ((pid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->pid = __pyx_t_3; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyInt_As_uid_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->uid = __pyx_t_4; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyInt_As_mode_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((mode_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v___pyx_result->umask = __pyx_t_5; /* "(tree fragment)":13 * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< * __pyx_result.__dict__.update(__pyx_state[4]) */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 13, __pyx_L1_error) } __pyx_t_7 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 13, __pyx_L1_error) __pyx_t_8 = (__pyx_t_7 > 4); if (__pyx_t_8) { } else { __pyx_t_6 = __pyx_t_8; goto __pyx_L4_bool_binop_done; } __pyx_t_8 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 13, __pyx_L1_error) __pyx_t_6 = __pyx_t_8; __pyx_L4_bool_binop_done:; if (__pyx_t_6) { /* "(tree fragment)":14 * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_update); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 14, __pyx_L1_error) } __pyx_t_9 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = NULL; __pyx_t_12 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_12 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_9}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":13 * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< * __pyx_result.__dict__.update(__pyx_state[4]) */ } /* "(tree fragment)":11 * __pyx_unpickle_RequestContext__set_state( __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle_RequestContext__set_state(RequestContext __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.gid = __pyx_state[0]; __pyx_result.pid = __pyx_state[1]; __pyx_result.uid = __pyx_state[2]; __pyx_result.umask = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("pyfuse3.__pyx_unpickle_RequestContext__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3__Container *__pyx_freelist_7pyfuse3__Container[60]; static int __pyx_freecount_7pyfuse3__Container = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3__Container(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3__Container > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3__Container)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3__Container[--__pyx_freecount_7pyfuse3__Container]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3__Container)); (void) PyObject_INIT(o, t); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3__Container(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3__Container) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3__Container < 60) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3__Container)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3__Container[__pyx_freecount_7pyfuse3__Container++] = ((struct __pyx_obj_7pyfuse3__Container *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static PyMethodDef __pyx_methods_7pyfuse3__Container[] = { {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_10_Container_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_10_Container___reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_10_Container_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_10_Container_2__setstate_cython__}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3__Container_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3__Container}, {Py_tp_doc, (void *)PyDoc_STR("For internal use by pyfuse3 only.")}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3__Container}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3__Container}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3__Container_spec = { "pyfuse3.__init__._Container", sizeof(struct __pyx_obj_7pyfuse3__Container), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_7pyfuse3__Container_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3__Container = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""_Container", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3__Container), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3__Container, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ PyDoc_STR("For internal use by pyfuse3 only."), /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3__Container, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3__Container, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3_ReaddirToken *__pyx_freelist_7pyfuse3_ReaddirToken[10]; static int __pyx_freecount_7pyfuse3_ReaddirToken = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3_ReaddirToken(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3_ReaddirToken > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_ReaddirToken)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3_ReaddirToken[--__pyx_freecount_7pyfuse3_ReaddirToken]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3_ReaddirToken)); (void) PyObject_INIT(o, t); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3_ReaddirToken(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3_ReaddirToken) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3_ReaddirToken < 10) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_ReaddirToken)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3_ReaddirToken[__pyx_freecount_7pyfuse3_ReaddirToken++] = ((struct __pyx_obj_7pyfuse3_ReaddirToken *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static PyMethodDef __pyx_methods_7pyfuse3_ReaddirToken[] = { {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_12ReaddirToken_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_12ReaddirToken___reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_12ReaddirToken_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_12ReaddirToken_2__setstate_cython__}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_ReaddirToken_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3_ReaddirToken}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_ReaddirToken}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_ReaddirToken}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_ReaddirToken_spec = { "pyfuse3.__init__.ReaddirToken", sizeof(struct __pyx_obj_7pyfuse3_ReaddirToken), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_7pyfuse3_ReaddirToken_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_ReaddirToken = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""ReaddirToken", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_ReaddirToken), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3_ReaddirToken, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_ReaddirToken, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_ReaddirToken, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static struct __pyx_vtabstruct_7pyfuse3__WorkerData __pyx_vtable_7pyfuse3__WorkerData; static PyObject *__pyx_tp_new_7pyfuse3__WorkerData(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_7pyfuse3__WorkerData *p; PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; #endif p = ((struct __pyx_obj_7pyfuse3__WorkerData *)o); p->__pyx_vtab = __pyx_vtabptr_7pyfuse3__WorkerData; p->read_lock = Py_None; Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_7pyfuse3__WorkerData(PyObject *o) { struct __pyx_obj_7pyfuse3__WorkerData *p = (struct __pyx_obj_7pyfuse3__WorkerData *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3__WorkerData) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->read_lock); #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } static int __pyx_tp_traverse_7pyfuse3__WorkerData(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3__WorkerData *p = (struct __pyx_obj_7pyfuse3__WorkerData *)o; if (p->read_lock) { e = (*v)(p->read_lock, a); if (e) return e; } return 0; } static int __pyx_tp_clear_7pyfuse3__WorkerData(PyObject *o) { PyObject* tmp; struct __pyx_obj_7pyfuse3__WorkerData *p = (struct __pyx_obj_7pyfuse3__WorkerData *)o; tmp = ((PyObject*)p->read_lock); p->read_lock = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyMethodDef __pyx_methods_7pyfuse3__WorkerData[] = { {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11_WorkerData_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11_WorkerData_2__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11_WorkerData_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11_WorkerData_4__setstate_cython__}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3__WorkerData_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3__WorkerData}, {Py_tp_doc, (void *)PyDoc_STR("_WorkerData()\nFor internal use by pyfuse3 only.")}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3__WorkerData}, {Py_tp_clear, (void *)__pyx_tp_clear_7pyfuse3__WorkerData}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3__WorkerData}, {Py_tp_init, (void *)__pyx_pw_7pyfuse3_11_WorkerData_1__init__}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3__WorkerData}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3__WorkerData_spec = { "pyfuse3.__init__._WorkerData", sizeof(struct __pyx_obj_7pyfuse3__WorkerData), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, __pyx_type_7pyfuse3__WorkerData_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3__WorkerData = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""_WorkerData", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3__WorkerData), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3__WorkerData, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("_WorkerData()\nFor internal use by pyfuse3 only."), /*tp_doc*/ __pyx_tp_traverse_7pyfuse3__WorkerData, /*tp_traverse*/ __pyx_tp_clear_7pyfuse3__WorkerData, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3__WorkerData, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif __pyx_pw_7pyfuse3_11_WorkerData_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3__WorkerData, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3_RequestContext *__pyx_freelist_7pyfuse3_RequestContext[10]; static int __pyx_freecount_7pyfuse3_RequestContext = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3_RequestContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3_RequestContext > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_RequestContext)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3_RequestContext[--__pyx_freecount_7pyfuse3_RequestContext]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3_RequestContext)); (void) PyObject_INIT(o, t); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3_RequestContext(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3_RequestContext) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3_RequestContext < 10) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_RequestContext)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3_RequestContext[__pyx_freecount_7pyfuse3_RequestContext++] = ((struct __pyx_obj_7pyfuse3_RequestContext *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static PyObject *__pyx_getprop_7pyfuse3_14RequestContext_uid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_14RequestContext_3uid_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_14RequestContext_pid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_14RequestContext_3pid_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_14RequestContext_gid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_14RequestContext_3gid_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_14RequestContext_umask(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_14RequestContext_5umask_1__get__(o); } static PyMethodDef __pyx_methods_7pyfuse3_RequestContext[] = { {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_14RequestContext_1__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_14RequestContext___getstate__}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_14RequestContext_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_14RequestContext_2__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_14RequestContext_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_14RequestContext_4__setstate_cython__}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_7pyfuse3_RequestContext[] = { {(char *)"uid", __pyx_getprop_7pyfuse3_14RequestContext_uid, 0, (char *)0, 0}, {(char *)"pid", __pyx_getprop_7pyfuse3_14RequestContext_pid, 0, (char *)0, 0}, {(char *)"gid", __pyx_getprop_7pyfuse3_14RequestContext_gid, 0, (char *)0, 0}, {(char *)"umask", __pyx_getprop_7pyfuse3_14RequestContext_umask, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_RequestContext_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3_RequestContext}, {Py_tp_doc, (void *)PyDoc_STR("\n Instances of this class are passed to some `Operations` methods to\n provide information about the caller of the syscall that initiated\n the request.\n ")}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_RequestContext}, {Py_tp_getset, (void *)__pyx_getsets_7pyfuse3_RequestContext}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_RequestContext}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_RequestContext_spec = { "pyfuse3.__init__.RequestContext", sizeof(struct __pyx_obj_7pyfuse3_RequestContext), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_7pyfuse3_RequestContext_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_RequestContext = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""RequestContext", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_RequestContext), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3_RequestContext, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ PyDoc_STR("\n Instances of this class are passed to some `Operations` methods to\n provide information about the caller of the syscall that initiated\n the request.\n "), /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_RequestContext, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_7pyfuse3_RequestContext, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_RequestContext, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3_SetattrFields *__pyx_freelist_7pyfuse3_SetattrFields[10]; static int __pyx_freecount_7pyfuse3_SetattrFields = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3_SetattrFields(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_7pyfuse3_SetattrFields *p; PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3_SetattrFields > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_SetattrFields)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3_SetattrFields[--__pyx_freecount_7pyfuse3_SetattrFields]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3_SetattrFields)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif p = ((struct __pyx_obj_7pyfuse3_SetattrFields *)o); p->update_atime = Py_None; Py_INCREF(Py_None); p->update_mtime = Py_None; Py_INCREF(Py_None); p->update_ctime = Py_None; Py_INCREF(Py_None); p->update_mode = Py_None; Py_INCREF(Py_None); p->update_uid = Py_None; Py_INCREF(Py_None); p->update_gid = Py_None; Py_INCREF(Py_None); p->update_size = Py_None; Py_INCREF(Py_None); if (unlikely(__pyx_pw_7pyfuse3_13SetattrFields_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static void __pyx_tp_dealloc_7pyfuse3_SetattrFields(PyObject *o) { struct __pyx_obj_7pyfuse3_SetattrFields *p = (struct __pyx_obj_7pyfuse3_SetattrFields *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3_SetattrFields) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->update_atime); Py_CLEAR(p->update_mtime); Py_CLEAR(p->update_ctime); Py_CLEAR(p->update_mode); Py_CLEAR(p->update_uid); Py_CLEAR(p->update_gid); Py_CLEAR(p->update_size); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3_SetattrFields < 10) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_SetattrFields)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3_SetattrFields[__pyx_freecount_7pyfuse3_SetattrFields++] = ((struct __pyx_obj_7pyfuse3_SetattrFields *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3_SetattrFields(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3_SetattrFields *p = (struct __pyx_obj_7pyfuse3_SetattrFields *)o; if (p->update_atime) { e = (*v)(p->update_atime, a); if (e) return e; } if (p->update_mtime) { e = (*v)(p->update_mtime, a); if (e) return e; } if (p->update_ctime) { e = (*v)(p->update_ctime, a); if (e) return e; } if (p->update_mode) { e = (*v)(p->update_mode, a); if (e) return e; } if (p->update_uid) { e = (*v)(p->update_uid, a); if (e) return e; } if (p->update_gid) { e = (*v)(p->update_gid, a); if (e) return e; } if (p->update_size) { e = (*v)(p->update_size, a); if (e) return e; } return 0; } static int __pyx_tp_clear_7pyfuse3_SetattrFields(PyObject *o) { PyObject* tmp; struct __pyx_obj_7pyfuse3_SetattrFields *p = (struct __pyx_obj_7pyfuse3_SetattrFields *)o; tmp = ((PyObject*)p->update_atime); p->update_atime = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->update_mtime); p->update_mtime = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->update_ctime); p->update_ctime = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->update_mode); p->update_mode = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->update_uid); p->update_uid = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->update_gid); p->update_gid = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->update_size); p->update_size = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_atime(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_12update_atime_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_mtime(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_12update_mtime_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_ctime(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_12update_ctime_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_mode(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_11update_mode_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_uid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_10update_uid_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_gid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_10update_gid_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_13SetattrFields_update_size(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_13SetattrFields_11update_size_1__get__(o); } static PyMethodDef __pyx_methods_7pyfuse3_SetattrFields[] = { {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13SetattrFields_3__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_13SetattrFields_2__getstate__}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13SetattrFields_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_13SetattrFields_4__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_13SetattrFields_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_13SetattrFields_6__setstate_cython__}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_7pyfuse3_SetattrFields[] = { {(char *)"update_atime", __pyx_getprop_7pyfuse3_13SetattrFields_update_atime, 0, (char *)0, 0}, {(char *)"update_mtime", __pyx_getprop_7pyfuse3_13SetattrFields_update_mtime, 0, (char *)0, 0}, {(char *)"update_ctime", __pyx_getprop_7pyfuse3_13SetattrFields_update_ctime, 0, (char *)0, 0}, {(char *)"update_mode", __pyx_getprop_7pyfuse3_13SetattrFields_update_mode, 0, (char *)0, 0}, {(char *)"update_uid", __pyx_getprop_7pyfuse3_13SetattrFields_update_uid, 0, (char *)0, 0}, {(char *)"update_gid", __pyx_getprop_7pyfuse3_13SetattrFields_update_gid, 0, (char *)0, 0}, {(char *)"update_size", __pyx_getprop_7pyfuse3_13SetattrFields_update_size, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_SetattrFields_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3_SetattrFields}, {Py_tp_doc, (void *)PyDoc_STR("\n `SetattrFields` instances are passed to the `~Operations.setattr` handler\n to specify which attributes should be updated.\n ")}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3_SetattrFields}, {Py_tp_clear, (void *)__pyx_tp_clear_7pyfuse3_SetattrFields}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_SetattrFields}, {Py_tp_getset, (void *)__pyx_getsets_7pyfuse3_SetattrFields}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_SetattrFields}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_SetattrFields_spec = { "pyfuse3.__init__.SetattrFields", sizeof(struct __pyx_obj_7pyfuse3_SetattrFields), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, __pyx_type_7pyfuse3_SetattrFields_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_SetattrFields = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""SetattrFields", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_SetattrFields), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3_SetattrFields, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("\n `SetattrFields` instances are passed to the `~Operations.setattr` handler\n to specify which attributes should be updated.\n "), /*tp_doc*/ __pyx_tp_traverse_7pyfuse3_SetattrFields, /*tp_traverse*/ __pyx_tp_clear_7pyfuse3_SetattrFields, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_SetattrFields, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_7pyfuse3_SetattrFields, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_SetattrFields, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3_EntryAttributes *__pyx_freelist_7pyfuse3_EntryAttributes[30]; static int __pyx_freecount_7pyfuse3_EntryAttributes = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3_EntryAttributes(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3_EntryAttributes > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_EntryAttributes)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3_EntryAttributes[--__pyx_freecount_7pyfuse3_EntryAttributes]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3_EntryAttributes)); (void) PyObject_INIT(o, t); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif if (unlikely(__pyx_pw_7pyfuse3_15EntryAttributes_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static void __pyx_tp_dealloc_7pyfuse3_EntryAttributes(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3_EntryAttributes) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3_EntryAttributes < 30) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_EntryAttributes)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3_EntryAttributes[__pyx_freecount_7pyfuse3_EntryAttributes++] = ((struct __pyx_obj_7pyfuse3_EntryAttributes *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_ino(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_6st_ino_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_ino(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_6st_ino_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_generation(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_10generation_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_generation(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_10generation_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_attr_timeout(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_12attr_timeout_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_attr_timeout(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_12attr_timeout_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_entry_timeout(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_13entry_timeout_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_entry_timeout(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_13entry_timeout_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_mode(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_7st_mode_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_mode(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_7st_mode_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_nlink(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_8st_nlink_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_nlink(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_8st_nlink_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_uid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_6st_uid_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_uid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_6st_uid_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_gid(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_6st_gid_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_gid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_6st_gid_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_rdev(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_7st_rdev_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_rdev(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_7st_rdev_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_size(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_7st_size_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_7st_size_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_blocks(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_9st_blocks_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_blocks(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_9st_blocks_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_blksize(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_10st_blksize_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_blksize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_10st_blksize_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_atime_ns(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_11st_atime_ns_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_atime_ns(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_11st_atime_ns_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_mtime_ns(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_11st_mtime_ns_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_mtime_ns(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_11st_mtime_ns_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_ctime_ns(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_11st_ctime_ns_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_ctime_ns(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_11st_ctime_ns_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_15EntryAttributes_st_birthtime_ns(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_15EntryAttributes_15st_birthtime_ns_1__get__(o); } static int __pyx_setprop_7pyfuse3_15EntryAttributes_st_birthtime_ns(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_15EntryAttributes_15st_birthtime_ns_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyMethodDef __pyx_methods_7pyfuse3_EntryAttributes[] = { {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_3__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_2__getstate__}, {"__setstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_5__setstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_4__setstate__}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_6__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_15EntryAttributes_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_15EntryAttributes_8__setstate_cython__}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_7pyfuse3_EntryAttributes[] = { {(char *)"st_ino", __pyx_getprop_7pyfuse3_15EntryAttributes_st_ino, __pyx_setprop_7pyfuse3_15EntryAttributes_st_ino, (char *)0, 0}, {(char *)"generation", __pyx_getprop_7pyfuse3_15EntryAttributes_generation, __pyx_setprop_7pyfuse3_15EntryAttributes_generation, (char *)PyDoc_STR("The inode generation number"), 0}, {(char *)"attr_timeout", __pyx_getprop_7pyfuse3_15EntryAttributes_attr_timeout, __pyx_setprop_7pyfuse3_15EntryAttributes_attr_timeout, (char *)PyDoc_STR("Validity timeout for the attributes of the directory entry\n\n Floating point numbers may be used. Units are seconds.\n "), 0}, {(char *)"entry_timeout", __pyx_getprop_7pyfuse3_15EntryAttributes_entry_timeout, __pyx_setprop_7pyfuse3_15EntryAttributes_entry_timeout, (char *)PyDoc_STR("Validity timeout for the name/existence of the directory entry\n\n Floating point numbers may be used. Units are seconds.\n "), 0}, {(char *)"st_mode", __pyx_getprop_7pyfuse3_15EntryAttributes_st_mode, __pyx_setprop_7pyfuse3_15EntryAttributes_st_mode, (char *)0, 0}, {(char *)"st_nlink", __pyx_getprop_7pyfuse3_15EntryAttributes_st_nlink, __pyx_setprop_7pyfuse3_15EntryAttributes_st_nlink, (char *)0, 0}, {(char *)"st_uid", __pyx_getprop_7pyfuse3_15EntryAttributes_st_uid, __pyx_setprop_7pyfuse3_15EntryAttributes_st_uid, (char *)0, 0}, {(char *)"st_gid", __pyx_getprop_7pyfuse3_15EntryAttributes_st_gid, __pyx_setprop_7pyfuse3_15EntryAttributes_st_gid, (char *)0, 0}, {(char *)"st_rdev", __pyx_getprop_7pyfuse3_15EntryAttributes_st_rdev, __pyx_setprop_7pyfuse3_15EntryAttributes_st_rdev, (char *)0, 0}, {(char *)"st_size", __pyx_getprop_7pyfuse3_15EntryAttributes_st_size, __pyx_setprop_7pyfuse3_15EntryAttributes_st_size, (char *)0, 0}, {(char *)"st_blocks", __pyx_getprop_7pyfuse3_15EntryAttributes_st_blocks, __pyx_setprop_7pyfuse3_15EntryAttributes_st_blocks, (char *)0, 0}, {(char *)"st_blksize", __pyx_getprop_7pyfuse3_15EntryAttributes_st_blksize, __pyx_setprop_7pyfuse3_15EntryAttributes_st_blksize, (char *)0, 0}, {(char *)"st_atime_ns", __pyx_getprop_7pyfuse3_15EntryAttributes_st_atime_ns, __pyx_setprop_7pyfuse3_15EntryAttributes_st_atime_ns, (char *)PyDoc_STR("Time of last access in (integer) nanoseconds"), 0}, {(char *)"st_mtime_ns", __pyx_getprop_7pyfuse3_15EntryAttributes_st_mtime_ns, __pyx_setprop_7pyfuse3_15EntryAttributes_st_mtime_ns, (char *)PyDoc_STR("Time of last modification in (integer) nanoseconds"), 0}, {(char *)"st_ctime_ns", __pyx_getprop_7pyfuse3_15EntryAttributes_st_ctime_ns, __pyx_setprop_7pyfuse3_15EntryAttributes_st_ctime_ns, (char *)PyDoc_STR("Time of last inode modification in (integer) nanoseconds"), 0}, {(char *)"st_birthtime_ns", __pyx_getprop_7pyfuse3_15EntryAttributes_st_birthtime_ns, __pyx_setprop_7pyfuse3_15EntryAttributes_st_birthtime_ns, (char *)PyDoc_STR("Time of inode creation in (integer) nanoseconds.\n\n Only available under BSD and OS X. Will be zero on Linux.\n "), 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_EntryAttributes_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3_EntryAttributes}, {Py_tp_doc, (void *)PyDoc_STR("\n Instances of this class store attributes of directory entries.\n Most of the attributes correspond to the elements of the ``stat``\n C struct as returned by e.g. ``fstat`` and should be\n self-explanatory.\n ")}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_EntryAttributes}, {Py_tp_getset, (void *)__pyx_getsets_7pyfuse3_EntryAttributes}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_EntryAttributes}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_EntryAttributes_spec = { "pyfuse3.__init__.EntryAttributes", sizeof(struct __pyx_obj_7pyfuse3_EntryAttributes), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_7pyfuse3_EntryAttributes_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_EntryAttributes = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""EntryAttributes", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_EntryAttributes), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3_EntryAttributes, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ PyDoc_STR("\n Instances of this class store attributes of directory entries.\n Most of the attributes correspond to the elements of the ``stat``\n C struct as returned by e.g. ``fstat`` and should be\n self-explanatory.\n "), /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_EntryAttributes, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_7pyfuse3_EntryAttributes, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_EntryAttributes, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static struct __pyx_vtabstruct_7pyfuse3_FileInfo __pyx_vtable_7pyfuse3_FileInfo; #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3_FileInfo *__pyx_freelist_7pyfuse3_FileInfo[10]; static int __pyx_freecount_7pyfuse3_FileInfo = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3_FileInfo(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_7pyfuse3_FileInfo *p; PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3_FileInfo > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_FileInfo)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3_FileInfo[--__pyx_freecount_7pyfuse3_FileInfo]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3_FileInfo)); (void) PyObject_INIT(o, t); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif p = ((struct __pyx_obj_7pyfuse3_FileInfo *)o); p->__pyx_vtab = __pyx_vtabptr_7pyfuse3_FileInfo; if (unlikely(__pyx_pw_7pyfuse3_8FileInfo_1__cinit__(o, a, k) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static void __pyx_tp_dealloc_7pyfuse3_FileInfo(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3_FileInfo) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3_FileInfo < 10) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_FileInfo)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3_FileInfo[__pyx_freecount_7pyfuse3_FileInfo++] = ((struct __pyx_obj_7pyfuse3_FileInfo *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static PyObject *__pyx_getprop_7pyfuse3_8FileInfo_fh(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_8FileInfo_2fh_1__get__(o); } static int __pyx_setprop_7pyfuse3_8FileInfo_fh(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_8FileInfo_2fh_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_8FileInfo_direct_io(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_8FileInfo_9direct_io_1__get__(o); } static int __pyx_setprop_7pyfuse3_8FileInfo_direct_io(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_8FileInfo_9direct_io_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_8FileInfo_keep_cache(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_8FileInfo_10keep_cache_1__get__(o); } static int __pyx_setprop_7pyfuse3_8FileInfo_keep_cache(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_8FileInfo_10keep_cache_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_8FileInfo_nonseekable(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_8FileInfo_11nonseekable_1__get__(o); } static int __pyx_setprop_7pyfuse3_8FileInfo_nonseekable(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_8FileInfo_11nonseekable_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyMethodDef __pyx_methods_7pyfuse3_FileInfo[] = { {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_8FileInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_8FileInfo_2__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_8FileInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_8FileInfo_4__setstate_cython__}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_7pyfuse3_FileInfo[] = { {(char *)"fh", __pyx_getprop_7pyfuse3_8FileInfo_fh, __pyx_setprop_7pyfuse3_8FileInfo_fh, (char *)PyDoc_STR("fh: 'uint64_t'"), 0}, {(char *)"direct_io", __pyx_getprop_7pyfuse3_8FileInfo_direct_io, __pyx_setprop_7pyfuse3_8FileInfo_direct_io, (char *)PyDoc_STR("direct_io: 'bool'"), 0}, {(char *)"keep_cache", __pyx_getprop_7pyfuse3_8FileInfo_keep_cache, __pyx_setprop_7pyfuse3_8FileInfo_keep_cache, (char *)PyDoc_STR("keep_cache: 'bool'"), 0}, {(char *)"nonseekable", __pyx_getprop_7pyfuse3_8FileInfo_nonseekable, __pyx_setprop_7pyfuse3_8FileInfo_nonseekable, (char *)PyDoc_STR("nonseekable: 'bool'"), 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_FileInfo_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3_FileInfo}, {Py_tp_doc, (void *)PyDoc_STR("\n Instances of this class store options and data that `Operations.open`\n returns. The attributes correspond to the elements of the ``fuse_file_info``\n struct that are relevant to the `Operations.open` function.\n ")}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_FileInfo}, {Py_tp_getset, (void *)__pyx_getsets_7pyfuse3_FileInfo}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_FileInfo}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_FileInfo_spec = { "pyfuse3.__init__.FileInfo", sizeof(struct __pyx_obj_7pyfuse3_FileInfo), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_7pyfuse3_FileInfo_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_FileInfo = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""FileInfo", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_FileInfo), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3_FileInfo, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ PyDoc_STR("\n Instances of this class store options and data that `Operations.open`\n returns. The attributes correspond to the elements of the ``fuse_file_info``\n struct that are relevant to the `Operations.open` function.\n "), /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_FileInfo, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_7pyfuse3_FileInfo, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_FileInfo, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3_StatvfsData *__pyx_freelist_7pyfuse3_StatvfsData[1]; static int __pyx_freecount_7pyfuse3_StatvfsData = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3_StatvfsData(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3_StatvfsData > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_StatvfsData)) & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { o = (PyObject*)__pyx_freelist_7pyfuse3_StatvfsData[--__pyx_freecount_7pyfuse3_StatvfsData]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3_StatvfsData)); (void) PyObject_INIT(o, t); } else #endif { if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; } #endif if (unlikely(__pyx_pw_7pyfuse3_11StatvfsData_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static void __pyx_tp_dealloc_7pyfuse3_StatvfsData(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3_StatvfsData) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3_StatvfsData < 1) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3_StatvfsData)) & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))))) { __pyx_freelist_7pyfuse3_StatvfsData[__pyx_freecount_7pyfuse3_StatvfsData++] = ((struct __pyx_obj_7pyfuse3_StatvfsData *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_bsize(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_bsize_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_bsize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_bsize_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_frsize(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_frsize_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_frsize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_frsize_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_blocks(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_blocks_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_blocks(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_blocks_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_bfree(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_bfree_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_bfree(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_bfree_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_bavail(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_bavail_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_bavail(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_bavail_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_files(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_files_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_files(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_files_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_ffree(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_ffree_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_ffree(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_7f_ffree_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_favail(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_favail_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_favail(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_8f_favail_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyObject *__pyx_getprop_7pyfuse3_11StatvfsData_f_namemax(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_11StatvfsData_9f_namemax_1__get__(o); } static int __pyx_setprop_7pyfuse3_11StatvfsData_f_namemax(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { return __pyx_pw_7pyfuse3_11StatvfsData_9f_namemax_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); return -1; } } static PyMethodDef __pyx_methods_7pyfuse3_StatvfsData[] = { {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_3__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_2__getstate__}, {"__setstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_5__setstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_4__setstate__}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_6__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_11StatvfsData_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_11StatvfsData_8__setstate_cython__}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_7pyfuse3_StatvfsData[] = { {(char *)"f_bsize", __pyx_getprop_7pyfuse3_11StatvfsData_f_bsize, __pyx_setprop_7pyfuse3_11StatvfsData_f_bsize, (char *)0, 0}, {(char *)"f_frsize", __pyx_getprop_7pyfuse3_11StatvfsData_f_frsize, __pyx_setprop_7pyfuse3_11StatvfsData_f_frsize, (char *)0, 0}, {(char *)"f_blocks", __pyx_getprop_7pyfuse3_11StatvfsData_f_blocks, __pyx_setprop_7pyfuse3_11StatvfsData_f_blocks, (char *)0, 0}, {(char *)"f_bfree", __pyx_getprop_7pyfuse3_11StatvfsData_f_bfree, __pyx_setprop_7pyfuse3_11StatvfsData_f_bfree, (char *)0, 0}, {(char *)"f_bavail", __pyx_getprop_7pyfuse3_11StatvfsData_f_bavail, __pyx_setprop_7pyfuse3_11StatvfsData_f_bavail, (char *)0, 0}, {(char *)"f_files", __pyx_getprop_7pyfuse3_11StatvfsData_f_files, __pyx_setprop_7pyfuse3_11StatvfsData_f_files, (char *)0, 0}, {(char *)"f_ffree", __pyx_getprop_7pyfuse3_11StatvfsData_f_ffree, __pyx_setprop_7pyfuse3_11StatvfsData_f_ffree, (char *)0, 0}, {(char *)"f_favail", __pyx_getprop_7pyfuse3_11StatvfsData_f_favail, __pyx_setprop_7pyfuse3_11StatvfsData_f_favail, (char *)0, 0}, {(char *)"f_namemax", __pyx_getprop_7pyfuse3_11StatvfsData_f_namemax, __pyx_setprop_7pyfuse3_11StatvfsData_f_namemax, (char *)0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_StatvfsData_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3_StatvfsData}, {Py_tp_doc, (void *)PyDoc_STR("\n Instances of this class store information about the file system.\n The attributes correspond to the elements of the ``statvfs``\n struct, see :manpage:`statvfs(2)` for details.\n ")}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_StatvfsData}, {Py_tp_getset, (void *)__pyx_getsets_7pyfuse3_StatvfsData}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_StatvfsData}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_StatvfsData_spec = { "pyfuse3.__init__.StatvfsData", sizeof(struct __pyx_obj_7pyfuse3_StatvfsData), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_7pyfuse3_StatvfsData_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_StatvfsData = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""StatvfsData", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_StatvfsData), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3_StatvfsData, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ PyDoc_STR("\n Instances of this class store information about the file system.\n The attributes correspond to the elements of the ``statvfs``\n struct, see :manpage:`statvfs(2)` for details.\n "), /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_StatvfsData, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_7pyfuse3_StatvfsData, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_StatvfsData, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static PyObject *__pyx_tp_new_7pyfuse3_FUSEError(PyTypeObject *t, PyObject *a, PyObject *k) { PyObject *o = __Pyx_PyType_GetSlot((&((PyTypeObject*)PyExc_Exception)[0]), tp_new, newfunc)(t, a, k); if (unlikely(!o)) return 0; if (unlikely(__pyx_pw_7pyfuse3_9FUSEError_1__cinit__(o, a, k) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static int __pyx_tp_traverse_7pyfuse3_FUSEError(PyObject *o, visitproc v, void *a) { int e; if (!(&((PyTypeObject*)PyExc_Exception)[0])->tp_traverse); else { e = (&((PyTypeObject*)PyExc_Exception)[0])->tp_traverse(o,v,a); if (e) return e; } return 0; } static int __pyx_tp_clear_7pyfuse3_FUSEError(PyObject *o) { if (!(&((PyTypeObject*)PyExc_Exception)[0])->tp_clear); else (&((PyTypeObject*)PyExc_Exception)[0])->tp_clear(o); return 0; } static PyObject *__pyx_getprop_7pyfuse3_9FUSEError_errno(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_9FUSEError_5errno_1__get__(o); } static PyObject *__pyx_getprop_7pyfuse3_9FUSEError_errno_(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_7pyfuse3_9FUSEError_6errno__1__get__(o); } static PyMethodDef __pyx_methods_7pyfuse3_FUSEError[] = { {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_9FUSEError_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_9FUSEError_4__reduce_cython__}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyfuse3_9FUSEError_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyfuse3_9FUSEError_6__setstate_cython__}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_7pyfuse3_FUSEError[] = { {(char *)"errno", __pyx_getprop_7pyfuse3_9FUSEError_errno, 0, (char *)PyDoc_STR("Error code to return to client process"), 0}, {(char *)"errno_", __pyx_getprop_7pyfuse3_9FUSEError_errno_, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3_FUSEError_slots[] = { {Py_tp_str, (void *)__pyx_pw_7pyfuse3_9FUSEError_3__str__}, {Py_tp_doc, (void *)PyDoc_STR("\n This exception may be raised by request handlers to indicate that\n the requested operation could not be carried out. The system call\n that resulted in the request (if any) will then fail with error\n code *errno_*.\n ")}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3_FUSEError}, {Py_tp_clear, (void *)__pyx_tp_clear_7pyfuse3_FUSEError}, {Py_tp_methods, (void *)__pyx_methods_7pyfuse3_FUSEError}, {Py_tp_getset, (void *)__pyx_getsets_7pyfuse3_FUSEError}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3_FUSEError}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3_FUSEError_spec = { "pyfuse3.__init__.FUSEError", sizeof(struct __pyx_obj_7pyfuse3_FUSEError), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3_FUSEError_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3_FUSEError = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""FUSEError", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3_FUSEError), /*tp_basicsize*/ 0, /*tp_itemsize*/ 0, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ __pyx_pw_7pyfuse3_9FUSEError_3__str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ PyDoc_STR("\n This exception may be raised by request handlers to indicate that\n the requested operation could not be carried out. The system call\n that resulted in the request (if any) will then fail with error\n code *errno_*.\n "), /*tp_doc*/ __pyx_tp_traverse_7pyfuse3_FUSEError, /*tp_traverse*/ __pyx_tp_clear_7pyfuse3_FUSEError, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_7pyfuse3_FUSEError, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_7pyfuse3_FUSEError, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3_FUSEError, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *__pyx_freelist_7pyfuse3___pyx_scope_struct__fuse_lookup_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct__fuse_lookup_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct__fuse_lookup_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct__fuse_lookup_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct__fuse_lookup_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct__fuse_lookup_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct__fuse_lookup_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct__fuse_lookup_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct__fuse_lookup_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct__fuse_lookup_async[__pyx_freecount_7pyfuse3___pyx_scope_struct__fuse_lookup_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct__fuse_lookup_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct__fuse_lookup_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct__fuse_lookup_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct__fuse_lookup_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async_spec = { "pyfuse3.__init__.__pyx_scope_struct__fuse_lookup_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct__fuse_lookup_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct__fuse_lookup_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct__fuse_lookup_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct__fuse_lookup_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct__fuse_lookup_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_1_fuse_getattr_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_1_fuse_getattr_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_fh); Py_CLEAR(p->__pyx_v_fields); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_fh) { e = (*v)(p->__pyx_v_fh, a); if (e) return e; } if (p->__pyx_v_fields) { e = (*v)(((PyObject *)p->__pyx_v_fields), a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_2_fuse_setattr_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_2_fuse_setattr_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_target); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_target) { e = (*v)(p->__pyx_v_target, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_3_fuse_readlink_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_3_fuse_readlink_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_4_fuse_mknod_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_4_fuse_mknod_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_5_fuse_mkdir_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_5_fuse_mkdir_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_6_fuse_unlink_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_6_fuse_unlink_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_7_fuse_rmdir_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_7_fuse_rmdir_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_link); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_link) { e = (*v)(p->__pyx_v_link, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_8_fuse_symlink_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_8_fuse_symlink_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_9_fuse_rename_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_9_fuse_rename_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_9_fuse_rename_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_9_fuse_rename_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_9_fuse_rename_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_9_fuse_rename_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_9_fuse_rename_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_9_fuse_rename_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_v_newname); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_9_fuse_rename_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_9_fuse_rename_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_9_fuse_rename_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_9_fuse_rename_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_v_newname) { e = (*v)(p->__pyx_v_newname, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_9_fuse_rename_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_9_fuse_rename_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_9_fuse_rename_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_9_fuse_rename_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_9_fuse_rename_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_9_fuse_rename_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_9_fuse_rename_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_9_fuse_rename_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_9_fuse_rename_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_10_fuse_link_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_10_fuse_link_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_10_fuse_link_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_10_fuse_link_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_10_fuse_link_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_10_fuse_link_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_10_fuse_link_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_10_fuse_link_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_newname); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_10_fuse_link_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_10_fuse_link_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_10_fuse_link_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_10_fuse_link_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_newname) { e = (*v)(p->__pyx_v_newname, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_10_fuse_link_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_10_fuse_link_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_10_fuse_link_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_10_fuse_link_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_10_fuse_link_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_10_fuse_link_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_10_fuse_link_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_10_fuse_link_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_10_fuse_link_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_11_fuse_open_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_11_fuse_open_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_11_fuse_open_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_11_fuse_open_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_11_fuse_open_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_11_fuse_open_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_11_fuse_open_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_11_fuse_open_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_fi); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_11_fuse_open_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_11_fuse_open_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_11_fuse_open_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_11_fuse_open_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_fi) { e = (*v)(((PyObject *)p->__pyx_v_fi), a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_11_fuse_open_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_11_fuse_open_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_11_fuse_open_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_11_fuse_open_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_11_fuse_open_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_11_fuse_open_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_11_fuse_open_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_11_fuse_open_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_11_fuse_open_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_12_fuse_read_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_12_fuse_read_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_12_fuse_read_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *p; PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_12_fuse_read_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_12_fuse_read_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_12_fuse_read_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif p = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)o); p->__pyx_v_pybuf.obj = NULL; return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_12_fuse_read_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_12_fuse_read_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_buf); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_12_fuse_read_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_12_fuse_read_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_12_fuse_read_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_12_fuse_read_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async *)o; if (p->__pyx_v_buf) { e = (*v)(p->__pyx_v_buf, a); if (e) return e; } if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } if (p->__pyx_v_pybuf.obj) { e = (*v)(p->__pyx_v_pybuf.obj, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_12_fuse_read_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_12_fuse_read_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_12_fuse_read_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_12_fuse_read_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_12_fuse_read_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_12_fuse_read_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_12_fuse_read_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_12_fuse_read_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_12_fuse_read_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_13_fuse_write_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_13_fuse_write_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_13_fuse_write_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_13_fuse_write_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_13_fuse_write_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_13_fuse_write_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_13_fuse_write_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_13_fuse_write_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_pbuf); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_13_fuse_write_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_13_fuse_write_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_13_fuse_write_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_13_fuse_write_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_pbuf) { e = (*v)(p->__pyx_v_pbuf, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_13_fuse_write_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_13_fuse_write_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_13_fuse_write_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_13_fuse_write_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_13_fuse_write_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_13_fuse_write_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_13_fuse_write_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_13_fuse_write_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_13_fuse_write_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_buf); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async *)o; if (p->__pyx_v_buf) { e = (*v)(p->__pyx_v_buf, a); if (e) return e; } if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_14_fuse_write_buf_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_14_fuse_write_buf_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_15_fuse_flush_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_15_fuse_flush_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_15_fuse_flush_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_15_fuse_flush_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_15_fuse_flush_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_15_fuse_flush_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_15_fuse_flush_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_15_fuse_flush_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_15_fuse_flush_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_15_fuse_flush_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_15_fuse_flush_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_15_fuse_flush_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_15_fuse_flush_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_15_fuse_flush_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_15_fuse_flush_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_15_fuse_flush_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_15_fuse_flush_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_15_fuse_flush_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_15_fuse_flush_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_15_fuse_flush_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_15_fuse_flush_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_16_fuse_release_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_16_fuse_release_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_16_fuse_release_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_16_fuse_release_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_16_fuse_release_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_16_fuse_release_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_16_fuse_release_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_16_fuse_release_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_16_fuse_release_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_16_fuse_release_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_16_fuse_release_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_16_fuse_release_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_16_fuse_release_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_16_fuse_release_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_16_fuse_release_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_16_fuse_release_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_16_fuse_release_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_16_fuse_release_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_16_fuse_release_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_16_fuse_release_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_16_fuse_release_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_17_fuse_fsync_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_17_fuse_fsync_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_18_fuse_opendir_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_18_fuse_opendir_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_token); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_token) { e = (*v)(((PyObject *)p->__pyx_v_token), a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_19_fuse_readdirplus_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_19_fuse_readdirplus_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_20_fuse_releasedir_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_20_fuse_releasedir_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_21_fuse_fsyncdir_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_21_fuse_fsyncdir_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_stats); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_stats) { e = (*v)(((PyObject *)p->__pyx_v_stats), a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_22_fuse_statfs_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_22_fuse_statfs_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_v_value); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); Py_CLEAR(p->__pyx_t_3); Py_CLEAR(p->__pyx_t_4); Py_CLEAR(p->__pyx_t_5); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_v_value) { e = (*v)(p->__pyx_v_value, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } if (p->__pyx_t_3) { e = (*v)(p->__pyx_t_3, a); if (e) return e; } if (p->__pyx_t_4) { e = (*v)(p->__pyx_t_4, a); if (e) return e; } if (p->__pyx_t_5) { e = (*v)(p->__pyx_t_5, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_23_fuse_setxattr_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_23_fuse_setxattr_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_buf); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async *)o; if (p->__pyx_v_buf) { e = (*v)(p->__pyx_v_buf, a); if (e) return e; } if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_24_fuse_getxattr_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_24_fuse_getxattr_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_buf); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_res); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async *)o; if (p->__pyx_v_buf) { e = (*v)(p->__pyx_v_buf, a); if (e) return e; } if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_res) { e = (*v)(p->__pyx_v_res, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_25_fuse_listxattr_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_25_fuse_listxattr_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_26_fuse_removexattr_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_26_fuse_removexattr_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_27_fuse_access_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_27_fuse_access_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_27_fuse_access_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_27_fuse_access_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_27_fuse_access_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_27_fuse_access_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_27_fuse_access_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_27_fuse_access_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_allowed); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_27_fuse_access_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_27_fuse_access_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_27_fuse_access_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_27_fuse_access_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async *)o; if (p->__pyx_v_allowed) { e = (*v)(p->__pyx_v_allowed, a); if (e) return e; } if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_27_fuse_access_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_27_fuse_access_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_27_fuse_access_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_27_fuse_access_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_27_fuse_access_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_27_fuse_access_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_27_fuse_access_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_27_fuse_access_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_27_fuse_access_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *__pyx_freelist_7pyfuse3___pyx_scope_struct_28_fuse_create_async[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_28_fuse_create_async = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_28_fuse_create_async(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_28_fuse_create_async > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_28_fuse_create_async[--__pyx_freecount_7pyfuse3___pyx_scope_struct_28_fuse_create_async]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_28_fuse_create_async(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_28_fuse_create_async) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_c); Py_CLEAR(p->__pyx_v_ctx); Py_CLEAR(p->__pyx_v_e); Py_CLEAR(p->__pyx_v_entry); Py_CLEAR(p->__pyx_v_fi); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_v_tmp); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_28_fuse_create_async < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_28_fuse_create_async[__pyx_freecount_7pyfuse3___pyx_scope_struct_28_fuse_create_async++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_28_fuse_create_async(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async *)o; if (p->__pyx_v_c) { e = (*v)(((PyObject *)p->__pyx_v_c), a); if (e) return e; } if (p->__pyx_v_ctx) { e = (*v)(p->__pyx_v_ctx, a); if (e) return e; } if (p->__pyx_v_e) { e = (*v)(p->__pyx_v_e, a); if (e) return e; } if (p->__pyx_v_entry) { e = (*v)(((PyObject *)p->__pyx_v_entry), a); if (e) return e; } if (p->__pyx_v_fi) { e = (*v)(((PyObject *)p->__pyx_v_fi), a); if (e) return e; } if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_v_tmp) { e = (*v)(p->__pyx_v_tmp, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_28_fuse_create_async}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_28_fuse_create_async}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_28_fuse_create_async}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async_spec = { "pyfuse3.__init__.__pyx_scope_struct_28_fuse_create_async", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_28_fuse_create_async", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_28_fuse_create_async), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_28_fuse_create_async, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_28_fuse_create_async, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_28_fuse_create_async, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *__pyx_freelist_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable[--__pyx_freecount_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); Py_CLEAR(p->__pyx_t_3); Py_CLEAR(p->__pyx_t_4); Py_CLEAR(p->__pyx_t_5); Py_CLEAR(p->__pyx_t_6); Py_CLEAR(p->__pyx_t_7); Py_CLEAR(p->__pyx_t_8); Py_CLEAR(p->__pyx_t_9); Py_CLEAR(p->__pyx_t_10); Py_CLEAR(p->__pyx_t_11); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable[__pyx_freecount_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable *)o; if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } if (p->__pyx_t_3) { e = (*v)(p->__pyx_t_3, a); if (e) return e; } if (p->__pyx_t_4) { e = (*v)(p->__pyx_t_4, a); if (e) return e; } if (p->__pyx_t_5) { e = (*v)(p->__pyx_t_5, a); if (e) return e; } if (p->__pyx_t_6) { e = (*v)(p->__pyx_t_6, a); if (e) return e; } if (p->__pyx_t_7) { e = (*v)(p->__pyx_t_7, a); if (e) return e; } if (p->__pyx_t_8) { e = (*v)(p->__pyx_t_8, a); if (e) return e; } if (p->__pyx_t_9) { e = (*v)(p->__pyx_t_9, a); if (e) return e; } if (p->__pyx_t_10) { e = (*v)(p->__pyx_t_10, a); if (e) return e; } if (p->__pyx_t_11) { e = (*v)(p->__pyx_t_11, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable_spec = { "pyfuse3.__init__.__pyx_scope_struct_29__wait_fuse_readable", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_29__wait_fuse_readable", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *__pyx_freelist_7pyfuse3___pyx_scope_struct_30__session_loop[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_30__session_loop = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_30__session_loop(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_30__session_loop > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_30__session_loop[--__pyx_freecount_7pyfuse3___pyx_scope_struct_30__session_loop]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_30__session_loop(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_30__session_loop) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_name); Py_CLEAR(p->__pyx_v_nursery); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_30__session_loop < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_30__session_loop[__pyx_freecount_7pyfuse3___pyx_scope_struct_30__session_loop++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_30__session_loop(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop *)o; if (p->__pyx_v_name) { e = (*v)(p->__pyx_v_name, a); if (e) return e; } if (p->__pyx_v_nursery) { e = (*v)(p->__pyx_v_nursery, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_30__session_loop}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_30__session_loop}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_30__session_loop}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop_spec = { "pyfuse3.__init__.__pyx_scope_struct_30__session_loop", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_30__session_loop", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_30__session_loop), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_30__session_loop, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_30__session_loop, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_30__session_loop, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif #if CYTHON_USE_FREELISTS static struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *__pyx_freelist_7pyfuse3___pyx_scope_struct_31_main[8]; static int __pyx_freecount_7pyfuse3___pyx_scope_struct_31_main = 0; #endif static PyObject *__pyx_tp_new_7pyfuse3___pyx_scope_struct_31_main(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else #if CYTHON_USE_FREELISTS if (likely((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_31_main > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main)))) { o = (PyObject*)__pyx_freelist_7pyfuse3___pyx_scope_struct_31_main[--__pyx_freecount_7pyfuse3___pyx_scope_struct_31_main]; memset(o, 0, sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else #endif { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } #endif return o; } static void __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_31_main(PyObject *o) { struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_31_main) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_nursery); Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); Py_CLEAR(p->__pyx_t_3); Py_CLEAR(p->__pyx_t_4); Py_CLEAR(p->__pyx_t_5); Py_CLEAR(p->__pyx_t_6); Py_CLEAR(p->__pyx_t_7); #if CYTHON_USE_FREELISTS if (((int)(__pyx_freecount_7pyfuse3___pyx_scope_struct_31_main < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main)))) { __pyx_freelist_7pyfuse3___pyx_scope_struct_31_main[__pyx_freecount_7pyfuse3___pyx_scope_struct_31_main++] = ((struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *)o); } else #endif { #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } } static int __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_31_main(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *p = (struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main *)o; if (p->__pyx_v_nursery) { e = (*v)(p->__pyx_v_nursery, a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; } if (p->__pyx_t_1) { e = (*v)(p->__pyx_t_1, a); if (e) return e; } if (p->__pyx_t_2) { e = (*v)(p->__pyx_t_2, a); if (e) return e; } if (p->__pyx_t_3) { e = (*v)(p->__pyx_t_3, a); if (e) return e; } if (p->__pyx_t_4) { e = (*v)(p->__pyx_t_4, a); if (e) return e; } if (p->__pyx_t_5) { e = (*v)(p->__pyx_t_5, a); if (e) return e; } if (p->__pyx_t_6) { e = (*v)(p->__pyx_t_6, a); if (e) return e; } if (p->__pyx_t_7) { e = (*v)(p->__pyx_t_7, a); if (e) return e; } return 0; } #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_7pyfuse3___pyx_scope_struct_31_main_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_31_main}, {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyfuse3___pyx_scope_struct_31_main}, {Py_tp_new, (void *)__pyx_tp_new_7pyfuse3___pyx_scope_struct_31_main}, {0, 0}, }; static PyType_Spec __pyx_type_7pyfuse3___pyx_scope_struct_31_main_spec = { "pyfuse3.__init__.__pyx_scope_struct_31_main", sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, __pyx_type_7pyfuse3___pyx_scope_struct_31_main_slots, }; #else static PyTypeObject __pyx_type_7pyfuse3___pyx_scope_struct_31_main = { PyVarObject_HEAD_INIT(0, 0) "pyfuse3.__init__.""__pyx_scope_struct_31_main", /*tp_name*/ sizeof(struct __pyx_obj_7pyfuse3___pyx_scope_struct_31_main), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_7pyfuse3___pyx_scope_struct_31_main, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_7pyfuse3___pyx_scope_struct_31_main, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_7pyfuse3___pyx_scope_struct_31_main, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if PY_VERSION_HEX >= 0x030d00A4 0, /*tp_versions_used*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #ifndef CYTHON_SMALL_CODE #if defined(__clang__) #define CYTHON_SMALL_CODE #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) #define CYTHON_SMALL_CODE __attribute__((cold)) #else #define CYTHON_SMALL_CODE #endif #endif /* #### Code section: pystring_table ### */ static int __Pyx_CreateStringTabAndInitStrings(void) { __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_Calling_fuse_session_destroy, __pyx_k_Calling_fuse_session_destroy, sizeof(__pyx_k_Calling_fuse_session_destroy), 0, 1, 0, 0}, {&__pyx_kp_u_Calling_fuse_session_mount, __pyx_k_Calling_fuse_session_mount, sizeof(__pyx_k_Calling_fuse_session_mount), 0, 1, 0, 0}, {&__pyx_kp_u_Calling_fuse_session_new, __pyx_k_Calling_fuse_session_new, sizeof(__pyx_k_Calling_fuse_session_new), 0, 1, 0, 0}, {&__pyx_kp_u_Calling_fuse_session_unmount, __pyx_k_Calling_fuse_session_unmount, sizeof(__pyx_k_Calling_fuse_session_unmount), 0, 1, 0, 0}, {&__pyx_n_s_ClosedResourceError, __pyx_k_ClosedResourceError, sizeof(__pyx_k_ClosedResourceError), 0, 0, 1, 1}, {&__pyx_n_s_Container, __pyx_k_Container, sizeof(__pyx_k_Container), 0, 0, 1, 1}, {&__pyx_n_s_Container___reduce_cython, __pyx_k_Container___reduce_cython, sizeof(__pyx_k_Container___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_Container___setstate_cython, __pyx_k_Container___setstate_cython, sizeof(__pyx_k_Container___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_u_ENOATTR, __pyx_k_ENOATTR, sizeof(__pyx_k_ENOATTR), 0, 1, 0, 1}, {&__pyx_n_s_EntryAttributes, __pyx_k_EntryAttributes, sizeof(__pyx_k_EntryAttributes), 0, 0, 1, 1}, {&__pyx_n_s_EntryAttributes___getstate, __pyx_k_EntryAttributes___getstate, sizeof(__pyx_k_EntryAttributes___getstate), 0, 0, 1, 1}, {&__pyx_n_s_EntryAttributes___reduce_cython, __pyx_k_EntryAttributes___reduce_cython, sizeof(__pyx_k_EntryAttributes___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_EntryAttributes___setstate, __pyx_k_EntryAttributes___setstate, sizeof(__pyx_k_EntryAttributes___setstate), 0, 0, 1, 1}, {&__pyx_n_s_EntryAttributes___setstate_cytho, __pyx_k_EntryAttributes___setstate_cytho, sizeof(__pyx_k_EntryAttributes___setstate_cytho), 0, 0, 1, 1}, {&__pyx_n_s_FUSEError, __pyx_k_FUSEError, sizeof(__pyx_k_FUSEError), 0, 0, 1, 1}, {&__pyx_n_s_FUSEError___reduce_cython, __pyx_k_FUSEError___reduce_cython, sizeof(__pyx_k_FUSEError___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_FUSEError___setstate_cython, __pyx_k_FUSEError___setstate_cython, sizeof(__pyx_k_FUSEError___setstate_cython), 0, 0, 1, 1}, {&__pyx_kp_u_FUSE_fd_about_to_be_closed, __pyx_k_FUSE_fd_about_to_be_closed, sizeof(__pyx_k_FUSE_fd_about_to_be_closed), 0, 1, 0, 0}, {&__pyx_kp_u_FUSE_session_exit_flag_set_while, __pyx_k_FUSE_session_exit_flag_set_while, sizeof(__pyx_k_FUSE_session_exit_flag_set_while), 0, 1, 0, 0}, {&__pyx_kp_u_Failed_to_submit_invalidate_entr, __pyx_k_Failed_to_submit_invalidate_entr, sizeof(__pyx_k_Failed_to_submit_invalidate_entr), 0, 1, 0, 0}, {&__pyx_n_s_FileHandleT, __pyx_k_FileHandleT, sizeof(__pyx_k_FileHandleT), 0, 0, 1, 1}, {&__pyx_n_s_FileInfo, __pyx_k_FileInfo, sizeof(__pyx_k_FileInfo), 0, 0, 1, 1}, {&__pyx_n_s_FileInfo___reduce_cython, __pyx_k_FileInfo___reduce_cython, sizeof(__pyx_k_FileInfo___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_FileInfo___setstate_cython, __pyx_k_FileInfo___setstate_cython, sizeof(__pyx_k_FileInfo___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_FileNameT, __pyx_k_FileNameT, sizeof(__pyx_k_FileNameT), 0, 0, 1, 1}, {&__pyx_n_s_FileNotFoundError, __pyx_k_FileNotFoundError, sizeof(__pyx_k_FileNotFoundError), 0, 0, 1, 1}, {&__pyx_n_s_FlagT, __pyx_k_FlagT, sizeof(__pyx_k_FlagT), 0, 0, 1, 1}, {&__pyx_kp_u_Groups, __pyx_k_Groups, sizeof(__pyx_k_Groups), 0, 1, 0, 0}, {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0}, {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0}, {&__pyx_kp_u_Initializing_pyfuse3, __pyx_k_Initializing_pyfuse3, sizeof(__pyx_k_Initializing_pyfuse3), 0, 1, 0, 0}, {&__pyx_n_s_InodeT, __pyx_k_InodeT, sizeof(__pyx_k_InodeT), 0, 0, 1, 1}, {&__pyx_kp_u_Kernel_too_old_pyfuse3_requires, __pyx_k_Kernel_too_old_pyfuse3_requires, sizeof(__pyx_k_Kernel_too_old_pyfuse3_requires), 0, 1, 0, 0}, {&__pyx_n_s_Lock, __pyx_k_Lock, sizeof(__pyx_k_Lock), 0, 0, 1, 1}, {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, {&__pyx_n_s_ModeT, __pyx_k_ModeT, sizeof(__pyx_k_ModeT), 0, 0, 1, 1}, {&__pyx_n_s_NANOS_PER_SEC, __pyx_k_NANOS_PER_SEC, sizeof(__pyx_k_NANOS_PER_SEC), 0, 0, 1, 1}, {&__pyx_kp_u_Need_to_call_init_before_main, __pyx_k_Need_to_call_init_before_main, sizeof(__pyx_k_Need_to_call_init_before_main), 0, 1, 0, 0}, {&__pyx_n_s_OSError, __pyx_k_OSError, sizeof(__pyx_k_OSError), 0, 0, 1, 1}, {&__pyx_n_s_O_DIRECTORY, __pyx_k_O_DIRECTORY, sizeof(__pyx_k_O_DIRECTORY), 0, 0, 1, 1}, {&__pyx_n_s_Operations, __pyx_k_Operations, sizeof(__pyx_k_Operations), 0, 0, 1, 1}, {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1}, {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, {&__pyx_n_s_PicklingError, __pyx_k_PicklingError, sizeof(__pyx_k_PicklingError), 0, 0, 1, 1}, {&__pyx_n_s_Queue, __pyx_k_Queue, sizeof(__pyx_k_Queue), 0, 0, 1, 1}, {&__pyx_n_u_RENAME_EXCHANGE, __pyx_k_RENAME_EXCHANGE, sizeof(__pyx_k_RENAME_EXCHANGE), 0, 1, 0, 1}, {&__pyx_n_u_RENAME_NOREPLACE, __pyx_k_RENAME_NOREPLACE, sizeof(__pyx_k_RENAME_NOREPLACE), 0, 1, 0, 1}, {&__pyx_n_s_ROOT_INODE, __pyx_k_ROOT_INODE, sizeof(__pyx_k_ROOT_INODE), 0, 0, 1, 1}, {&__pyx_n_s_ReaddirToken, __pyx_k_ReaddirToken, sizeof(__pyx_k_ReaddirToken), 0, 0, 1, 1}, {&__pyx_n_s_ReaddirToken___reduce_cython, __pyx_k_ReaddirToken___reduce_cython, sizeof(__pyx_k_ReaddirToken___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_ReaddirToken___setstate_cython, __pyx_k_ReaddirToken___setstate_cython, sizeof(__pyx_k_ReaddirToken___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_RequestContext, __pyx_k_RequestContext, sizeof(__pyx_k_RequestContext), 0, 0, 1, 1}, {&__pyx_n_s_RequestContext___getstate, __pyx_k_RequestContext___getstate, sizeof(__pyx_k_RequestContext___getstate), 0, 0, 1, 1}, {&__pyx_n_s_RequestContext___reduce_cython, __pyx_k_RequestContext___reduce_cython, sizeof(__pyx_k_RequestContext___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_RequestContext___setstate_cython, __pyx_k_RequestContext___setstate_cython, sizeof(__pyx_k_RequestContext___setstate_cython), 0, 0, 1, 1}, {&__pyx_kp_u_RequestContext_instances_can_t_b, __pyx_k_RequestContext_instances_can_t_b, sizeof(__pyx_k_RequestContext_instances_can_t_b), 0, 1, 0, 0}, {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, {&__pyx_n_s_SetattrFields, __pyx_k_SetattrFields, sizeof(__pyx_k_SetattrFields), 0, 0, 1, 1}, {&__pyx_n_s_SetattrFields___getstate, __pyx_k_SetattrFields___getstate, sizeof(__pyx_k_SetattrFields___getstate), 0, 0, 1, 1}, {&__pyx_n_s_SetattrFields___reduce_cython, __pyx_k_SetattrFields___reduce_cython, sizeof(__pyx_k_SetattrFields___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_SetattrFields___setstate_cython, __pyx_k_SetattrFields___setstate_cython, sizeof(__pyx_k_SetattrFields___setstate_cython), 0, 0, 1, 1}, {&__pyx_kp_u_SetattrFields_instances_can_t_be, __pyx_k_SetattrFields_instances_can_t_be, sizeof(__pyx_k_SetattrFields_instances_can_t_be), 0, 1, 0, 0}, {&__pyx_kp_u_Starting_notify_worker, __pyx_k_Starting_notify_worker, sizeof(__pyx_k_Starting_notify_worker), 0, 1, 0, 0}, {&__pyx_n_s_StatvfsData, __pyx_k_StatvfsData, sizeof(__pyx_k_StatvfsData), 0, 0, 1, 1}, {&__pyx_n_s_StatvfsData___getstate, __pyx_k_StatvfsData___getstate, sizeof(__pyx_k_StatvfsData___getstate), 0, 0, 1, 1}, {&__pyx_n_s_StatvfsData___reduce_cython, __pyx_k_StatvfsData___reduce_cython, sizeof(__pyx_k_StatvfsData___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_StatvfsData___setstate, __pyx_k_StatvfsData___setstate, sizeof(__pyx_k_StatvfsData___setstate), 0, 0, 1, 1}, {&__pyx_n_s_StatvfsData___setstate_cython, __pyx_k_StatvfsData___setstate_cython, sizeof(__pyx_k_StatvfsData___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_kp_u_Unable_to_parse_s, __pyx_k_Unable_to_parse_s, sizeof(__pyx_k_Unable_to_parse_s), 0, 1, 0, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u_Value_too_long_to_convert_to_Pyt, __pyx_k_Value_too_long_to_convert_to_Pyt, sizeof(__pyx_k_Value_too_long_to_convert_to_Pyt), 0, 1, 0, 0}, {&__pyx_n_s_WorkerData, __pyx_k_WorkerData, sizeof(__pyx_k_WorkerData), 0, 0, 1, 1}, {&__pyx_n_s_WorkerData___reduce_cython, __pyx_k_WorkerData___reduce_cython, sizeof(__pyx_k_WorkerData___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_WorkerData___setstate_cython, __pyx_k_WorkerData___setstate_cython, sizeof(__pyx_k_WorkerData___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_XAttrNameT, __pyx_k_XAttrNameT, sizeof(__pyx_k_XAttrNameT), 0, 0, 1, 1}, {&__pyx_kp_b__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 0, 0, 0}, {&__pyx_kp_u__47, __pyx_k__47, sizeof(__pyx_k__47), 0, 1, 0, 0}, {&__pyx_n_s__49, __pyx_k__49, sizeof(__pyx_k__49), 0, 0, 1, 1}, {&__pyx_n_s__50, __pyx_k__50, sizeof(__pyx_k__50), 0, 0, 1, 1}, {&__pyx_n_s__52, __pyx_k__52, sizeof(__pyx_k__52), 0, 0, 1, 1}, {&__pyx_n_s_abspath, __pyx_k_abspath, sizeof(__pyx_k_abspath), 0, 0, 1, 1}, {&__pyx_n_s_access, __pyx_k_access, sizeof(__pyx_k_access), 0, 0, 1, 1}, {&__pyx_n_s_aenter, __pyx_k_aenter, sizeof(__pyx_k_aenter), 0, 0, 1, 1}, {&__pyx_n_s_aexit, __pyx_k_aexit, sizeof(__pyx_k_aexit), 0, 0, 1, 1}, {&__pyx_n_s_allowed, __pyx_k_allowed, sizeof(__pyx_k_allowed), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, {&__pyx_n_s_async_wrapper, __pyx_k_async_wrapper, sizeof(__pyx_k_async_wrapper), 0, 0, 1, 1}, {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, {&__pyx_n_s_attr, __pyx_k_attr, sizeof(__pyx_k_attr), 0, 0, 1, 1}, {&__pyx_n_s_attr_only, __pyx_k_attr_only, sizeof(__pyx_k_attr_only), 0, 0, 1, 1}, {&__pyx_n_u_attr_timeout, __pyx_k_attr_timeout, sizeof(__pyx_k_attr_timeout), 0, 1, 0, 1}, {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1}, {&__pyx_n_s_buf, __pyx_k_buf, sizeof(__pyx_k_buf), 0, 0, 1, 1}, {&__pyx_n_s_bufsize, __pyx_k_bufsize, sizeof(__pyx_k_bufsize), 0, 0, 1, 1}, {&__pyx_n_s_bufvec, __pyx_k_bufvec, sizeof(__pyx_k_bufvec), 0, 0, 1, 1}, {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, {&__pyx_n_s_cbuf, __pyx_k_cbuf, sizeof(__pyx_k_cbuf), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_cname, __pyx_k_cname, sizeof(__pyx_k_cname), 0, 0, 1, 1}, {&__pyx_n_s_cnamespace, __pyx_k_cnamespace, sizeof(__pyx_k_cnamespace), 0, 0, 1, 1}, {&__pyx_n_s_cpath, __pyx_k_cpath, sizeof(__pyx_k_cpath), 0, 0, 1, 1}, {&__pyx_n_s_create, __pyx_k_create, sizeof(__pyx_k_create), 0, 0, 1, 1}, {&__pyx_n_s_ctx, __pyx_k_ctx, sizeof(__pyx_k_ctx), 0, 0, 1, 1}, {&__pyx_n_s_current_task, __pyx_k_current_task, sizeof(__pyx_k_current_task), 0, 0, 1, 1}, {&__pyx_n_s_current_trio_token, __pyx_k_current_trio_token, sizeof(__pyx_k_current_trio_token), 0, 0, 1, 1}, {&__pyx_n_s_cvalue, __pyx_k_cvalue, sizeof(__pyx_k_cvalue), 0, 0, 1, 1}, {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1}, {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, {&__pyx_n_s_default_options, __pyx_k_default_options, sizeof(__pyx_k_default_options), 0, 0, 1, 1}, {&__pyx_n_u_default_permissions, __pyx_k_default_permissions, sizeof(__pyx_k_default_permissions), 0, 1, 0, 1}, {&__pyx_n_s_deleted, __pyx_k_deleted, sizeof(__pyx_k_deleted), 0, 0, 1, 1}, {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1}, {&__pyx_n_s_direct_io, __pyx_k_direct_io, sizeof(__pyx_k_direct_io), 0, 0, 1, 1}, {&__pyx_n_s_dirp, __pyx_k_dirp, sizeof(__pyx_k_dirp), 0, 0, 1, 1}, {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, {&__pyx_n_s_enable_acl, __pyx_k_enable_acl, sizeof(__pyx_k_enable_acl), 0, 0, 1, 1}, {&__pyx_n_s_enable_writeback_cache, __pyx_k_enable_writeback_cache, sizeof(__pyx_k_enable_writeback_cache), 0, 0, 1, 1}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, {&__pyx_n_s_entry, __pyx_k_entry, sizeof(__pyx_k_entry), 0, 0, 1, 1}, {&__pyx_n_u_entry_timeout, __pyx_k_entry_timeout, sizeof(__pyx_k_entry_timeout), 0, 1, 0, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, {&__pyx_n_s_errno, __pyx_k_errno, sizeof(__pyx_k_errno), 0, 0, 1, 1}, {&__pyx_kp_u_errno_d, __pyx_k_errno_d, sizeof(__pyx_k_errno_d), 0, 1, 0, 0}, {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, {&__pyx_n_s_exc, __pyx_k_exc, sizeof(__pyx_k_exc), 0, 0, 1, 1}, {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, {&__pyx_n_s_f_args, __pyx_k_f_args, sizeof(__pyx_k_f_args), 0, 0, 1, 1}, {&__pyx_n_u_f_bavail, __pyx_k_f_bavail, sizeof(__pyx_k_f_bavail), 0, 1, 0, 1}, {&__pyx_n_u_f_bfree, __pyx_k_f_bfree, sizeof(__pyx_k_f_bfree), 0, 1, 0, 1}, {&__pyx_n_u_f_blocks, __pyx_k_f_blocks, sizeof(__pyx_k_f_blocks), 0, 1, 0, 1}, {&__pyx_n_u_f_bsize, __pyx_k_f_bsize, sizeof(__pyx_k_f_bsize), 0, 1, 0, 1}, {&__pyx_n_u_f_favail, __pyx_k_f_favail, sizeof(__pyx_k_f_favail), 0, 1, 0, 1}, {&__pyx_n_u_f_ffree, __pyx_k_f_ffree, sizeof(__pyx_k_f_ffree), 0, 1, 0, 1}, {&__pyx_n_u_f_files, __pyx_k_f_files, sizeof(__pyx_k_f_files), 0, 1, 0, 1}, {&__pyx_n_u_f_frsize, __pyx_k_f_frsize, sizeof(__pyx_k_f_frsize), 0, 1, 0, 1}, {&__pyx_n_u_f_namemax, __pyx_k_f_namemax, sizeof(__pyx_k_f_namemax), 0, 1, 0, 1}, {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, {&__pyx_n_s_fh, __pyx_k_fh, sizeof(__pyx_k_fh), 0, 0, 1, 1}, {&__pyx_n_s_fi, __pyx_k_fi, sizeof(__pyx_k_fi), 0, 0, 1, 1}, {&__pyx_n_s_fields, __pyx_k_fields, sizeof(__pyx_k_fields), 0, 0, 1, 1}, {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1}, {&__pyx_n_s_flush, __pyx_k_flush, sizeof(__pyx_k_flush), 0, 0, 1, 1}, {&__pyx_n_s_forget, __pyx_k_forget, sizeof(__pyx_k_forget), 0, 0, 1, 1}, {&__pyx_n_s_fse, __pyx_k_fse, sizeof(__pyx_k_fse), 0, 0, 1, 1}, {&__pyx_n_s_fsync, __pyx_k_fsync, sizeof(__pyx_k_fsync), 0, 0, 1, 1}, {&__pyx_n_s_fsyncdir, __pyx_k_fsyncdir, sizeof(__pyx_k_fsyncdir), 0, 0, 1, 1}, {&__pyx_n_s_fuse_access_async, __pyx_k_fuse_access_async, sizeof(__pyx_k_fuse_access_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_access_fuse_reply__failed_w, __pyx_k_fuse_access_fuse_reply__failed_w, sizeof(__pyx_k_fuse_access_fuse_reply__failed_w), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_buf_copy_failed_with, __pyx_k_fuse_buf_copy_failed_with, sizeof(__pyx_k_fuse_buf_copy_failed_with), 0, 1, 0, 0}, {&__pyx_n_s_fuse_create_async, __pyx_k_fuse_create_async, sizeof(__pyx_k_fuse_create_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_create_fuse_reply__failed_w, __pyx_k_fuse_create_fuse_reply__failed_w, sizeof(__pyx_k_fuse_create_fuse_reply__failed_w), 0, 1, 0, 0}, {&__pyx_n_s_fuse_flush_async, __pyx_k_fuse_flush_async, sizeof(__pyx_k_fuse_flush_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_flush_fuse_reply__failed_wi, __pyx_k_fuse_flush_fuse_reply__failed_wi, sizeof(__pyx_k_fuse_flush_fuse_reply__failed_wi), 0, 1, 0, 0}, {&__pyx_n_s_fuse_fsync_async, __pyx_k_fuse_fsync_async, sizeof(__pyx_k_fuse_fsync_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_fsync_fuse_reply__failed_wi, __pyx_k_fuse_fsync_fuse_reply__failed_wi, sizeof(__pyx_k_fuse_fsync_fuse_reply__failed_wi), 0, 1, 0, 0}, {&__pyx_n_s_fuse_fsyncdir_async, __pyx_k_fuse_fsyncdir_async, sizeof(__pyx_k_fuse_fsyncdir_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_fsyncdir_fuse_reply__failed, __pyx_k_fuse_fsyncdir_fuse_reply__failed, sizeof(__pyx_k_fuse_fsyncdir_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_getattr_async, __pyx_k_fuse_getattr_async, sizeof(__pyx_k_fuse_getattr_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_getattr_fuse_reply__failed, __pyx_k_fuse_getattr_fuse_reply__failed, sizeof(__pyx_k_fuse_getattr_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_getxattr_async, __pyx_k_fuse_getxattr_async, sizeof(__pyx_k_fuse_getxattr_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_getxattr_fuse_reply__failed, __pyx_k_fuse_getxattr_fuse_reply__failed, sizeof(__pyx_k_fuse_getxattr_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_link_async, __pyx_k_fuse_link_async, sizeof(__pyx_k_fuse_link_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_link_fuse_reply__failed_wit, __pyx_k_fuse_link_fuse_reply__failed_wit, sizeof(__pyx_k_fuse_link_fuse_reply__failed_wit), 0, 1, 0, 0}, {&__pyx_n_s_fuse_listxattr_async, __pyx_k_fuse_listxattr_async, sizeof(__pyx_k_fuse_listxattr_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_listxattr_fuse_reply__faile, __pyx_k_fuse_listxattr_fuse_reply__faile, sizeof(__pyx_k_fuse_listxattr_fuse_reply__faile), 0, 1, 0, 0}, {&__pyx_n_s_fuse_lookup_async, __pyx_k_fuse_lookup_async, sizeof(__pyx_k_fuse_lookup_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_lookup_fuse_reply__failed_w, __pyx_k_fuse_lookup_fuse_reply__failed_w, sizeof(__pyx_k_fuse_lookup_fuse_reply__failed_w), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_lowlevel_notify_delete_retu, __pyx_k_fuse_lowlevel_notify_delete_retu, sizeof(__pyx_k_fuse_lowlevel_notify_delete_retu), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_lowlevel_notify_inval_entry, __pyx_k_fuse_lowlevel_notify_inval_entry, sizeof(__pyx_k_fuse_lowlevel_notify_inval_entry), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_lowlevel_notify_inval_inode, __pyx_k_fuse_lowlevel_notify_inval_inode, sizeof(__pyx_k_fuse_lowlevel_notify_inval_inode), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_lowlevel_notify_store_retur, __pyx_k_fuse_lowlevel_notify_store_retur, sizeof(__pyx_k_fuse_lowlevel_notify_store_retur), 0, 1, 0, 0}, {&__pyx_n_s_fuse_mkdir_async, __pyx_k_fuse_mkdir_async, sizeof(__pyx_k_fuse_mkdir_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_mkdir_fuse_reply__failed_wi, __pyx_k_fuse_mkdir_fuse_reply__failed_wi, sizeof(__pyx_k_fuse_mkdir_fuse_reply__failed_wi), 0, 1, 0, 0}, {&__pyx_n_s_fuse_mknod_async, __pyx_k_fuse_mknod_async, sizeof(__pyx_k_fuse_mknod_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_mknod_fuse_reply__failed_wi, __pyx_k_fuse_mknod_fuse_reply__failed_wi, sizeof(__pyx_k_fuse_mknod_fuse_reply__failed_wi), 0, 1, 0, 0}, {&__pyx_n_s_fuse_open_async, __pyx_k_fuse_open_async, sizeof(__pyx_k_fuse_open_async), 0, 0, 1, 1}, {&__pyx_n_s_fuse_opendir_async, __pyx_k_fuse_opendir_async, sizeof(__pyx_k_fuse_opendir_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_opendir_fuse_reply__failed, __pyx_k_fuse_opendir_fuse_reply__failed, sizeof(__pyx_k_fuse_opendir_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_read_async, __pyx_k_fuse_read_async, sizeof(__pyx_k_fuse_read_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_read_fuse_reply__failed_wit, __pyx_k_fuse_read_fuse_reply__failed_wit, sizeof(__pyx_k_fuse_read_fuse_reply__failed_wit), 0, 1, 0, 0}, {&__pyx_n_s_fuse_readdirplus_async, __pyx_k_fuse_readdirplus_async, sizeof(__pyx_k_fuse_readdirplus_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_readdirplus_fuse_reply__fai, __pyx_k_fuse_readdirplus_fuse_reply__fai, sizeof(__pyx_k_fuse_readdirplus_fuse_reply__fai), 0, 1, 0, 0}, {&__pyx_n_s_fuse_readlink_async, __pyx_k_fuse_readlink_async, sizeof(__pyx_k_fuse_readlink_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_readlink_fuse_reply__failed, __pyx_k_fuse_readlink_fuse_reply__failed, sizeof(__pyx_k_fuse_readlink_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_release_async, __pyx_k_fuse_release_async, sizeof(__pyx_k_fuse_release_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_release_fuse_reply__failed, __pyx_k_fuse_release_fuse_reply__failed, sizeof(__pyx_k_fuse_release_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_releasedir_async, __pyx_k_fuse_releasedir_async, sizeof(__pyx_k_fuse_releasedir_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_releasedir_fuse_reply__fail, __pyx_k_fuse_releasedir_fuse_reply__fail, sizeof(__pyx_k_fuse_releasedir_fuse_reply__fail), 0, 1, 0, 0}, {&__pyx_n_s_fuse_removexattr_async, __pyx_k_fuse_removexattr_async, sizeof(__pyx_k_fuse_removexattr_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_removexattr_fuse_reply__fai, __pyx_k_fuse_removexattr_fuse_reply__fai, sizeof(__pyx_k_fuse_removexattr_fuse_reply__fai), 0, 1, 0, 0}, {&__pyx_n_s_fuse_rename_async, __pyx_k_fuse_rename_async, sizeof(__pyx_k_fuse_rename_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_rename_fuse_reply__failed_w, __pyx_k_fuse_rename_fuse_reply__failed_w, sizeof(__pyx_k_fuse_rename_fuse_reply__failed_w), 0, 1, 0, 0}, {&__pyx_n_s_fuse_rmdir_async, __pyx_k_fuse_rmdir_async, sizeof(__pyx_k_fuse_rmdir_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_rmdir_fuse_reply__failed_wi, __pyx_k_fuse_rmdir_fuse_reply__failed_wi, sizeof(__pyx_k_fuse_rmdir_fuse_reply__failed_wi), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_session_mount_failed, __pyx_k_fuse_session_mount_failed, sizeof(__pyx_k_fuse_session_mount_failed), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_session_new_failed, __pyx_k_fuse_session_new_failed, sizeof(__pyx_k_fuse_session_new_failed), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_session_receive_buf_failed, __pyx_k_fuse_session_receive_buf_failed, sizeof(__pyx_k_fuse_session_receive_buf_failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_setattr_async, __pyx_k_fuse_setattr_async, sizeof(__pyx_k_fuse_setattr_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_setattr_clock_gettime_CLOCK, __pyx_k_fuse_setattr_clock_gettime_CLOCK, sizeof(__pyx_k_fuse_setattr_clock_gettime_CLOCK), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_setattr_fuse_reply__failed, __pyx_k_fuse_setattr_fuse_reply__failed, sizeof(__pyx_k_fuse_setattr_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_setxattr_async, __pyx_k_fuse_setxattr_async, sizeof(__pyx_k_fuse_setxattr_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_setxattr_fuse_reply__failed, __pyx_k_fuse_setxattr_fuse_reply__failed, sizeof(__pyx_k_fuse_setxattr_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_u_fuse_stacktrace, __pyx_k_fuse_stacktrace, sizeof(__pyx_k_fuse_stacktrace), 0, 1, 0, 1}, {&__pyx_n_s_fuse_statfs_async, __pyx_k_fuse_statfs_async, sizeof(__pyx_k_fuse_statfs_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_statfs_fuse_reply__failed_w, __pyx_k_fuse_statfs_fuse_reply__failed_w, sizeof(__pyx_k_fuse_statfs_fuse_reply__failed_w), 0, 1, 0, 0}, {&__pyx_n_s_fuse_symlink_async, __pyx_k_fuse_symlink_async, sizeof(__pyx_k_fuse_symlink_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_symlink_fuse_reply__failed, __pyx_k_fuse_symlink_fuse_reply__failed, sizeof(__pyx_k_fuse_symlink_fuse_reply__failed), 0, 1, 0, 0}, {&__pyx_n_s_fuse_unlink_async, __pyx_k_fuse_unlink_async, sizeof(__pyx_k_fuse_unlink_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_unlink_fuse_reply__failed_w, __pyx_k_fuse_unlink_fuse_reply__failed_w, sizeof(__pyx_k_fuse_unlink_fuse_reply__failed_w), 0, 1, 0, 0}, {&__pyx_n_s_fuse_write_async, __pyx_k_fuse_write_async, sizeof(__pyx_k_fuse_write_async), 0, 0, 1, 1}, {&__pyx_n_s_fuse_write_buf_async, __pyx_k_fuse_write_buf_async, sizeof(__pyx_k_fuse_write_buf_async), 0, 0, 1, 1}, {&__pyx_kp_u_fuse_write_buf_fuse_reply__faile, __pyx_k_fuse_write_buf_fuse_reply__faile, sizeof(__pyx_k_fuse_write_buf_fuse_reply__faile), 0, 1, 0, 0}, {&__pyx_kp_u_fuse_write_fuse_reply__failed_wi, __pyx_k_fuse_write_fuse_reply__failed_wi, sizeof(__pyx_k_fuse_write_fuse_reply__failed_wi), 0, 1, 0, 0}, {&__pyx_n_s_g, __pyx_k_g, sizeof(__pyx_k_g), 0, 0, 1, 1}, {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, {&__pyx_n_u_generation, __pyx_k_generation, sizeof(__pyx_k_generation), 0, 1, 0, 1}, {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, {&__pyx_n_s_getLogger, __pyx_k_getLogger, sizeof(__pyx_k_getLogger), 0, 0, 1, 1}, {&__pyx_n_s_get_sup_groups, __pyx_k_get_sup_groups, sizeof(__pyx_k_get_sup_groups), 0, 0, 1, 1}, {&__pyx_n_s_getattr, __pyx_k_getattr, sizeof(__pyx_k_getattr), 0, 0, 1, 1}, {&__pyx_n_s_getfilesystemencoding, __pyx_k_getfilesystemencoding, sizeof(__pyx_k_getfilesystemencoding), 0, 0, 1, 1}, {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, {&__pyx_n_s_getxattr, __pyx_k_getxattr, sizeof(__pyx_k_getxattr), 0, 0, 1, 1}, {&__pyx_n_s_gids, __pyx_k_gids, sizeof(__pyx_k_gids), 0, 0, 1, 1}, {&__pyx_n_s_ignore_enoent, __pyx_k_ignore_enoent, sizeof(__pyx_k_ignore_enoent), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, {&__pyx_n_s_ino, __pyx_k_ino, sizeof(__pyx_k_ino), 0, 0, 1, 1}, {&__pyx_n_s_inode, __pyx_k_inode, sizeof(__pyx_k_inode), 0, 0, 1, 1}, {&__pyx_n_s_inode_p, __pyx_k_inode_p, sizeof(__pyx_k_inode_p), 0, 0, 1, 1}, {&__pyx_n_s_invalidate_entry, __pyx_k_invalidate_entry, sizeof(__pyx_k_invalidate_entry), 0, 0, 1, 1}, {&__pyx_n_s_invalidate_entry_async, __pyx_k_invalidate_entry_async, sizeof(__pyx_k_invalidate_entry_async), 0, 0, 1, 1}, {&__pyx_n_s_invalidate_inode, __pyx_k_invalidate_inode, sizeof(__pyx_k_invalidate_inode), 0, 0, 1, 1}, {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, {&__pyx_n_s_keep_cache, __pyx_k_keep_cache, sizeof(__pyx_k_keep_cache), 0, 0, 1, 1}, {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1}, {&__pyx_n_s_len_s, __pyx_k_len_s, sizeof(__pyx_k_len_s), 0, 0, 1, 1}, {&__pyx_n_s_line, __pyx_k_line, sizeof(__pyx_k_line), 0, 0, 1, 1}, {&__pyx_n_s_link, __pyx_k_link, sizeof(__pyx_k_link), 0, 0, 1, 1}, {&__pyx_n_s_listdir, __pyx_k_listdir, sizeof(__pyx_k_listdir), 0, 0, 1, 1}, {&__pyx_n_s_listxattr, __pyx_k_listxattr, sizeof(__pyx_k_listxattr), 0, 0, 1, 1}, {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1}, {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1}, {&__pyx_n_s_lookup, __pyx_k_lookup, sizeof(__pyx_k_lookup), 0, 0, 1, 1}, {&__pyx_n_s_lowlevel, __pyx_k_lowlevel, sizeof(__pyx_k_lowlevel), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1}, {&__pyx_n_s_mask, __pyx_k_mask, sizeof(__pyx_k_mask), 0, 0, 1, 1}, {&__pyx_n_s_max_tasks, __pyx_k_max_tasks, sizeof(__pyx_k_max_tasks), 0, 0, 1, 1}, {&__pyx_n_s_min_tasks, __pyx_k_min_tasks, sizeof(__pyx_k_min_tasks), 0, 0, 1, 1}, {&__pyx_n_s_mkdir, __pyx_k_mkdir, sizeof(__pyx_k_mkdir), 0, 0, 1, 1}, {&__pyx_n_s_mknod, __pyx_k_mknod, sizeof(__pyx_k_mknod), 0, 0, 1, 1}, {&__pyx_n_s_mountpoint, __pyx_k_mountpoint, sizeof(__pyx_k_mountpoint), 0, 0, 1, 1}, {&__pyx_kp_u_mountpoint__argument_must_be_of, __pyx_k_mountpoint__argument_must_be_of, sizeof(__pyx_k_mountpoint__argument_must_be_of), 0, 1, 0, 0}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, {&__pyx_kp_u_name_argument_must_be_of_type_s, __pyx_k_name_argument_must_be_of_type_s, sizeof(__pyx_k_name_argument_must_be_of_type_s), 0, 1, 0, 0}, {&__pyx_n_s_name_b, __pyx_k_name_b, sizeof(__pyx_k_name_b), 0, 0, 1, 1}, {&__pyx_n_s_names, __pyx_k_names, sizeof(__pyx_k_names), 0, 0, 1, 1}, {&__pyx_n_s_namespace, __pyx_k_namespace, sizeof(__pyx_k_namespace), 0, 0, 1, 1}, {&__pyx_kp_u_namespace_parameter_must_be_sys, __pyx_k_namespace_parameter_must_be_sys, sizeof(__pyx_k_namespace_parameter_must_be_sys), 0, 1, 0, 0}, {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, {&__pyx_n_s_newname, __pyx_k_newname, sizeof(__pyx_k_newname), 0, 0, 1, 1}, {&__pyx_n_s_newparent, __pyx_k_newparent, sizeof(__pyx_k_newparent), 0, 0, 1, 1}, {&__pyx_n_s_next_id, __pyx_k_next_id, sizeof(__pyx_k_next_id), 0, 0, 1, 1}, {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, {&__pyx_n_s_nonseekable, __pyx_k_nonseekable, sizeof(__pyx_k_nonseekable), 0, 0, 1, 1}, {&__pyx_n_s_notify_closing, __pyx_k_notify_closing, sizeof(__pyx_k_notify_closing), 0, 0, 1, 1}, {&__pyx_n_s_notify_loop, __pyx_k_notify_loop, sizeof(__pyx_k_notify_loop), 0, 0, 1, 1}, {&__pyx_n_s_notify_store, __pyx_k_notify_store, sizeof(__pyx_k_notify_store), 0, 0, 1, 1}, {&__pyx_n_s_now, __pyx_k_now, sizeof(__pyx_k_now), 0, 0, 1, 1}, {&__pyx_n_s_nursery, __pyx_k_nursery, sizeof(__pyx_k_nursery), 0, 0, 1, 1}, {&__pyx_kp_b_o, __pyx_k_o, sizeof(__pyx_k_o), 0, 0, 0, 0}, {&__pyx_n_s_off, __pyx_k_off, sizeof(__pyx_k_off), 0, 0, 1, 1}, {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1}, {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1}, {&__pyx_n_s_open_nursery, __pyx_k_open_nursery, sizeof(__pyx_k_open_nursery), 0, 0, 1, 1}, {&__pyx_n_s_opendir, __pyx_k_opendir, sizeof(__pyx_k_opendir), 0, 0, 1, 1}, {&__pyx_n_s_ops, __pyx_k_ops, sizeof(__pyx_k_ops), 0, 0, 1, 1}, {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1}, {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, {&__pyx_n_s_os_path, __pyx_k_os_path, sizeof(__pyx_k_os_path), 0, 0, 1, 1}, {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, {&__pyx_kp_u_path_argument_must_be_of_type_s, __pyx_k_path_argument_must_be_of_type_s, sizeof(__pyx_k_path_argument_must_be_of_type_s), 0, 1, 0, 0}, {&__pyx_n_s_path_b, __pyx_k_path_b, sizeof(__pyx_k_path_b), 0, 0, 1, 1}, {&__pyx_n_s_pbuf, __pyx_k_pbuf, sizeof(__pyx_k_pbuf), 0, 0, 1, 1}, {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, {&__pyx_n_s_pid, __pyx_k_pid, sizeof(__pyx_k_pid), 0, 0, 1, 1}, {&__pyx_kp_u_proc_d_status, __pyx_k_proc_d_status, sizeof(__pyx_k_proc_d_status), 0, 1, 0, 0}, {&__pyx_n_s_put, __pyx_k_put, sizeof(__pyx_k_put), 0, 0, 1, 1}, {&__pyx_kp_u_py_retval_was_not_awaited_please, __pyx_k_py_retval_was_not_awaited_please, sizeof(__pyx_k_py_retval_was_not_awaited_please), 0, 1, 0, 0}, {&__pyx_n_s_pybuf, __pyx_k_pybuf, sizeof(__pyx_k_pybuf), 0, 0, 1, 1}, {&__pyx_n_b_pyfuse3, __pyx_k_pyfuse3, sizeof(__pyx_k_pyfuse3), 0, 0, 0, 1}, {&__pyx_n_s_pyfuse3, __pyx_k_pyfuse3, sizeof(__pyx_k_pyfuse3), 0, 0, 1, 1}, {&__pyx_n_u_pyfuse3, __pyx_k_pyfuse3, sizeof(__pyx_k_pyfuse3), 0, 1, 0, 1}, {&__pyx_n_s_pyfuse3_2, __pyx_k_pyfuse3_2, sizeof(__pyx_k_pyfuse3_2), 0, 0, 1, 1}, {&__pyx_kp_u_pyfuse3___init, __pyx_k_pyfuse3___init, sizeof(__pyx_k_pyfuse3___init), 0, 1, 0, 0}, {&__pyx_kp_u_pyfuse_02d, __pyx_k_pyfuse_02d, sizeof(__pyx_k_pyfuse_02d), 0, 1, 0, 0}, {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, {&__pyx_n_s_pyx_unpickle_RequestContext, __pyx_k_pyx_unpickle_RequestContext, sizeof(__pyx_k_pyx_unpickle_RequestContext), 0, 0, 1, 1}, {&__pyx_n_s_pyx_unpickle__WorkerData, __pyx_k_pyx_unpickle__WorkerData, sizeof(__pyx_k_pyx_unpickle__WorkerData), 0, 0, 1, 1}, {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_s_queue, __pyx_k_queue, sizeof(__pyx_k_queue), 0, 0, 1, 1}, {&__pyx_n_u_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 1, 0, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1}, {&__pyx_n_s_readdir, __pyx_k_readdir, sizeof(__pyx_k_readdir), 0, 0, 1, 1}, {&__pyx_n_s_readdir_reply, __pyx_k_readdir_reply, sizeof(__pyx_k_readdir_reply), 0, 0, 1, 1}, {&__pyx_n_s_readlink, __pyx_k_readlink, sizeof(__pyx_k_readlink), 0, 0, 1, 1}, {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1}, {&__pyx_n_s_releasedir, __pyx_k_releasedir, sizeof(__pyx_k_releasedir), 0, 0, 1, 1}, {&__pyx_n_s_removexattr, __pyx_k_removexattr, sizeof(__pyx_k_removexattr), 0, 0, 1, 1}, {&__pyx_n_s_rename, __pyx_k_rename, sizeof(__pyx_k_rename), 0, 0, 1, 1}, {&__pyx_n_s_req, __pyx_k_req, sizeof(__pyx_k_req), 0, 0, 1, 1}, {&__pyx_n_s_res, __pyx_k_res, sizeof(__pyx_k_res), 0, 0, 1, 1}, {&__pyx_n_s_ret, __pyx_k_ret, sizeof(__pyx_k_ret), 0, 0, 1, 1}, {&__pyx_n_s_rmdir, __pyx_k_rmdir, sizeof(__pyx_k_rmdir), 0, 0, 1, 1}, {&__pyx_kp_u_s_No_tasks_waiting_starting_ano, __pyx_k_s_No_tasks_waiting_starting_ano, sizeof(__pyx_k_s_No_tasks_waiting_starting_ano), 0, 1, 0, 0}, {&__pyx_kp_u_s_terminated, __pyx_k_s_terminated, sizeof(__pyx_k_s_terminated), 0, 1, 0, 0}, {&__pyx_kp_u_s_too_many_idle_tasks_d_total_d, __pyx_k_s_too_many_idle_tasks_d_total_d, sizeof(__pyx_k_s_too_many_idle_tasks_d_total_d), 0, 1, 0, 0}, {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, {&__pyx_kp_s_self_req_cannot_be_converted_to, __pyx_k_self_req_cannot_be_converted_to, sizeof(__pyx_k_self_req_cannot_be_converted_to), 0, 0, 1, 0}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, {&__pyx_n_s_session_loop, __pyx_k_session_loop, sizeof(__pyx_k_session_loop), 0, 0, 1, 1}, {&__pyx_n_s_setattr, __pyx_k_setattr, sizeof(__pyx_k_setattr), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_setxattr, __pyx_k_setxattr, sizeof(__pyx_k_setxattr), 0, 0, 1, 1}, {&__pyx_n_s_size_guess, __pyx_k_size_guess, sizeof(__pyx_k_size_guess), 0, 0, 1, 1}, {&__pyx_n_s_slen, __pyx_k_slen, sizeof(__pyx_k_slen), 0, 0, 1, 1}, {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, {&__pyx_kp_s_src_pyfuse3___init___pyx, __pyx_k_src_pyfuse3___init___pyx, sizeof(__pyx_k_src_pyfuse3___init___pyx), 0, 0, 1, 0}, {&__pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_k_src_pyfuse3_handlers_pxi, sizeof(__pyx_k_src_pyfuse3_handlers_pxi), 0, 0, 1, 0}, {&__pyx_kp_s_src_pyfuse3_internal_pxi, __pyx_k_src_pyfuse3_internal_pxi, sizeof(__pyx_k_src_pyfuse3_internal_pxi), 0, 0, 1, 0}, {&__pyx_n_u_st_atime_ns, __pyx_k_st_atime_ns, sizeof(__pyx_k_st_atime_ns), 0, 1, 0, 1}, {&__pyx_n_u_st_birthtime_ns, __pyx_k_st_birthtime_ns, sizeof(__pyx_k_st_birthtime_ns), 0, 1, 0, 1}, {&__pyx_n_u_st_blksize, __pyx_k_st_blksize, sizeof(__pyx_k_st_blksize), 0, 1, 0, 1}, {&__pyx_n_u_st_blocks, __pyx_k_st_blocks, sizeof(__pyx_k_st_blocks), 0, 1, 0, 1}, {&__pyx_n_u_st_ctime_ns, __pyx_k_st_ctime_ns, sizeof(__pyx_k_st_ctime_ns), 0, 1, 0, 1}, {&__pyx_n_u_st_gid, __pyx_k_st_gid, sizeof(__pyx_k_st_gid), 0, 1, 0, 1}, {&__pyx_n_u_st_ino, __pyx_k_st_ino, sizeof(__pyx_k_st_ino), 0, 1, 0, 1}, {&__pyx_n_u_st_mode, __pyx_k_st_mode, sizeof(__pyx_k_st_mode), 0, 1, 0, 1}, {&__pyx_n_u_st_mtime_ns, __pyx_k_st_mtime_ns, sizeof(__pyx_k_st_mtime_ns), 0, 1, 0, 1}, {&__pyx_n_u_st_nlink, __pyx_k_st_nlink, sizeof(__pyx_k_st_nlink), 0, 1, 0, 1}, {&__pyx_n_u_st_rdev, __pyx_k_st_rdev, sizeof(__pyx_k_st_rdev), 0, 1, 0, 1}, {&__pyx_n_u_st_size, __pyx_k_st_size, sizeof(__pyx_k_st_size), 0, 1, 0, 1}, {&__pyx_n_u_st_uid, __pyx_k_st_uid, sizeof(__pyx_k_st_uid), 0, 1, 0, 1}, {&__pyx_n_s_stacktrace, __pyx_k_stacktrace, sizeof(__pyx_k_stacktrace), 0, 0, 1, 1}, {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, {&__pyx_n_s_start_soon, __pyx_k_start_soon, sizeof(__pyx_k_start_soon), 0, 0, 1, 1}, {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, {&__pyx_n_s_statfs, __pyx_k_statfs, sizeof(__pyx_k_statfs), 0, 0, 1, 1}, {&__pyx_n_s_stats, __pyx_k_stats, sizeof(__pyx_k_stats), 0, 0, 1, 1}, {&__pyx_n_s_strerror, __pyx_k_strerror, sizeof(__pyx_k_strerror), 0, 0, 1, 1}, {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, {&__pyx_n_s_supports_dot_lookup, __pyx_k_supports_dot_lookup, sizeof(__pyx_k_supports_dot_lookup), 0, 0, 1, 1}, {&__pyx_n_u_surrogateescape, __pyx_k_surrogateescape, sizeof(__pyx_k_surrogateescape), 0, 1, 0, 1}, {&__pyx_n_s_symlink, __pyx_k_symlink, sizeof(__pyx_k_symlink), 0, 0, 1, 1}, {&__pyx_n_s_syncfs, __pyx_k_syncfs, sizeof(__pyx_k_syncfs), 0, 0, 1, 1}, {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, {&__pyx_n_u_system, __pyx_k_system, sizeof(__pyx_k_system), 0, 1, 0, 1}, {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, {&__pyx_n_s_target, __pyx_k_target, sizeof(__pyx_k_target), 0, 0, 1, 1}, {&__pyx_n_s_terminate, __pyx_k_terminate, sizeof(__pyx_k_terminate), 0, 0, 1, 1}, {&__pyx_kp_u_terminating_notify_thread, __pyx_k_terminating_notify_thread, sizeof(__pyx_k_terminating_notify_thread), 0, 1, 0, 0}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, {&__pyx_n_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 1}, {&__pyx_n_s_to_set, __pyx_k_to_set, sizeof(__pyx_k_to_set), 0, 0, 1, 1}, {&__pyx_n_s_token, __pyx_k_token, sizeof(__pyx_k_token), 0, 0, 1, 1}, {&__pyx_n_s_trio, __pyx_k_trio, sizeof(__pyx_k_trio), 0, 0, 1, 1}, {&__pyx_n_s_trio_token, __pyx_k_trio_token, sizeof(__pyx_k_trio_token), 0, 0, 1, 1}, {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1}, {&__pyx_kp_u_unknown_flag_s_o, __pyx_k_unknown_flag_s_o, sizeof(__pyx_k_unknown_flag_s_o), 0, 1, 0, 0}, {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1}, {&__pyx_n_s_unmount, __pyx_k_unmount, sizeof(__pyx_k_unmount), 0, 0, 1, 1}, {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, {&__pyx_kp_u_us_ascii, __pyx_k_us_ascii, sizeof(__pyx_k_us_ascii), 0, 1, 0, 0}, {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1}, {&__pyx_n_u_user, __pyx_k_user, sizeof(__pyx_k_user), 0, 1, 0, 1}, {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1}, {&__pyx_n_s_wait_fuse_readable, __pyx_k_wait_fuse_readable, sizeof(__pyx_k_wait_fuse_readable), 0, 0, 1, 1}, {&__pyx_n_s_wait_readable, __pyx_k_wait_readable, sizeof(__pyx_k_wait_readable), 0, 0, 1, 1}, {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; return __Pyx_InitStrings(__pyx_string_tab); } /* #### Code section: cached_builtins ### */ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 2, __pyx_L1_error) __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 35, __pyx_L1_error) __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(1, 434, __pyx_L1_error) __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 692, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 97, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(2, 107, __pyx_L1_error) __pyx_builtin_OSError = __Pyx_GetBuiltinName(__pyx_n_s_OSError); if (!__pyx_builtin_OSError) __PYX_ERR(2, 166, __pyx_L1_error) __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 178, __pyx_L1_error) __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(3, 1013, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } /* #### Code section: cached_constants ### */ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "src/pyfuse3/handlers.pxi":35 * cdef void fuse_init (void *userdata, fuse_conn_info *conn): * if not conn.capable & FUSE_CAP_READDIRPLUS: * raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') # <<<<<<<<<<<<<< * conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) * */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_Kernel_too_old_pyfuse3_requires); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "src/pyfuse3/handlers.pxi":434 * * if size > PY_SSIZE_T_MAX: * raise OverflowError('Value too long to convert to Python') # <<<<<<<<<<<<<< * pbuf = PyBytes_FromStringAndSize(buf, size) * save_retval(fuse_write_async(c, pbuf)) */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_Value_too_long_to_convert_to_Pyt); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* "src/pyfuse3/internal.pxi":212 * try: * #log.debug('%s: Waiting for read lock...', name) * async with worker_data.read_lock: # <<<<<<<<<<<<<< * #log.debug('%s: Waiting for fuse fd to become readable...', name) * if fuse_session_exited(session): */ __pyx_tuple__34 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); /* "pyfuse3/__init__.pyx":341 * def __getstate__(self): * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', # <<<<<<<<<<<<<< * 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', * 'st_size', 'st_blksize', 'st_blocks', 'st_atime_ns', */ __pyx_tuple__36 = PyTuple_Pack(16, __pyx_n_u_st_ino, __pyx_n_u_generation, __pyx_n_u_entry_timeout, __pyx_n_u_attr_timeout, __pyx_n_u_st_mode, __pyx_n_u_st_nlink, __pyx_n_u_st_uid, __pyx_n_u_st_gid, __pyx_n_u_st_rdev, __pyx_n_u_st_size, __pyx_n_u_st_blksize, __pyx_n_u_st_blocks, __pyx_n_u_st_atime_ns, __pyx_n_u_st_ctime_ns, __pyx_n_u_st_mtime_ns, __pyx_n_u_st_birthtime_ns); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(3, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); /* "pyfuse3/__init__.pyx":473 * def __getstate__(self): * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', # <<<<<<<<<<<<<< * 'f_bavail', 'f_files', 'f_ffree', 'f_favail', * 'f_namemax'): */ __pyx_tuple__37 = PyTuple_Pack(9, __pyx_n_u_f_bsize, __pyx_n_u_f_frsize, __pyx_n_u_f_blocks, __pyx_n_u_f_bfree, __pyx_n_u_f_bavail, __pyx_n_u_f_files, __pyx_n_u_f_ffree, __pyx_n_u_f_favail, __pyx_n_u_f_namemax); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(3, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); /* "pyfuse3/__init__.pyx":522 * * if not isinstance(path, str): * raise TypeError('*path* argument must be of type str') # <<<<<<<<<<<<<< * * cdef libc_extra.DIR* dirp */ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_path_argument_must_be_of_type_s); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(3, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); /* "pyfuse3/__init__.pyx":597 * * if not isinstance(name, str): * raise TypeError('*name* argument must be of type str') # <<<<<<<<<<<<<< * * if namespace not in ('system', 'user'): */ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_name_argument_must_be_of_type_s); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(3, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__39); __Pyx_GIVEREF(__pyx_tuple__39); /* "pyfuse3/__init__.pyx":739 * * if not isinstance(mountpoint, str): * raise TypeError('*mountpoint_* argument must be of type str') # <<<<<<<<<<<<<< * * global operations */ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_mountpoint__argument_must_be_of); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(3, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40); /* "pyfuse3/__init__.pyx":758 * session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) * if not session: * raise RuntimeError("fuse_session_new() failed") # <<<<<<<<<<<<<< * * log.debug('Calling fuse_session_mount') */ __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_fuse_session_new_failed); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(3, 758, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__41); __Pyx_GIVEREF(__pyx_tuple__41); /* "pyfuse3/__init__.pyx":763 * res = fuse_session_mount(session, mountpoint_b) * if res != 0: * raise RuntimeError('fuse_session_mount failed') # <<<<<<<<<<<<<< * * session_fd = fuse_session_fd(session) */ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_u_fuse_session_mount_failed); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(3, 763, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__42); __Pyx_GIVEREF(__pyx_tuple__42); /* "pyfuse3/__init__.pyx":773 * * if session == NULL: * raise RuntimeError('Need to call init() before main()') # <<<<<<<<<<<<<< * * global trio_token */ __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_Need_to_call_init_before_main); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(3, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44); /* "pyfuse3/__init__.pyx":1020 * raise RuntimeError("Unable to parse %s" % fh.name) * gids = set() * for x in line.split()[1:]: # <<<<<<<<<<<<<< * gids.add(int(x)) * */ __pyx_slice__45 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__45)) __PYX_ERR(3, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__45); __Pyx_GIVEREF(__pyx_slice__45); /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum not in (0x2a8cfde, 0x9365cf3, 0xe8d9c4e): # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x2a8cfde, 0x9365cf3, 0xe8d9c4e) = (active_readers, read_lock, task_count, task_serial))" % __pyx_checksum */ __pyx_tuple__46 = PyTuple_Pack(3, __pyx_int_44617694, __pyx_int_154557683, __pyx_int_244161614); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__46); __Pyx_GIVEREF(__pyx_tuple__46); __pyx_tuple__48 = PyTuple_Pack(3, __pyx_int_240542287, __pyx_int_144710093, __pyx_int_35895208); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__48); __Pyx_GIVEREF(__pyx_tuple__48); /* "pyfuse3/__init__.pyx":66 * import logging * import os * import os.path # <<<<<<<<<<<<<< * import sys * import trio */ __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_os, __pyx_n_s_path); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(3, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__51); __Pyx_GIVEREF(__pyx_tuple__51); /* "pyfuse3/__init__.pyx":83 * ################## * * log = logging.getLogger("pyfuse3") # <<<<<<<<<<<<<< * fse = sys.getfilesystemencoding() * */ __pyx_tuple__53 = PyTuple_Pack(1, __pyx_n_u_pyfuse3); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(3, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__53); __Pyx_GIVEREF(__pyx_tuple__53); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__54); __Pyx_GIVEREF(__pyx_tuple__54); __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ __pyx_tuple__56 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__56); __Pyx_GIVEREF(__pyx_tuple__56); __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 3, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":59 * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) * * async def fuse_lookup_async (_Container c, name): # <<<<<<<<<<<<<< * cdef EntryAttributes entry * cdef int ret */ __pyx_tuple__58 = PyTuple_Pack(6, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_entry, __pyx_n_s_ret, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(1, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__58); __Pyx_GIVEREF(__pyx_tuple__58); __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_lookup_async, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(1, 59, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":98 * save_retval(fuse_getattr_async(c)) * * async def fuse_getattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_tuple__59 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_entry, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__59); __Pyx_GIVEREF(__pyx_tuple__59); __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_getattr_async, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(1, 98, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":127 * save_retval(fuse_setattr_async(c, fh)) * * async def fuse_setattr_async (_Container c, fh): # <<<<<<<<<<<<<< * cdef int ret * cdef timespec now */ __pyx_tuple__60 = PyTuple_Pack(10, __pyx_n_s_c, __pyx_n_s_fh, __pyx_n_s_ret, __pyx_n_s_now, __pyx_n_s_entry, __pyx_n_s_fields, __pyx_n_s_attr, __pyx_n_s_to_set, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__60); __Pyx_GIVEREF(__pyx_tuple__60); __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_setattr_async, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(1, 127, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":184 * save_retval(fuse_readlink_async(c)) * * async def fuse_readlink_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef char* name */ __pyx_tuple__61 = PyTuple_Pack(6, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_name, __pyx_n_s_ctx, __pyx_n_s_target, __pyx_n_s_e); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 184, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__61); __Pyx_GIVEREF(__pyx_tuple__61); __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_readlink_async, 184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(1, 184, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":209 * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) * * async def fuse_mknod_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_tuple__62 = PyTuple_Pack(6, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_ret, __pyx_n_s_entry, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__62); __Pyx_GIVEREF(__pyx_tuple__62); __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_mknod_async, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(1, 209, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":234 * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) * * async def fuse_mkdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_mkdir_async, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(1, 234, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":260 * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) * * async def fuse_unlink_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_tuple__63 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_ret, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__63); __Pyx_GIVEREF(__pyx_tuple__63); __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_unlink_async, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(1, 260, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":281 * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) * * async def fuse_rmdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_rmdir_async, 281, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(1, 281, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":304 * c, PyBytes_FromString(name), PyBytes_FromString(link))) * * async def fuse_symlink_async (_Container c, name, link): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_tuple__64 = PyTuple_Pack(7, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_link, __pyx_n_s_ret, __pyx_n_s_entry, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__64); __Pyx_GIVEREF(__pyx_tuple__64); __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_symlink_async, 304, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(1, 304, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":332 * * * async def fuse_rename_async (_Container c, name, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef unsigned flags = c.flags */ __pyx_tuple__65 = PyTuple_Pack(8, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_newname, __pyx_n_s_ret, __pyx_n_s_flags, __pyx_n_s_newparent, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(1, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__65); __Pyx_GIVEREF(__pyx_tuple__65); __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_rename_async, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(1, 332, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":357 * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) * * async def fuse_link_async (_Container c, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_tuple__66 = PyTuple_Pack(6, __pyx_n_s_c, __pyx_n_s_newname, __pyx_n_s_ret, __pyx_n_s_entry, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__66); __Pyx_GIVEREF(__pyx_tuple__66); __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_link_async, 357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(1, 357, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":381 * save_retval(fuse_open_async(c)) * * async def fuse_open_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef FileInfo fi */ __pyx_tuple__67 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_fi, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(1, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__67); __Pyx_GIVEREF(__pyx_tuple__67); __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_open_async, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(1, 381, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":408 * save_retval(fuse_read_async(c)) * * async def fuse_read_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef Py_buffer pybuf */ __pyx_tuple__68 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_pybuf, __pyx_n_s_buf, __pyx_n_s_e); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(1, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__68); __Pyx_GIVEREF(__pyx_tuple__68); __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_read_async, 408, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(1, 408, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":438 * save_retval(fuse_write_async(c, pbuf)) * * async def fuse_write_async (_Container c, pbuf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ __pyx_tuple__69 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_pbuf, __pyx_n_s_ret, __pyx_n_s_len, __pyx_n_s_e); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__69); __Pyx_GIVEREF(__pyx_tuple__69); __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_write_async, 438, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(1, 438, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":462 * save_retval(fuse_write_buf_async(c, buf)) * * async def fuse_write_buf_async (_Container c, buf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ __pyx_tuple__70 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_buf, __pyx_n_s_ret, __pyx_n_s_len, __pyx_n_s_e); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(1, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__70); __Pyx_GIVEREF(__pyx_tuple__70); __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_write_buf_async, 462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(1, 462, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":483 * save_retval(fuse_flush_async(c)) * * async def fuse_flush_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_tuple__71 = PyTuple_Pack(3, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_e); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__71); __Pyx_GIVEREF(__pyx_tuple__71); __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_flush_async, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(1, 483, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":503 * save_retval(fuse_release_async(c)) * * async def fuse_release_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_release_async, 503, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(1, 503, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":525 * save_retval(fuse_fsync_async(c)) * * async def fuse_fsync_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_fsync_async, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(1, 525, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":546 * save_retval(fuse_opendir_async(c)) * * async def fuse_opendir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_tuple__72 = PyTuple_Pack(4, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__72); __Pyx_GIVEREF(__pyx_tuple__72); __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_opendir_async, 546, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(1, 546, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 3, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":578 * save_retval(fuse_readdirplus_async(c)) * * async def fuse_readdirplus_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ReaddirToken token = ReaddirToken() */ __pyx_tuple__75 = PyTuple_Pack(4, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_token, __pyx_n_s_e); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__75); __Pyx_GIVEREF(__pyx_tuple__75); __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_readdirplus_async, 578, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(1, 578, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":607 * save_retval(fuse_releasedir_async(c)) * * async def fuse_releasedir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_releasedir_async, 607, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(1, 607, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":630 * save_retval(fuse_fsyncdir_async(c)) * * async def fuse_fsyncdir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_fsyncdir_async, 630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(1, 630, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":650 * save_retval(fuse_statfs_async(c)) * * async def fuse_statfs_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef StatvfsData stats */ __pyx_tuple__76 = PyTuple_Pack(5, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_stats, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(1, 650, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__76); __Pyx_GIVEREF(__pyx_tuple__76); __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_statfs_async, 650, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(1, 650, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":681 * save_retval(fuse_setxattr_async(c, name, value)) * * async def fuse_setxattr_async (_Container c, name, value): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_tuple__77 = PyTuple_Pack(6, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_value, __pyx_n_s_ret, __pyx_n_s_ctx, __pyx_n_s_e); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(1, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__77); __Pyx_GIVEREF(__pyx_tuple__77); __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_setxattr_async, 681, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(1, 681, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":726 * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) * * async def fuse_getxattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ __pyx_tuple__78 = PyTuple_Pack(9, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_ret, __pyx_n_s_len_s, __pyx_n_s_len, __pyx_n_s_cbuf, __pyx_n_s_ctx, __pyx_n_s_buf, __pyx_n_s_e); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(1, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__78); __Pyx_GIVEREF(__pyx_tuple__78); __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_getxattr_async, 726, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(1, 726, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":759 * save_retval(fuse_listxattr_async(c)) * * async def fuse_listxattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ __pyx_tuple__79 = PyTuple_Pack(9, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_len_s, __pyx_n_s_len, __pyx_n_s_cbuf, __pyx_n_s_ctx, __pyx_n_s_res, __pyx_n_s_e, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(1, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__79); __Pyx_GIVEREF(__pyx_tuple__79); __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_listxattr_async, 759, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(1, 759, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":797 * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) * * async def fuse_removexattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_removexattr_async, 797, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(1, 797, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":819 * save_retval(fuse_access_async(c)) * * async def fuse_access_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef int mask = c.flags */ __pyx_tuple__80 = PyTuple_Pack(6, __pyx_n_s_c, __pyx_n_s_ret, __pyx_n_s_mask, __pyx_n_s_ctx, __pyx_n_s_allowed, __pyx_n_s_e); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(1, 819, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__80); __Pyx_GIVEREF(__pyx_tuple__80); __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_access_async, 819, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 819, __pyx_L1_error) /* "src/pyfuse3/handlers.pxi":848 * save_retval(fuse_create_async(c, PyBytes_FromString(name))) * * async def fuse_create_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_tuple__81 = PyTuple_Pack(8, __pyx_n_s_c, __pyx_n_s_name, __pyx_n_s_ret, __pyx_n_s_entry, __pyx_n_s_fi, __pyx_n_s_ctx, __pyx_n_s_tmp, __pyx_n_s_e); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(1, 848, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__81); __Pyx_GIVEREF(__pyx_tuple__81); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_handlers_pxi, __pyx_n_s_fuse_create_async, 848, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(1, 848, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":114 * raise * * def _notify_loop(): # <<<<<<<<<<<<<< * '''Process async invalidate_entry calls.''' * */ __pyx_tuple__82 = PyTuple_Pack(6, __pyx_n_s_req, __pyx_n_s_inode_p, __pyx_n_s_name, __pyx_n_s_deleted, __pyx_n_s_ignore_enoent, __pyx_n_s_exc); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(2, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__82); __Pyx_GIVEREF(__pyx_tuple__82); __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_internal_pxi, __pyx_n_s_notify_loop, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(2, 114, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ __pyx_tuple__84 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__84); __Pyx_GIVEREF(__pyx_tuple__84); __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":16 * else: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle__WorkerData__set_state(self, __pyx_state) */ __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 16, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":201 * cdef _WorkerData worker_data * * async def _wait_fuse_readable(): # <<<<<<<<<<<<<< * '''Wait for FUSE fd to become readable * */ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_internal_pxi, __pyx_n_s_wait_fuse_readable, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(2, 201, __pyx_L1_error) /* "src/pyfuse3/internal.pxi":229 * return True * * @async_wrapper # <<<<<<<<<<<<<< * async def _session_loop(nursery, int min_tasks, int max_tasks): * cdef int res */ __pyx_tuple__87 = PyTuple_Pack(6, __pyx_n_s_nursery, __pyx_n_s_min_tasks, __pyx_n_s_max_tasks, __pyx_n_s_res, __pyx_n_s_buf, __pyx_n_s_name); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__87); __Pyx_GIVEREF(__pyx_tuple__87); __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3_internal_pxi, __pyx_n_s_session_loop, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(2, 229, __pyx_L1_error) /* "pyfuse3/__init__.pyx":141 * cdef readonly mode_t umask * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("RequestContext instances can't be pickled") * */ __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_getstate, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(3, 141, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":16 * else: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_RequestContext__set_state(self, __pyx_state) */ __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 16, __pyx_L1_error) /* "pyfuse3/__init__.pyx":169 * self.update_size = False * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("SetattrFields instances can't be pickled") * */ __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_getstate, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(3, 169, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 3, __pyx_L1_error) /* "pyfuse3/__init__.pyx":339 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', */ __pyx_tuple__94 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_k); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(3, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__94); __Pyx_GIVEREF(__pyx_tuple__94); __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_getstate, 339, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(3, 339, __pyx_L1_error) /* "pyfuse3/__init__.pyx":348 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ __pyx_tuple__96 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(3, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__96); __Pyx_GIVEREF(__pyx_tuple__96); __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_setstate, 348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(3, 348, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 3, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(0, 3, __pyx_L1_error) /* "pyfuse3/__init__.pyx":471 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', */ __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_getstate, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(3, 471, __pyx_L1_error) /* "pyfuse3/__init__.pyx":479 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_setstate, 479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(3, 479, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 3, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_codeobj__107 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__107)) __PYX_ERR(0, 3, __pyx_L1_error) /* "pyfuse3/__init__.pyx":511 * * * def listdir(path): # <<<<<<<<<<<<<< * '''Like `os.listdir`, but releases the GIL. * */ __pyx_tuple__108 = PyTuple_Pack(6, __pyx_n_s_path, __pyx_n_s_dirp, __pyx_n_s_res, __pyx_n_s_buf, __pyx_n_s_path_b, __pyx_n_s_names); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(3, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__108); __Pyx_GIVEREF(__pyx_tuple__108); __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_listdir, 511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(3, 511, __pyx_L1_error) /* "pyfuse3/__init__.pyx":560 * * * def syncfs(path): # <<<<<<<<<<<<<< * '''Sync filesystem mounted at *path* * */ __pyx_tuple__110 = PyTuple_Pack(3, __pyx_n_s_path, __pyx_n_s_ret, __pyx_n_s_fd); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(3, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__110); __Pyx_GIVEREF(__pyx_tuple__110); __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_syncfs, 560, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(3, 560, __pyx_L1_error) /* "pyfuse3/__init__.pyx":579 * * * def setxattr(path, name, bytes value, namespace='user'): # <<<<<<<<<<<<<< * '''Set extended attribute * */ __pyx_tuple__112 = PyTuple_Pack(12, __pyx_n_s_path, __pyx_n_s_name, __pyx_n_s_value, __pyx_n_s_namespace, __pyx_n_s_ret, __pyx_n_s_len, __pyx_n_s_cvalue, __pyx_n_s_cpath, __pyx_n_s_cname, __pyx_n_s_cnamespace, __pyx_n_s_path_b, __pyx_n_s_name_b); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(3, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__112); __Pyx_GIVEREF(__pyx_tuple__112); __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__112, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_setxattr, 579, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(3, 579, __pyx_L1_error) __pyx_tuple__114 = PyTuple_Pack(1, ((PyObject*)__pyx_n_u_user)); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(3, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__114); __Pyx_GIVEREF(__pyx_tuple__114); /* "pyfuse3/__init__.pyx":630 * * * def getxattr(path, name, size_t size_guess=128, namespace='user'): # <<<<<<<<<<<<<< * '''Get extended attribute * */ __pyx_tuple__115 = PyTuple_Pack(12, __pyx_n_s_path, __pyx_n_s_name, __pyx_n_s_size_guess, __pyx_n_s_namespace, __pyx_n_s_ret, __pyx_n_s_buf, __pyx_n_s_cpath, __pyx_n_s_cname, __pyx_n_s_bufsize, __pyx_n_s_cnamespace, __pyx_n_s_path_b, __pyx_n_s_name_b); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(3, 630, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__115); __Pyx_GIVEREF(__pyx_tuple__115); __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_getxattr, 630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(3, 630, __pyx_L1_error) /* "pyfuse3/__init__.pyx":710 * * * default_options = frozenset(('default_permissions',)) # <<<<<<<<<<<<<< * * def init(ops, mountpoint, options=default_options): */ __pyx_tuple__117 = PyTuple_Pack(1, __pyx_n_u_default_permissions); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(3, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__117); __Pyx_GIVEREF(__pyx_tuple__117); /* "pyfuse3/__init__.pyx":712 * default_options = frozenset(('default_permissions',)) * * def init(ops, mountpoint, options=default_options): # <<<<<<<<<<<<<< * '''Initialize and mount FUSE file system * */ __pyx_tuple__118 = PyTuple_Pack(5, __pyx_n_s_ops, __pyx_n_s_mountpoint, __pyx_n_s_options, __pyx_n_s_f_args, __pyx_n_s_res); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__118); __Pyx_GIVEREF(__pyx_tuple__118); __pyx_codeobj__119 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_init, 712, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__119)) __PYX_ERR(3, 712, __pyx_L1_error) /* "pyfuse3/__init__.pyx":768 * * * @async_wrapper # <<<<<<<<<<<<<< * async def main(int min_tasks=1, int max_tasks=99): * '''Run FUSE main loop''' */ __pyx_tuple__120 = PyTuple_Pack(3, __pyx_n_s_min_tasks, __pyx_n_s_max_tasks, __pyx_n_s_nursery); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__120); __Pyx_GIVEREF(__pyx_tuple__120); __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__120, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_main, 768, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(3, 768, __pyx_L1_error) /* "pyfuse3/__init__.pyx":790 * * * def terminate(): # <<<<<<<<<<<<<< * '''Terminate FUSE main loop. * */ __pyx_codeobj__121 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_terminate, 790, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__121)) __PYX_ERR(3, 790, __pyx_L1_error) /* "pyfuse3/__init__.pyx":805 * * * def close(unmount=True): # <<<<<<<<<<<<<< * '''Clean up and ensure filesystem is unmounted * */ __pyx_tuple__122 = PyTuple_Pack(1, __pyx_n_s_unmount); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(3, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__122); __Pyx_GIVEREF(__pyx_tuple__122); __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__122, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_close, 805, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) __PYX_ERR(3, 805, __pyx_L1_error) __pyx_tuple__124 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(3, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__124); __Pyx_GIVEREF(__pyx_tuple__124); /* "pyfuse3/__init__.pyx":838 * * * def invalidate_inode(fuse_ino_t inode, attr_only=False): # <<<<<<<<<<<<<< * '''Invalidate cache for *inode* * */ __pyx_tuple__125 = PyTuple_Pack(3, __pyx_n_s_inode, __pyx_n_s_attr_only, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(3, 838, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__125); __Pyx_GIVEREF(__pyx_tuple__125); __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_invalidate_inode, 838, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(3, 838, __pyx_L1_error) __pyx_tuple__127 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(3, 838, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__127); __Pyx_GIVEREF(__pyx_tuple__127); /* "pyfuse3/__init__.pyx":867 * * * def invalidate_entry(fuse_ino_t inode_p, bytes name, fuse_ino_t deleted=0): # <<<<<<<<<<<<<< * '''Invalidate directory entry * */ __pyx_tuple__128 = PyTuple_Pack(7, __pyx_n_s_inode_p, __pyx_n_s_name, __pyx_n_s_deleted, __pyx_n_s_cname, __pyx_n_s_slen, __pyx_n_s_len, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(3, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__128); __Pyx_GIVEREF(__pyx_tuple__128); __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_invalidate_entry, 867, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) __PYX_ERR(3, 867, __pyx_L1_error) /* "pyfuse3/__init__.pyx":923 * * * def invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False): # <<<<<<<<<<<<<< * '''Asynchronously invalidate directory entry * */ __pyx_tuple__130 = PyTuple_Pack(5, __pyx_n_s_inode_p, __pyx_n_s_name, __pyx_n_s_deleted, __pyx_n_s_ignore_enoent, __pyx_n_s_t); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(3, 923, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__130); __Pyx_GIVEREF(__pyx_tuple__130); __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_invalidate_entry_async, 923, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(3, 923, __pyx_L1_error) __pyx_tuple__132 = PyTuple_Pack(2, ((PyObject *)__pyx_int_0), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(3, 923, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__132); __Pyx_GIVEREF(__pyx_tuple__132); /* "pyfuse3/__init__.pyx":959 * * * def notify_store(inode, offset, data): # <<<<<<<<<<<<<< * '''Store data in kernel page cache * */ __pyx_tuple__133 = PyTuple_Pack(9, __pyx_n_s_inode, __pyx_n_s_offset, __pyx_n_s_data, __pyx_n_s_ret, __pyx_n_s_ino, __pyx_n_s_off, __pyx_n_s_pybuf, __pyx_n_s_bufvec, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(3, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__133); __Pyx_GIVEREF(__pyx_tuple__133); __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_notify_store, 959, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(3, 959, __pyx_L1_error) /* "pyfuse3/__init__.pyx":1003 * * * def get_sup_groups(pid): # <<<<<<<<<<<<<< * '''Return supplementary group ids of *pid* * */ __pyx_tuple__135 = PyTuple_Pack(5, __pyx_n_s_pid, __pyx_n_s_fh, __pyx_n_s_line, __pyx_n_s_gids, __pyx_n_s_x); if (unlikely(!__pyx_tuple__135)) __PYX_ERR(3, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__135); __Pyx_GIVEREF(__pyx_tuple__135); __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_get_sup_groups, 1003, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(3, 1003, __pyx_L1_error) /* "pyfuse3/__init__.pyx":1026 * * * def readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id): # <<<<<<<<<<<<<< * '''Report a directory entry in response to a `~Operations.readdir` request. * */ __pyx_tuple__137 = PyTuple_Pack(6, __pyx_n_s_token, __pyx_n_s_name, __pyx_n_s_attr, __pyx_n_s_next_id, __pyx_n_s_cname, __pyx_n_s_len); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(3, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__137); __Pyx_GIVEREF(__pyx_tuple__137); __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pyfuse3___init___pyx, __pyx_n_s_readdir_reply, 1026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) __PYX_ERR(3, 1026, __pyx_L1_error) /* "(tree fragment)":1 * def __pyx_unpickle__WorkerData(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ __pyx_tuple__139 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__139); __Pyx_GIVEREF(__pyx_tuple__139); __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__WorkerData, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RequestContext, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } /* #### Code section: init_constants ### */ static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(3, 1, __pyx_L1_error); __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_35895208 = PyInt_FromLong(35895208L); if (unlikely(!__pyx_int_35895208)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_44617694 = PyInt_FromLong(44617694L); if (unlikely(!__pyx_int_44617694)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_144710093 = PyInt_FromLong(144710093L); if (unlikely(!__pyx_int_144710093)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_154557683 = PyInt_FromLong(154557683L); if (unlikely(!__pyx_int_154557683)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_240542287 = PyInt_FromLong(240542287L); if (unlikely(!__pyx_int_240542287)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_244161614 = PyInt_FromLong(244161614L); if (unlikely(!__pyx_int_244161614)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_int_1000000000 = PyInt_FromLong(1000000000L); if (unlikely(!__pyx_int_1000000000)) __PYX_ERR(3, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } /* #### Code section: init_globals ### */ static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { return 0; } /* #### Code section: init_module ### */ static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ static int __Pyx_modinit_global_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); /*--- Global init code ---*/ __pyx_v_7pyfuse3_operations = Py_None; Py_INCREF(Py_None); __pyx_v_7pyfuse3_mountpoint_b = Py_None; Py_INCREF(Py_None); __pyx_v_7pyfuse3_py_retval = Py_None; Py_INCREF(Py_None); __pyx_v_7pyfuse3__notify_queue = Py_None; Py_INCREF(Py_None); __pyx_v_7pyfuse3_worker_data = ((struct __pyx_obj_7pyfuse3__WorkerData *)Py_None); Py_INCREF(Py_None); __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); /*--- Variable export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); /*--- Function export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3__Container = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3__Container_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3__Container)) __PYX_ERR(1, 14, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3__Container_spec, __pyx_ptype_7pyfuse3__Container) < 0) __PYX_ERR(1, 14, __pyx_L1_error) #else __pyx_ptype_7pyfuse3__Container = &__pyx_type_7pyfuse3__Container; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3__Container) < 0) __PYX_ERR(1, 14, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3__Container->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3__Container->tp_dictoffset && __pyx_ptype_7pyfuse3__Container->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3__Container->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Container, (PyObject *) __pyx_ptype_7pyfuse3__Container) < 0) __PYX_ERR(1, 14, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3__Container) < 0) __PYX_ERR(1, 14, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3_ReaddirToken = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_ReaddirToken_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3_ReaddirToken)) __PYX_ERR(1, 562, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_ReaddirToken_spec, __pyx_ptype_7pyfuse3_ReaddirToken) < 0) __PYX_ERR(1, 562, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_ReaddirToken = &__pyx_type_7pyfuse3_ReaddirToken; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_ReaddirToken) < 0) __PYX_ERR(1, 562, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_ReaddirToken->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_ReaddirToken->tp_dictoffset && __pyx_ptype_7pyfuse3_ReaddirToken->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_ReaddirToken->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReaddirToken, (PyObject *) __pyx_ptype_7pyfuse3_ReaddirToken) < 0) __PYX_ERR(1, 562, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_ReaddirToken) < 0) __PYX_ERR(1, 562, __pyx_L1_error) #endif __pyx_vtabptr_7pyfuse3__WorkerData = &__pyx_vtable_7pyfuse3__WorkerData; __pyx_vtable_7pyfuse3__WorkerData.get_name = (PyObject *(*)(struct __pyx_obj_7pyfuse3__WorkerData *))__pyx_f_7pyfuse3_11_WorkerData_get_name; #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3__WorkerData = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3__WorkerData_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3__WorkerData)) __PYX_ERR(2, 181, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3__WorkerData_spec, __pyx_ptype_7pyfuse3__WorkerData) < 0) __PYX_ERR(2, 181, __pyx_L1_error) #else __pyx_ptype_7pyfuse3__WorkerData = &__pyx_type_7pyfuse3__WorkerData; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3__WorkerData) < 0) __PYX_ERR(2, 181, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3__WorkerData->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3__WorkerData->tp_dictoffset && __pyx_ptype_7pyfuse3__WorkerData->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3__WorkerData->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (__Pyx_SetVtable(__pyx_ptype_7pyfuse3__WorkerData, __pyx_vtabptr_7pyfuse3__WorkerData) < 0) __PYX_ERR(2, 181, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_MergeVtables(__pyx_ptype_7pyfuse3__WorkerData) < 0) __PYX_ERR(2, 181, __pyx_L1_error) #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_WorkerData, (PyObject *) __pyx_ptype_7pyfuse3__WorkerData) < 0) __PYX_ERR(2, 181, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3__WorkerData) < 0) __PYX_ERR(2, 181, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3_RequestContext = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_RequestContext_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3_RequestContext)) __PYX_ERR(3, 129, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_RequestContext_spec, __pyx_ptype_7pyfuse3_RequestContext) < 0) __PYX_ERR(3, 129, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_RequestContext = &__pyx_type_7pyfuse3_RequestContext; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_RequestContext) < 0) __PYX_ERR(3, 129, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_RequestContext->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_RequestContext->tp_dictoffset && __pyx_ptype_7pyfuse3_RequestContext->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_RequestContext->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RequestContext, (PyObject *) __pyx_ptype_7pyfuse3_RequestContext) < 0) __PYX_ERR(3, 129, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_RequestContext) < 0) __PYX_ERR(3, 129, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3_SetattrFields = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_SetattrFields_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3_SetattrFields)) __PYX_ERR(3, 146, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_SetattrFields_spec, __pyx_ptype_7pyfuse3_SetattrFields) < 0) __PYX_ERR(3, 146, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_SetattrFields = &__pyx_type_7pyfuse3_SetattrFields; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_SetattrFields) < 0) __PYX_ERR(3, 146, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_SetattrFields->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_SetattrFields->tp_dictoffset && __pyx_ptype_7pyfuse3_SetattrFields->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_SetattrFields->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SetattrFields, (PyObject *) __pyx_ptype_7pyfuse3_SetattrFields) < 0) __PYX_ERR(3, 146, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_SetattrFields) < 0) __PYX_ERR(3, 146, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3_EntryAttributes = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_EntryAttributes_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3_EntryAttributes)) __PYX_ERR(3, 174, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_EntryAttributes_spec, __pyx_ptype_7pyfuse3_EntryAttributes) < 0) __PYX_ERR(3, 174, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_EntryAttributes = &__pyx_type_7pyfuse3_EntryAttributes; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_EntryAttributes) < 0) __PYX_ERR(3, 174, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_EntryAttributes->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_EntryAttributes->tp_dictoffset && __pyx_ptype_7pyfuse3_EntryAttributes->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_EntryAttributes->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EntryAttributes, (PyObject *) __pyx_ptype_7pyfuse3_EntryAttributes) < 0) __PYX_ERR(3, 174, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_EntryAttributes) < 0) __PYX_ERR(3, 174, __pyx_L1_error) #endif __pyx_vtabptr_7pyfuse3_FileInfo = &__pyx_vtable_7pyfuse3_FileInfo; __pyx_vtable_7pyfuse3_FileInfo._copy_to_fuse = (PyObject *(*)(struct __pyx_obj_7pyfuse3_FileInfo *, struct fuse_file_info *))__pyx_f_7pyfuse3_8FileInfo__copy_to_fuse; #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3_FileInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_FileInfo_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3_FileInfo)) __PYX_ERR(3, 354, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_FileInfo_spec, __pyx_ptype_7pyfuse3_FileInfo) < 0) __PYX_ERR(3, 354, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_FileInfo = &__pyx_type_7pyfuse3_FileInfo; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_FileInfo) < 0) __PYX_ERR(3, 354, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_FileInfo->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_FileInfo->tp_dictoffset && __pyx_ptype_7pyfuse3_FileInfo->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_FileInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (__Pyx_SetVtable(__pyx_ptype_7pyfuse3_FileInfo, __pyx_vtabptr_7pyfuse3_FileInfo) < 0) __PYX_ERR(3, 354, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_MergeVtables(__pyx_ptype_7pyfuse3_FileInfo) < 0) __PYX_ERR(3, 354, __pyx_L1_error) #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FileInfo, (PyObject *) __pyx_ptype_7pyfuse3_FileInfo) < 0) __PYX_ERR(3, 354, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_FileInfo) < 0) __PYX_ERR(3, 354, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3_StatvfsData = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_StatvfsData_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3_StatvfsData)) __PYX_ERR(3, 395, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_StatvfsData_spec, __pyx_ptype_7pyfuse3_StatvfsData) < 0) __PYX_ERR(3, 395, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_StatvfsData = &__pyx_type_7pyfuse3_StatvfsData; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_StatvfsData) < 0) __PYX_ERR(3, 395, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_StatvfsData->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_StatvfsData->tp_dictoffset && __pyx_ptype_7pyfuse3_StatvfsData->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_StatvfsData->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_StatvfsData, (PyObject *) __pyx_ptype_7pyfuse3_StatvfsData) < 0) __PYX_ERR(3, 395, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_StatvfsData) < 0) __PYX_ERR(3, 395, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_t_1 = PyTuple_Pack(1, (PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7pyfuse3_FUSEError = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3_FUSEError_spec, __pyx_t_1); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_ptype_7pyfuse3_FUSEError)) __PYX_ERR(3, 486, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3_FUSEError_spec, __pyx_ptype_7pyfuse3_FUSEError) < 0) __PYX_ERR(3, 486, __pyx_L1_error) #else __pyx_ptype_7pyfuse3_FUSEError = &__pyx_type_7pyfuse3_FUSEError; #endif if (sizeof(struct __pyx_obj_7pyfuse3_FUSEError) != sizeof(PyBaseExceptionObject)) { if (__Pyx_validate_extern_base((&((PyTypeObject*)PyExc_Exception)[0])) < 0) __PYX_ERR(3, 486, __pyx_L1_error) } #if !CYTHON_COMPILING_IN_LIMITED_API __pyx_ptype_7pyfuse3_FUSEError->tp_dealloc = (&((PyTypeObject*)PyExc_Exception)[0])->tp_dealloc; __pyx_ptype_7pyfuse3_FUSEError->tp_base = (&((PyTypeObject*)PyExc_Exception)[0]); #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3_FUSEError) < 0) __PYX_ERR(3, 486, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3_FUSEError->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3_FUSEError->tp_dictoffset && __pyx_ptype_7pyfuse3_FUSEError->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3_FUSEError->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FUSEError, (PyObject *) __pyx_ptype_7pyfuse3_FUSEError) < 0) __PYX_ERR(3, 486, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7pyfuse3_FUSEError) < 0) __PYX_ERR(3, 486, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async)) __PYX_ERR(1, 59, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async) < 0) __PYX_ERR(1, 59, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async = &__pyx_type_7pyfuse3___pyx_scope_struct__fuse_lookup_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async) < 0) __PYX_ERR(1, 59, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct__fuse_lookup_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async)) __PYX_ERR(1, 98, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async) < 0) __PYX_ERR(1, 98, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async = &__pyx_type_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async) < 0) __PYX_ERR(1, 98, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_1_fuse_getattr_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async)) __PYX_ERR(1, 127, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async) < 0) __PYX_ERR(1, 127, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async = &__pyx_type_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async) < 0) __PYX_ERR(1, 127, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_2_fuse_setattr_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async)) __PYX_ERR(1, 184, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async) < 0) __PYX_ERR(1, 184, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async = &__pyx_type_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async) < 0) __PYX_ERR(1, 184, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_3_fuse_readlink_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async)) __PYX_ERR(1, 209, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async) < 0) __PYX_ERR(1, 209, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async = &__pyx_type_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async) < 0) __PYX_ERR(1, 209, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_4_fuse_mknod_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async)) __PYX_ERR(1, 234, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async) < 0) __PYX_ERR(1, 234, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async = &__pyx_type_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async) < 0) __PYX_ERR(1, 234, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_5_fuse_mkdir_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async)) __PYX_ERR(1, 260, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async) < 0) __PYX_ERR(1, 260, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async = &__pyx_type_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async) < 0) __PYX_ERR(1, 260, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_6_fuse_unlink_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async)) __PYX_ERR(1, 281, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async) < 0) __PYX_ERR(1, 281, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async = &__pyx_type_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async) < 0) __PYX_ERR(1, 281, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_7_fuse_rmdir_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async)) __PYX_ERR(1, 304, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async) < 0) __PYX_ERR(1, 304, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async = &__pyx_type_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async) < 0) __PYX_ERR(1, 304, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_8_fuse_symlink_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async)) __PYX_ERR(1, 332, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async) < 0) __PYX_ERR(1, 332, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async = &__pyx_type_7pyfuse3___pyx_scope_struct_9_fuse_rename_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async) < 0) __PYX_ERR(1, 332, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_9_fuse_rename_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async)) __PYX_ERR(1, 357, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async) < 0) __PYX_ERR(1, 357, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async = &__pyx_type_7pyfuse3___pyx_scope_struct_10_fuse_link_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async) < 0) __PYX_ERR(1, 357, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_10_fuse_link_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async)) __PYX_ERR(1, 381, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async) < 0) __PYX_ERR(1, 381, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async = &__pyx_type_7pyfuse3___pyx_scope_struct_11_fuse_open_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async) < 0) __PYX_ERR(1, 381, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_11_fuse_open_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async)) __PYX_ERR(1, 408, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async) < 0) __PYX_ERR(1, 408, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async = &__pyx_type_7pyfuse3___pyx_scope_struct_12_fuse_read_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async) < 0) __PYX_ERR(1, 408, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_12_fuse_read_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async)) __PYX_ERR(1, 438, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async) < 0) __PYX_ERR(1, 438, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async = &__pyx_type_7pyfuse3___pyx_scope_struct_13_fuse_write_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async) < 0) __PYX_ERR(1, 438, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_13_fuse_write_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async)) __PYX_ERR(1, 462, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async) < 0) __PYX_ERR(1, 462, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async = &__pyx_type_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async) < 0) __PYX_ERR(1, 462, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_14_fuse_write_buf_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async)) __PYX_ERR(1, 483, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async) < 0) __PYX_ERR(1, 483, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async = &__pyx_type_7pyfuse3___pyx_scope_struct_15_fuse_flush_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async) < 0) __PYX_ERR(1, 483, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_15_fuse_flush_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async)) __PYX_ERR(1, 503, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async) < 0) __PYX_ERR(1, 503, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async = &__pyx_type_7pyfuse3___pyx_scope_struct_16_fuse_release_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async) < 0) __PYX_ERR(1, 503, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_16_fuse_release_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async)) __PYX_ERR(1, 525, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async) < 0) __PYX_ERR(1, 525, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async = &__pyx_type_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async) < 0) __PYX_ERR(1, 525, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_17_fuse_fsync_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async)) __PYX_ERR(1, 546, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async) < 0) __PYX_ERR(1, 546, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async = &__pyx_type_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async) < 0) __PYX_ERR(1, 546, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_18_fuse_opendir_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async)) __PYX_ERR(1, 578, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async) < 0) __PYX_ERR(1, 578, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async = &__pyx_type_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async) < 0) __PYX_ERR(1, 578, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_19_fuse_readdirplus_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async)) __PYX_ERR(1, 607, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async) < 0) __PYX_ERR(1, 607, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async = &__pyx_type_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async) < 0) __PYX_ERR(1, 607, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_20_fuse_releasedir_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async)) __PYX_ERR(1, 630, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async) < 0) __PYX_ERR(1, 630, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async = &__pyx_type_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async) < 0) __PYX_ERR(1, 630, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_21_fuse_fsyncdir_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async)) __PYX_ERR(1, 650, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async) < 0) __PYX_ERR(1, 650, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async = &__pyx_type_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async) < 0) __PYX_ERR(1, 650, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_22_fuse_statfs_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async)) __PYX_ERR(1, 681, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async) < 0) __PYX_ERR(1, 681, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async = &__pyx_type_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async) < 0) __PYX_ERR(1, 681, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_23_fuse_setxattr_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async)) __PYX_ERR(1, 726, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async) < 0) __PYX_ERR(1, 726, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async = &__pyx_type_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async) < 0) __PYX_ERR(1, 726, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_24_fuse_getxattr_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async)) __PYX_ERR(1, 759, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async) < 0) __PYX_ERR(1, 759, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async = &__pyx_type_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async) < 0) __PYX_ERR(1, 759, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_25_fuse_listxattr_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async)) __PYX_ERR(1, 797, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async) < 0) __PYX_ERR(1, 797, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async = &__pyx_type_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async) < 0) __PYX_ERR(1, 797, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_26_fuse_removexattr_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async)) __PYX_ERR(1, 819, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async) < 0) __PYX_ERR(1, 819, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async = &__pyx_type_7pyfuse3___pyx_scope_struct_27_fuse_access_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async) < 0) __PYX_ERR(1, 819, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_27_fuse_access_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async)) __PYX_ERR(1, 848, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async) < 0) __PYX_ERR(1, 848, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async = &__pyx_type_7pyfuse3___pyx_scope_struct_28_fuse_create_async; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async) < 0) __PYX_ERR(1, 848, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_28_fuse_create_async->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable)) __PYX_ERR(2, 201, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable) < 0) __PYX_ERR(2, 201, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable = &__pyx_type_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable) < 0) __PYX_ERR(2, 201, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_29__wait_fuse_readable->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop)) __PYX_ERR(2, 229, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop) < 0) __PYX_ERR(2, 229, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop = &__pyx_type_7pyfuse3___pyx_scope_struct_30__session_loop; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop) < 0) __PYX_ERR(2, 229, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_30__session_loop->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyfuse3___pyx_scope_struct_31_main_spec, NULL); if (unlikely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main)) __PYX_ERR(3, 768, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyfuse3___pyx_scope_struct_31_main_spec, __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main) < 0) __PYX_ERR(3, 768, __pyx_L1_error) #else __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main = &__pyx_type_7pyfuse3___pyx_scope_struct_31_main; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main) < 0) __PYX_ERR(3, 768, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7pyfuse3___pyx_scope_struct_31_main->tp_dictoffset && __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_7pyfuse3___pyx_scope_struct_31_main->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; } #endif __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_type_import_code(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); /*--- Type import code ---*/ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject), #elif CYTHON_COMPILING_IN_LIMITED_API sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject), #else sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyHeapTypeObject), #endif __Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(4, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_variable_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); /*--- Variable import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); /*--- Function import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } #if PY_MAJOR_VERSION >= 3 #if CYTHON_PEP489_MULTI_PHASE_INIT static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ static int __pyx_pymod_exec_pyfuse3(PyObject* module); /*proto*/ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, {Py_mod_exec, (void*)__pyx_pymod_exec_pyfuse3}, {0, NULL} }; #endif #ifdef __cplusplus namespace { struct PyModuleDef __pyx_moduledef = #else static struct PyModuleDef __pyx_moduledef = #endif { PyModuleDef_HEAD_INIT, "pyfuse3", __pyx_k_init___pyx_Copyright_2013_Nik, /* m_doc */ #if CYTHON_PEP489_MULTI_PHASE_INIT 0, /* m_size */ #elif CYTHON_USE_MODULE_STATE sizeof(__pyx_mstate), /* m_size */ #else -1, /* m_size */ #endif __pyx_methods /* m_methods */, #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_moduledef_slots, /* m_slots */ #else NULL, /* m_reload */ #endif #if CYTHON_USE_MODULE_STATE __pyx_m_traverse, /* m_traverse */ __pyx_m_clear, /* m_clear */ NULL /* m_free */ #else NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ #endif }; #ifdef __cplusplus } /* anonymous namespace */ #endif #endif #ifndef CYTHON_NO_PYINIT_EXPORT #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC #elif PY_MAJOR_VERSION < 3 #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" void #else #define __Pyx_PyMODINIT_FUNC void #endif #else #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * #else #define __Pyx_PyMODINIT_FUNC PyObject * #endif #endif #if PY_MAJOR_VERSION < 3 __Pyx_PyMODINIT_FUNC initpyfuse3(void) CYTHON_SMALL_CODE; /*proto*/ #if !defined(CYTHON_NO_PYINIT_EXPORT) && (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) __Pyx_PyMODINIT_FUNC init__init__(void) { initpyfuse3(); } #endif __Pyx_PyMODINIT_FUNC initpyfuse3(void) #else __Pyx_PyMODINIT_FUNC PyInit_pyfuse3(void) CYTHON_SMALL_CODE; /*proto*/ #if !defined(CYTHON_NO_PYINIT_EXPORT) && (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) __Pyx_PyMODINIT_FUNC PyInit___init__(void) { return PyInit_pyfuse3(); } #endif __Pyx_PyMODINIT_FUNC PyInit_pyfuse3(void) #if CYTHON_PEP489_MULTI_PHASE_INIT { return PyModuleDef_Init(&__pyx_moduledef); } static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { #if PY_VERSION_HEX >= 0x030700A1 static PY_INT64_T main_interpreter_id = -1; PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); if (main_interpreter_id == -1) { main_interpreter_id = current_id; return (unlikely(current_id == -1)) ? -1 : 0; } else if (unlikely(main_interpreter_id != current_id)) #else static PyInterpreterState *main_interpreter = NULL; PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; if (!main_interpreter) { main_interpreter = current_interpreter; } else if (unlikely(main_interpreter != current_interpreter)) #endif { PyErr_SetString( PyExc_ImportError, "Interpreter change detected - this module can only be loaded into one interpreter per process."); return -1; } return 0; } #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) #else static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) #endif { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { if (allow_none || value != Py_None) { #if CYTHON_COMPILING_IN_LIMITED_API result = PyModule_AddObject(module, to_name, value); #else result = PyDict_SetItemString(moddict, to_name, value); #endif } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); } else { result = -1; } return result; } static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { PyObject *module = NULL, *moddict, *modname; CYTHON_UNUSED_VAR(def); if (__Pyx_check_single_interpreter()) return NULL; if (__pyx_m) return __Pyx_NewRef(__pyx_m); modname = PyObject_GetAttrString(spec, "name"); if (unlikely(!modname)) goto bad; module = PyModule_NewObject(modname); Py_DECREF(modname); if (unlikely(!module)) goto bad; #if CYTHON_COMPILING_IN_LIMITED_API moddict = module; #else moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; #endif if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; return module; bad: Py_XDECREF(module); return NULL; } static CYTHON_SMALL_CODE int __pyx_pymod_exec_pyfuse3(PyObject *__pyx_pyinit_module) #endif #endif { int stringtab_initialized = 0; #if CYTHON_USE_MODULE_STATE int pystate_addmodule_run = 0; #endif PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { if (__pyx_m == __pyx_pyinit_module) return 0; PyErr_SetString(PyExc_RuntimeError, "Module 'pyfuse3' has already been imported. Re-initialisation is not supported."); return -1; } #elif PY_MAJOR_VERSION >= 3 if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif /*--- Module creation code ---*/ #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_m = __pyx_pyinit_module; Py_INCREF(__pyx_m); #else #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("pyfuse3", __pyx_methods, __pyx_k_init___pyx_Copyright_2013_Nik, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); if (unlikely(!__pyx_m)) __PYX_ERR(3, 1, __pyx_L1_error) #elif CYTHON_USE_MODULE_STATE __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1, __pyx_L1_error) { int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "pyfuse3" pseudovariable */ if (unlikely((add_module_result < 0))) __PYX_ERR(3, 1, __pyx_L1_error) pystate_addmodule_run = 1; } #else __pyx_m = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_m)) __PYX_ERR(3, 1, __pyx_L1_error) #endif #endif CYTHON_UNUSED_VAR(__pyx_t_1); __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(3, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(3, 1, __pyx_L1_error) if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_pyfuse3(void)", 0); if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #ifdef __Pxy_PyFrame_Initialize_Offsets __Pxy_PyFrame_Initialize_Offsets(); #endif __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(3, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(3, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS PyEval_InitThreads(); #endif /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitConstants() < 0) __PYX_ERR(3, 1, __pyx_L1_error) stringtab_initialized = 1; if (__Pyx_InitGlobals() < 0) __PYX_ERR(3, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif if (__pyx_module_is_main_pyfuse3____init__) { if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main_2) < 0) __PYX_ERR(3, 1, __pyx_L1_error) } if (!CYTHON_PEP489_MULTI_PHASE_INIT) { if (unlikely((__Pyx_SetPackagePathFromImportLib(__pyx_kp_u_pyfuse3___init) < 0))) __PYX_ERR(3, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(3, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "pyfuse3")) { if (unlikely((PyDict_SetItemString(modules, "pyfuse3", __pyx_m) < 0))) __PYX_ERR(3, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(3, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(3, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); (void)__Pyx_modinit_function_export_code(); if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(3, 1, __pyx_L1_error) if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(3, 1, __pyx_L1_error) (void)__Pyx_modinit_variable_import_code(); (void)__Pyx_modinit_function_import_code(); /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(3, 1, __pyx_L1_error) #endif /* "pyfuse3/__init__.pyx":62 * ################ * * from pickle import PicklingError # <<<<<<<<<<<<<< * from queue import Queue * import logging */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_PicklingError); __Pyx_GIVEREF(__pyx_n_s_PicklingError); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PicklingError)) __PYX_ERR(3, 62, __pyx_L1_error); __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PicklingError); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_PicklingError, __pyx_t_2) < 0) __PYX_ERR(3, 62, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":63 * * from pickle import PicklingError * from queue import Queue # <<<<<<<<<<<<<< * import logging * import os */ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_Queue); __Pyx_GIVEREF(__pyx_n_s_Queue); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Queue)) __PYX_ERR(3, 63, __pyx_L1_error); __pyx_t_2 = __Pyx_Import(__pyx_n_s_queue, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Queue, __pyx_t_3) < 0) __PYX_ERR(3, 63, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":64 * from pickle import PicklingError * from queue import Queue * import logging # <<<<<<<<<<<<<< * import os * import os.path */ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_logging, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_2) < 0) __PYX_ERR(3, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":65 * from queue import Queue * import logging * import os # <<<<<<<<<<<<<< * import os.path * import sys */ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_os, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(3, 65, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":66 * import logging * import os * import os.path # <<<<<<<<<<<<<< * import sys * import trio */ __pyx_t_2 = __Pyx_Import(__pyx_n_s_os_path, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(3, 66, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":67 * import os * import os.path * import sys # <<<<<<<<<<<<<< * import trio * import threading */ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(3, 67, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":68 * import os.path * import sys * import trio # <<<<<<<<<<<<<< * import threading * import typing */ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_trio, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_trio, __pyx_t_2) < 0) __PYX_ERR(3, 68, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":69 * import sys * import trio * import threading # <<<<<<<<<<<<<< * import typing * */ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_threading, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_2) < 0) __PYX_ERR(3, 69, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":70 * import trio * import threading * import typing # <<<<<<<<<<<<<< * * from . import _pyfuse3 */ __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_typing, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_typing, __pyx_t_2) < 0) __PYX_ERR(3, 70, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":72 * import typing * * from . import _pyfuse3 # <<<<<<<<<<<<<< * _pyfuse3.FUSEError = FUSEError * */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_pyfuse3_2); __Pyx_GIVEREF(__pyx_n_s_pyfuse3_2); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_pyfuse3_2)) __PYX_ERR(3, 72, __pyx_L1_error); __pyx_t_3 = __Pyx_Import(__pyx_n_s__52, __pyx_t_2, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_pyfuse3_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyfuse3_2, __pyx_t_2) < 0) __PYX_ERR(3, 72, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":73 * * from . import _pyfuse3 * _pyfuse3.FUSEError = FUSEError # <<<<<<<<<<<<<< * * from ._pyfuse3 import (Operations, async_wrapper, FileHandleT, FileNameT, */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyfuse3_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_FUSEError, ((PyObject *)__pyx_ptype_7pyfuse3_FUSEError)) < 0) __PYX_ERR(3, 73, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "pyfuse3/__init__.pyx":75 * _pyfuse3.FUSEError = FUSEError * * from ._pyfuse3 import (Operations, async_wrapper, FileHandleT, FileNameT, # <<<<<<<<<<<<<< * FlagT, InodeT, ModeT, XAttrNameT) * */ __pyx_t_3 = PyList_New(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_Operations); __Pyx_GIVEREF(__pyx_n_s_Operations); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Operations)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_async_wrapper); __Pyx_GIVEREF(__pyx_n_s_async_wrapper); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_async_wrapper)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_FileHandleT); __Pyx_GIVEREF(__pyx_n_s_FileHandleT); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_FileHandleT)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_FileNameT); __Pyx_GIVEREF(__pyx_n_s_FileNameT); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_FileNameT)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_FlagT); __Pyx_GIVEREF(__pyx_n_s_FlagT); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_FlagT)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_InodeT); __Pyx_GIVEREF(__pyx_n_s_InodeT); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 5, __pyx_n_s_InodeT)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_ModeT); __Pyx_GIVEREF(__pyx_n_s_ModeT); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 6, __pyx_n_s_ModeT)) __PYX_ERR(3, 75, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_XAttrNameT); __Pyx_GIVEREF(__pyx_n_s_XAttrNameT); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 7, __pyx_n_s_XAttrNameT)) __PYX_ERR(3, 75, __pyx_L1_error); __pyx_t_2 = __Pyx_Import(__pyx_n_s_pyfuse3_2, __pyx_t_3, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Operations); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Operations, __pyx_t_3) < 0) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_async_wrapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_wrapper, __pyx_t_3) < 0) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_FileHandleT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_FileHandleT, __pyx_t_3) < 0) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_FileNameT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_FileNameT, __pyx_t_3) < 0) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_FlagT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_FlagT, __pyx_t_3) < 0) __PYX_ERR(3, 76, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InodeT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_InodeT, __pyx_t_3) < 0) __PYX_ERR(3, 76, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ModeT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ModeT, __pyx_t_3) < 0) __PYX_ERR(3, 76, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_XAttrNameT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_XAttrNameT, __pyx_t_3) < 0) __PYX_ERR(3, 76, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":83 * ################## * * log = logging.getLogger("pyfuse3") # <<<<<<<<<<<<<< * fse = sys.getfilesystemencoding() * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_log, __pyx_t_2) < 0) __PYX_ERR(3, 83, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":84 * * log = logging.getLogger("pyfuse3") * fse = sys.getfilesystemencoding() # <<<<<<<<<<<<<< * * cdef object operations */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_fse, __pyx_t_2) < 0) __PYX_ERR(3, 84, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":88 * cdef object operations * cdef object mountpoint_b * cdef fuse_session* session = NULL # <<<<<<<<<<<<<< * cdef fuse_lowlevel_ops fuse_ops * cdef int session_fd */ __pyx_v_7pyfuse3_session = NULL; /* "pyfuse3/__init__.pyx":93 * cdef object py_retval * * cdef object _notify_queue = None # <<<<<<<<<<<<<< * * ROOT_INODE = FUSE_ROOT_ID */ __Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7pyfuse3__notify_queue); __Pyx_DECREF_SET(__pyx_v_7pyfuse3__notify_queue, Py_None); __Pyx_GIVEREF(Py_None); /* "pyfuse3/__init__.pyx":95 * cdef object _notify_queue = None * * ROOT_INODE = FUSE_ROOT_ID # <<<<<<<<<<<<<< * __version__ = PYFUSE3_VERSION.decode('utf-8') * */ __pyx_t_2 = __Pyx_PyInt_From___pyx_anon_enum(FUSE_ROOT_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 95, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROOT_INODE, __pyx_t_2) < 0) __PYX_ERR(3, 95, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":96 * * ROOT_INODE = FUSE_ROOT_ID * __version__ = PYFUSE3_VERSION.decode('utf-8') # <<<<<<<<<<<<<< * * _NANOS_PER_SEC = 1000000000 */ __pyx_t_4 = __Pyx_ssize_strlen(PYFUSE3_VERSION); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 96, __pyx_L1_error) __pyx_t_2 = __Pyx_decode_c_string(PYFUSE3_VERSION, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_t_2) < 0) __PYX_ERR(3, 96, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":98 * __version__ = PYFUSE3_VERSION.decode('utf-8') * * _NANOS_PER_SEC = 1000000000 # <<<<<<<<<<<<<< * * # In the Cython source, we want the names to refer to the */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_NANOS_PER_SEC, __pyx_int_1000000000) < 0) __PYX_ERR(3, 98, __pyx_L1_error) /* "pyfuse3/__init__.pyx":102 * # In the Cython source, we want the names to refer to the * # C constants. Therefore, we assign through globals(). * g = globals() # <<<<<<<<<<<<<< * g['ENOATTR'] = ENOATTR * g['RENAME_EXCHANGE'] = RENAME_EXCHANGE */ __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_g, __pyx_t_2) < 0) __PYX_ERR(3, 102, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":103 * # C constants. Therefore, we assign through globals(). * g = globals() * g['ENOATTR'] = ENOATTR # <<<<<<<<<<<<<< * g['RENAME_EXCHANGE'] = RENAME_EXCHANGE * g['RENAME_NOREPLACE'] = RENAME_NOREPLACE */ __pyx_t_2 = __Pyx_PyInt_From___pyx_anon_enum(ENOATTR); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely((PyObject_SetItem(__pyx_t_3, __pyx_n_u_ENOATTR, __pyx_t_2) < 0))) __PYX_ERR(3, 103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":104 * g = globals() * g['ENOATTR'] = ENOATTR * g['RENAME_EXCHANGE'] = RENAME_EXCHANGE # <<<<<<<<<<<<<< * g['RENAME_NOREPLACE'] = RENAME_NOREPLACE * */ __pyx_t_2 = __Pyx_PyInt_From___pyx_anon_enum(RENAME_EXCHANGE); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely((PyObject_SetItem(__pyx_t_3, __pyx_n_u_RENAME_EXCHANGE, __pyx_t_2) < 0))) __PYX_ERR(3, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":105 * g['ENOATTR'] = ENOATTR * g['RENAME_EXCHANGE'] = RENAME_EXCHANGE * g['RENAME_NOREPLACE'] = RENAME_NOREPLACE # <<<<<<<<<<<<<< * * trio_token = None */ __pyx_t_2 = __Pyx_PyInt_From___pyx_anon_enum(RENAME_NOREPLACE); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely((PyObject_SetItem(__pyx_t_3, __pyx_n_u_RENAME_NOREPLACE, __pyx_t_2) < 0))) __PYX_ERR(3, 105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyfuse3/__init__.pyx":107 * g['RENAME_NOREPLACE'] = RENAME_NOREPLACE * * trio_token = None # <<<<<<<<<<<<<< * * */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_trio_token, Py_None) < 0) __PYX_ERR(3, 107, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_10_Container_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Container___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_10_Container_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Container___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":59 * save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) * * async def fuse_lookup_async (_Container c, name): # <<<<<<<<<<<<<< * cdef EntryAttributes entry * cdef int ret */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_1fuse_lookup_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_lookup_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_lookup_async, __pyx_t_2) < 0) __PYX_ERR(1, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":98 * save_retval(fuse_getattr_async(c)) * * async def fuse_getattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_4fuse_getattr_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_getattr_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_getattr_async, __pyx_t_2) < 0) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":127 * save_retval(fuse_setattr_async(c, fh)) * * async def fuse_setattr_async (_Container c, fh): # <<<<<<<<<<<<<< * cdef int ret * cdef timespec now */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_7fuse_setattr_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_setattr_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_setattr_async, __pyx_t_2) < 0) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":184 * save_retval(fuse_readlink_async(c)) * * async def fuse_readlink_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef char* name */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_10fuse_readlink_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_readlink_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_readlink_async, __pyx_t_2) < 0) __PYX_ERR(1, 184, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":209 * save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) * * async def fuse_mknod_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_13fuse_mknod_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_mknod_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_mknod_async, __pyx_t_2) < 0) __PYX_ERR(1, 209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":234 * save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) * * async def fuse_mkdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_16fuse_mkdir_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_mkdir_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_mkdir_async, __pyx_t_2) < 0) __PYX_ERR(1, 234, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":260 * save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) * * async def fuse_unlink_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_19fuse_unlink_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_unlink_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_unlink_async, __pyx_t_2) < 0) __PYX_ERR(1, 260, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":281 * save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) * * async def fuse_rmdir_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_22fuse_rmdir_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_rmdir_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_rmdir_async, __pyx_t_2) < 0) __PYX_ERR(1, 281, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":304 * c, PyBytes_FromString(name), PyBytes_FromString(link))) * * async def fuse_symlink_async (_Container c, name, link): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_25fuse_symlink_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_symlink_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_symlink_async, __pyx_t_2) < 0) __PYX_ERR(1, 304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":332 * * * async def fuse_rename_async (_Container c, name, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef unsigned flags = c.flags */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_28fuse_rename_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_rename_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_rename_async, __pyx_t_2) < 0) __PYX_ERR(1, 332, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":357 * save_retval(fuse_link_async(c, PyBytes_FromString(newname))) * * async def fuse_link_async (_Container c, newname): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_31fuse_link_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_link_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_link_async, __pyx_t_2) < 0) __PYX_ERR(1, 357, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":381 * save_retval(fuse_open_async(c)) * * async def fuse_open_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef FileInfo fi */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_34fuse_open_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_open_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_open_async, __pyx_t_2) < 0) __PYX_ERR(1, 381, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":408 * save_retval(fuse_read_async(c)) * * async def fuse_read_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef Py_buffer pybuf */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_37fuse_read_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_read_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_read_async, __pyx_t_2) < 0) __PYX_ERR(1, 408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":438 * save_retval(fuse_write_async(c, pbuf)) * * async def fuse_write_async (_Container c, pbuf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_40fuse_write_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_write_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_write_async, __pyx_t_2) < 0) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":462 * save_retval(fuse_write_buf_async(c, buf)) * * async def fuse_write_buf_async (_Container c, buf): # <<<<<<<<<<<<<< * cdef int ret * cdef size_t len_ */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_43fuse_write_buf_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_write_buf_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_write_buf_async, __pyx_t_2) < 0) __PYX_ERR(1, 462, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":483 * save_retval(fuse_flush_async(c)) * * async def fuse_flush_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_46fuse_flush_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_flush_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_flush_async, __pyx_t_2) < 0) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":503 * save_retval(fuse_release_async(c)) * * async def fuse_release_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_49fuse_release_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_release_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_release_async, __pyx_t_2) < 0) __PYX_ERR(1, 503, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":525 * save_retval(fuse_fsync_async(c)) * * async def fuse_fsync_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_52fuse_fsync_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_fsync_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_fsync_async, __pyx_t_2) < 0) __PYX_ERR(1, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":546 * save_retval(fuse_opendir_async(c)) * * async def fuse_opendir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_55fuse_opendir_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_opendir_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_opendir_async, __pyx_t_2) < 0) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_12ReaddirToken_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReaddirToken___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.req cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.req cannot be converted to a Python object for pickling" */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_12ReaddirToken_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReaddirToken___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":578 * save_retval(fuse_readdirplus_async(c)) * * async def fuse_readdirplus_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ReaddirToken token = ReaddirToken() */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_58fuse_readdirplus_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_readdirplus_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_readdirplus_async, __pyx_t_2) < 0) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":607 * save_retval(fuse_releasedir_async(c)) * * async def fuse_releasedir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_61fuse_releasedir_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_releasedir_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_releasedir_async, __pyx_t_2) < 0) __PYX_ERR(1, 607, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":630 * save_retval(fuse_fsyncdir_async(c)) * * async def fuse_fsyncdir_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_64fuse_fsyncdir_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_fsyncdir_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_fsyncdir_async, __pyx_t_2) < 0) __PYX_ERR(1, 630, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":650 * save_retval(fuse_statfs_async(c)) * * async def fuse_statfs_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef StatvfsData stats */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_67fuse_statfs_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_statfs_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_statfs_async, __pyx_t_2) < 0) __PYX_ERR(1, 650, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":681 * save_retval(fuse_setxattr_async(c, name, value)) * * async def fuse_setxattr_async (_Container c, name, value): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_70fuse_setxattr_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_setxattr_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_setxattr_async, __pyx_t_2) < 0) __PYX_ERR(1, 681, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":726 * save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) * * async def fuse_getxattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_73fuse_getxattr_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_getxattr_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_getxattr_async, __pyx_t_2) < 0) __PYX_ERR(1, 726, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":759 * save_retval(fuse_listxattr_async(c)) * * async def fuse_listxattr_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef ssize_t len_s */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_76fuse_listxattr_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_listxattr_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_listxattr_async, __pyx_t_2) < 0) __PYX_ERR(1, 759, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":797 * save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) * * async def fuse_removexattr_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_79fuse_removexattr_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_removexattr_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_removexattr_async, __pyx_t_2) < 0) __PYX_ERR(1, 797, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":819 * save_retval(fuse_access_async(c)) * * async def fuse_access_async (_Container c): # <<<<<<<<<<<<<< * cdef int ret * cdef int mask = c.flags */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_82fuse_access_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_access_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_access_async, __pyx_t_2) < 0) __PYX_ERR(1, 819, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/handlers.pxi":848 * save_retval(fuse_create_async(c, PyBytes_FromString(name))) * * async def fuse_create_async (_Container c, name): # <<<<<<<<<<<<<< * cdef int ret * cdef EntryAttributes entry */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_85fuse_create_async, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_fuse_create_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fuse_create_async, __pyx_t_2) < 0) __PYX_ERR(1, 848, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/internal.pxi":114 * raise * * def _notify_loop(): # <<<<<<<<<<<<<< * '''Process async invalidate_entry calls.''' * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_88_notify_loop, 0, __pyx_n_s_notify_loop, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_notify_loop, __pyx_t_2) < 0) __PYX_ERR(2, 114, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_11_WorkerData_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_WorkerData___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3__WorkerData, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_7pyfuse3__WorkerData); /* "(tree fragment)":16 * else: * return __pyx_unpickle__WorkerData, (type(self), 0x2a8cfde, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle__WorkerData__set_state(self, __pyx_state) */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_11_WorkerData_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_WorkerData___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3__WorkerData, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_7pyfuse3__WorkerData); /* "src/pyfuse3/internal.pxi":201 * cdef _WorkerData worker_data * * async def _wait_fuse_readable(): # <<<<<<<<<<<<<< * '''Wait for FUSE fd to become readable * */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_90_wait_fuse_readable, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_wait_fuse_readable, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_fuse_readable, __pyx_t_2) < 0) __PYX_ERR(2, 201, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "src/pyfuse3/internal.pxi":229 * return True * * @async_wrapper # <<<<<<<<<<<<<< * async def _session_loop(nursery, int min_tasks, int max_tasks): * cdef int res */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_async_wrapper); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_93_session_loop, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_session_loop, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_session_loop, __pyx_t_5) < 0) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":141 * cdef readonly mode_t umask * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("RequestContext instances can't be pickled") * */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_14RequestContext_1__getstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestContext___getstate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_RequestContext, __pyx_n_s_getstate, __pyx_t_5) < 0) __PYX_ERR(3, 141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_RequestContext); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_14RequestContext_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestContext___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_RequestContext, __pyx_n_s_reduce_cython, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_RequestContext); /* "(tree fragment)":16 * else: * return __pyx_unpickle_RequestContext, (type(self), 0xe56624f, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_RequestContext__set_state(self, __pyx_state) */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_14RequestContext_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestContext___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_RequestContext, __pyx_n_s_setstate_cython, __pyx_t_5) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_RequestContext); /* "pyfuse3/__init__.pyx":169 * self.update_size = False * * def __getstate__(self): # <<<<<<<<<<<<<< * raise PicklingError("SetattrFields instances can't be pickled") * */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_13SetattrFields_3__getstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SetattrFields___getstate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_SetattrFields, __pyx_n_s_getstate, __pyx_t_5) < 0) __PYX_ERR(3, 169, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_SetattrFields); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_13SetattrFields_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SetattrFields___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_13SetattrFields_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SetattrFields___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":339 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_15EntryAttributes_3__getstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_EntryAttributes___getstate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__95)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_EntryAttributes, __pyx_n_s_getstate, __pyx_t_5) < 0) __PYX_ERR(3, 339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_EntryAttributes); /* "pyfuse3/__init__.pyx":348 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_15EntryAttributes_5__setstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_EntryAttributes___setstate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_EntryAttributes, __pyx_n_s_setstate, __pyx_t_5) < 0) __PYX_ERR(3, 348, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_EntryAttributes); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_15EntryAttributes_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_EntryAttributes___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_15EntryAttributes_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_EntryAttributes___setstate_cytho, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_8FileInfo_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileInfo___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_8FileInfo_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileInfo___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":471 * * # Pickling and copy support * def __getstate__(self): # <<<<<<<<<<<<<< * state = dict() * for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_11StatvfsData_3__getstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StatvfsData___getstate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_StatvfsData, __pyx_n_s_getstate, __pyx_t_5) < 0) __PYX_ERR(3, 471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_StatvfsData); /* "pyfuse3/__init__.pyx":479 * return state * * def __setstate__(self, state): # <<<<<<<<<<<<<< * for (k,v) in state.items(): * setattr(self, k, v) */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_11StatvfsData_5__setstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StatvfsData___setstate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7pyfuse3_StatvfsData, __pyx_n_s_setstate, __pyx_t_5) < 0) __PYX_ERR(3, 479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_7pyfuse3_StatvfsData); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_11StatvfsData_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StatvfsData___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_11StatvfsData_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StatvfsData___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_9FUSEError_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FUSEError___reduce_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_9FUSEError_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FUSEError___setstate_cython, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__107)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":511 * * * def listdir(path): # <<<<<<<<<<<<<< * '''Like `os.listdir`, but releases the GIL. * */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_96listdir, 0, __pyx_n_s_listdir, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_listdir, __pyx_t_5) < 0) __PYX_ERR(3, 511, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":560 * * * def syncfs(path): # <<<<<<<<<<<<<< * '''Sync filesystem mounted at *path* * */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_98syncfs, 0, __pyx_n_s_syncfs, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_syncfs, __pyx_t_5) < 0) __PYX_ERR(3, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":579 * * * def setxattr(path, name, bytes value, namespace='user'): # <<<<<<<<<<<<<< * '''Set extended attribute * */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_100setxattr, 0, __pyx_n_s_setxattr, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__113)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_tuple__114); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setxattr, __pyx_t_5) < 0) __PYX_ERR(3, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":630 * * * def getxattr(path, name, size_t size_guess=128, namespace='user'): # <<<<<<<<<<<<<< * '''Get extended attribute * */ __pyx_t_5 = __Pyx_PyInt_FromSize_t(((size_t)0x80)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(3, 630, __pyx_L1_error); __Pyx_INCREF(((PyObject*)__pyx_n_u_user)); __Pyx_GIVEREF(((PyObject*)__pyx_n_u_user)); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject*)__pyx_n_u_user))) __PYX_ERR(3, 630, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_102getxattr, 0, __pyx_n_s_getxattr, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__116)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_getxattr, __pyx_t_5) < 0) __PYX_ERR(3, 630, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":710 * * * default_options = frozenset(('default_permissions',)) # <<<<<<<<<<<<<< * * def init(ops, mountpoint, options=default_options): */ __pyx_t_5 = __Pyx_PyFrozenSet_New(__pyx_tuple__117); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_options, __pyx_t_5) < 0) __PYX_ERR(3, 710, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":712 * default_options = frozenset(('default_permissions',)) * * def init(ops, mountpoint, options=default_options): # <<<<<<<<<<<<<< * '''Initialize and mount FUSE file system * */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_104init, 0, __pyx_n_s_init, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__119)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (!__Pyx_CyFunction_InitDefaults(__pyx_t_5, sizeof(__pyx_defaults), 1)) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_default_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_5)->__pyx_arg_options = __pyx_t_3; __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_5, __pyx_pf_7pyfuse3_128__defaults__); if (PyDict_SetItem(__pyx_d, __pyx_n_s_init, __pyx_t_5) < 0) __PYX_ERR(3, 712, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "pyfuse3/__init__.pyx":768 * * * @async_wrapper # <<<<<<<<<<<<<< * async def main(int min_tasks=1, int max_tasks=99): * '''Run FUSE main loop''' */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_async_wrapper); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* "pyfuse3/__init__.pyx":769 * * @async_wrapper * async def main(int min_tasks=1, int max_tasks=99): # <<<<<<<<<<<<<< * '''Run FUSE main loop''' * */ __pyx_t_3 = __Pyx_PyInt_From_int(((int)1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyInt_From_int(((int)99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* "pyfuse3/__init__.pyx":768 * * * @async_wrapper # <<<<<<<<<<<<<< * async def main(int min_tasks=1, int max_tasks=99): * '''Run FUSE main loop''' */ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3)) __PYX_ERR(3, 768, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2)) __PYX_ERR(3, 768, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_106main, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_main, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_main, __pyx_t_6) < 0) __PYX_ERR(3, 768, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":790 * * * def terminate(): # <<<<<<<<<<<<<< * '''Terminate FUSE main loop. * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_109terminate, 0, __pyx_n_s_terminate, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__121)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_terminate, __pyx_t_6) < 0) __PYX_ERR(3, 790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":805 * * * def close(unmount=True): # <<<<<<<<<<<<<< * '''Clean up and ensure filesystem is unmounted * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_111close, 0, __pyx_n_s_close, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__123)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__124); if (PyDict_SetItem(__pyx_d, __pyx_n_s_close, __pyx_t_6) < 0) __PYX_ERR(3, 805, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":838 * * * def invalidate_inode(fuse_ino_t inode, attr_only=False): # <<<<<<<<<<<<<< * '''Invalidate cache for *inode* * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_113invalidate_inode, 0, __pyx_n_s_invalidate_inode, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__127); if (PyDict_SetItem(__pyx_d, __pyx_n_s_invalidate_inode, __pyx_t_6) < 0) __PYX_ERR(3, 838, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":867 * * * def invalidate_entry(fuse_ino_t inode_p, bytes name, fuse_ino_t deleted=0): # <<<<<<<<<<<<<< * '''Invalidate directory entry * */ __pyx_t_6 = __Pyx_PyInt_From_fuse_ino_t(((fuse_ino_t)0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6)) __PYX_ERR(3, 867, __pyx_L1_error); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_115invalidate_entry, 0, __pyx_n_s_invalidate_entry, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_invalidate_entry, __pyx_t_6) < 0) __PYX_ERR(3, 867, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":923 * * * def invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False): # <<<<<<<<<<<<<< * '''Asynchronously invalidate directory entry * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_117invalidate_entry_async, 0, __pyx_n_s_invalidate_entry_async, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__132); if (PyDict_SetItem(__pyx_d, __pyx_n_s_invalidate_entry_async, __pyx_t_6) < 0) __PYX_ERR(3, 923, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":959 * * * def notify_store(inode, offset, data): # <<<<<<<<<<<<<< * '''Store data in kernel page cache * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_119notify_store, 0, __pyx_n_s_notify_store, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__134)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_notify_store, __pyx_t_6) < 0) __PYX_ERR(3, 959, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":1003 * * * def get_sup_groups(pid): # <<<<<<<<<<<<<< * '''Return supplementary group ids of *pid* * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_121get_sup_groups, 0, __pyx_n_s_get_sup_groups, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__136)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_sup_groups, __pyx_t_6) < 0) __PYX_ERR(3, 1003, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":1026 * * * def readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id): # <<<<<<<<<<<<<< * '''Report a directory entry in response to a `~Operations.readdir` request. * */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_123readdir_reply, 0, __pyx_n_s_readdir_reply, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__138)); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_readdir_reply, __pyx_t_6) < 0) __PYX_ERR(3, 1026, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "(tree fragment)":1 * def __pyx_unpickle__WorkerData(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_125__pyx_unpickle__WorkerData, 0, __pyx_n_s_pyx_unpickle__WorkerData, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__WorkerData, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "(tree fragment)":11 * __pyx_unpickle__WorkerData__set_state(<_WorkerData> __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle__WorkerData__set_state(_WorkerData __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.active_readers = __pyx_state[0]; __pyx_result.read_lock = __pyx_state[1]; __pyx_result.task_count = __pyx_state[2]; __pyx_result.task_serial = __pyx_state[3] * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7pyfuse3_127__pyx_unpickle_RequestContext, 0, __pyx_n_s_pyx_unpickle_RequestContext, NULL, __pyx_n_s_pyfuse3, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RequestContext, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "pyfuse3/__init__.pyx":1 * ''' # <<<<<<<<<<<<<< * __init__.pyx * */ __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(3, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); if (__pyx_m) { if (__pyx_d && stringtab_initialized) { __Pyx_AddTraceback("init pyfuse3", __pyx_clineno, __pyx_lineno, __pyx_filename); } #if !CYTHON_USE_MODULE_STATE Py_CLEAR(__pyx_m); #else Py_DECREF(__pyx_m); if (pystate_addmodule_run) { PyObject *tp, *value, *tb; PyErr_Fetch(&tp, &value, &tb); PyState_RemoveModule(&__pyx_moduledef); PyErr_Restore(tp, value, tb); } #endif } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init pyfuse3"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if CYTHON_PEP489_MULTI_PHASE_INIT return (__pyx_m != NULL) ? 0 : -1; #elif PY_MAJOR_VERSION >= 3 return __pyx_m; #else return; #endif } /* #### Code section: cleanup_globals ### */ /* #### Code section: cleanup_module ### */ /* #### Code section: main_method ### */ /* #### Code section: utility_code_pragmas ### */ #ifdef _MSC_VER #pragma warning( push ) /* Warning 4127: conditional expression is constant * Cython uses constant conditional expressions to allow in inline functions to be optimized at * compile-time, so this warning is not useful */ #pragma warning( disable : 4127 ) #endif /* #### Code section: utility_code_def ### */ /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule(modname); if (!m) goto end; p = PyObject_GetAttrString(m, "RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i= 0x030C00A6 PyObject *current_exception = tstate->current_exception; if (unlikely(!current_exception)) return 0; exc_type = (PyObject*) Py_TYPE(current_exception); if (exc_type == err) return 1; #else exc_type = tstate->curexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; #endif #if CYTHON_AVOID_BORROWED_REFS Py_INCREF(exc_type); #endif if (unlikely(PyTuple_Check(err))) { result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); } else { result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(exc_type); #endif return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { #if PY_VERSION_HEX >= 0x030C00A6 PyObject *tmp_value; assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); if (value) { #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) #endif PyException_SetTraceback(value, tb); } tmp_value = tstate->current_exception; tstate->current_exception = value; Py_XDECREF(tmp_value); Py_XDECREF(type); Py_XDECREF(tb); #else PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #endif } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if PY_VERSION_HEX >= 0x030C00A6 PyObject* exc_value; exc_value = tstate->current_exception; tstate->current_exception = 0; *value = exc_value; *type = NULL; *tb = NULL; if (exc_value) { *type = (PyObject*) Py_TYPE(exc_value); Py_INCREF(*type); #if CYTHON_COMPILING_IN_CPYTHON *tb = ((PyBaseExceptionObject*) exc_value)->traceback; Py_XINCREF(*tb); #else *tb = PyException_GetTraceback(exc_value); #endif } #else *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #endif } #endif /* PyObjectGetAttrStr */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #endif /* PyObjectGetAttrStrNoError */ #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) __Pyx_PyErr_Clear(); } #endif static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { PyObject *result; #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 (void) PyObject_GetOptionalAttr(obj, attr_name, &result); return result; #else #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); } #endif result = __Pyx_PyObject_GetAttrStr(obj, attr_name); if (unlikely(!result)) { __Pyx_PyObject_GetAttrStr_ClearAttributeError(); } return result; #endif } /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); if (unlikely(!result) && !PyErr_Occurred()) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* TupleAndListFromArray */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { PyObject *v; Py_ssize_t i; for (i = 0; i < length; i++) { v = dest[i] = src[i]; Py_INCREF(v); } } static CYTHON_INLINE PyObject * __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) { PyObject *res; if (n <= 0) { Py_INCREF(__pyx_empty_tuple); return __pyx_empty_tuple; } res = PyTuple_New(n); if (unlikely(res == NULL)) return NULL; __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); return res; } static CYTHON_INLINE PyObject * __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) { PyObject *res; if (n <= 0) { return PyList_New(0); } res = PyList_New(n); if (unlikely(res == NULL)) return NULL; __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); return res; } #endif /* BytesEquals */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API return PyObject_RichCompareBool(s1, s2, equals); #else if (s1 == s2) { return (equals == Py_EQ); } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { const char *ps1, *ps2; Py_ssize_t length = PyBytes_GET_SIZE(s1); if (length != PyBytes_GET_SIZE(s2)) return (equals == Py_NE); ps1 = PyBytes_AS_STRING(s1); ps2 = PyBytes_AS_STRING(s2); if (ps1[0] != ps2[0]) { return (equals == Py_NE); } else if (length == 1) { return (equals == Py_EQ); } else { int result; #if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) Py_hash_t hash1, hash2; hash1 = ((PyBytesObject*)s1)->ob_shash; hash2 = ((PyBytesObject*)s2)->ob_shash; if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { return (equals == Py_NE); } #endif result = memcmp(ps1, ps2, (size_t)length); return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { return (equals == Py_NE); } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { return (equals == Py_NE); } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } #endif } /* UnicodeEquals */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API return PyObject_RichCompareBool(s1, s2, equals); #else #if PY_MAJOR_VERSION < 3 PyObject* owned_ref = NULL; #endif int s1_is_unicode, s2_is_unicode; if (s1 == s2) { goto return_eq; } s1_is_unicode = PyUnicode_CheckExact(s1); s2_is_unicode = PyUnicode_CheckExact(s2); #if PY_MAJOR_VERSION < 3 if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { owned_ref = PyUnicode_FromObject(s2); if (unlikely(!owned_ref)) return -1; s2 = owned_ref; s2_is_unicode = 1; } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { owned_ref = PyUnicode_FromObject(s1); if (unlikely(!owned_ref)) return -1; s1 = owned_ref; s1_is_unicode = 1; } else if (((!s2_is_unicode) & (!s1_is_unicode))) { return __Pyx_PyBytes_Equals(s1, s2, equals); } #endif if (s1_is_unicode & s2_is_unicode) { Py_ssize_t length; int kind; void *data1, *data2; if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) return -1; length = __Pyx_PyUnicode_GET_LENGTH(s1); if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { goto return_ne; } #if CYTHON_USE_UNICODE_INTERNALS { Py_hash_t hash1, hash2; #if CYTHON_PEP393_ENABLED hash1 = ((PyASCIIObject*)s1)->hash; hash2 = ((PyASCIIObject*)s2)->hash; #else hash1 = ((PyUnicodeObject*)s1)->hash; hash2 = ((PyUnicodeObject*)s2)->hash; #endif if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { goto return_ne; } } #endif kind = __Pyx_PyUnicode_KIND(s1); if (kind != __Pyx_PyUnicode_KIND(s2)) { goto return_ne; } data1 = __Pyx_PyUnicode_DATA(s1); data2 = __Pyx_PyUnicode_DATA(s2); if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { goto return_ne; } else if (length == 1) { goto return_eq; } else { int result = memcmp(data1, data2, (size_t)(length * kind)); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & s2_is_unicode) { goto return_ne; } else if ((s2 == Py_None) & s1_is_unicode) { goto return_ne; } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } return_eq: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ); return_ne: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_NE); #endif } /* fastcall */ #if CYTHON_METH_FASTCALL static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) { Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); for (i = 0; i < n; i++) { if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; } for (i = 0; i < n; i++) { int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); if (unlikely(eq != 0)) { if (unlikely(eq < 0)) return NULL; return kwvalues[i]; } } return NULL; } #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); PyObject *dict; dict = PyDict_New(); if (unlikely(!dict)) return NULL; for (i=0; i= 0x030C00A6 PyException_SetTraceback(value, tb); #elif CYTHON_FAST_THREAD_STATE PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } #else PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #endif } bad: Py_XDECREF(owned_instance); return; } #endif /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject *const *kwvalues, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); while (1) { Py_XDECREF(key); key = NULL; Py_XDECREF(value); value = NULL; if (kwds_is_tuple) { Py_ssize_t size; #if CYTHON_ASSUME_SAFE_MACROS size = PyTuple_GET_SIZE(kwds); #else size = PyTuple_Size(kwds); if (size < 0) goto bad; #endif if (pos >= size) break; #if CYTHON_AVOID_BORROWED_REFS key = __Pyx_PySequence_ITEM(kwds, pos); if (!key) goto bad; #elif CYTHON_ASSUME_SAFE_MACROS key = PyTuple_GET_ITEM(kwds, pos); #else key = PyTuple_GetItem(kwds, pos); if (!key) goto bad; #endif value = kwvalues[pos]; pos++; } else { if (!PyDict_Next(kwds, &pos, &key, &value)) break; #if CYTHON_AVOID_BORROWED_REFS Py_INCREF(key); #endif } name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; #if CYTHON_AVOID_BORROWED_REFS Py_INCREF(value); Py_DECREF(key); #endif key = NULL; value = NULL; continue; } #if !CYTHON_AVOID_BORROWED_REFS Py_INCREF(key); #endif Py_INCREF(value); name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; #if CYTHON_AVOID_BORROWED_REFS value = NULL; #endif break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = ( #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**name, key) ); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; #if CYTHON_AVOID_BORROWED_REFS value = NULL; #endif break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } Py_XDECREF(key); Py_XDECREF(value); return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: #if PY_MAJOR_VERSION < 3 PyErr_Format(PyExc_TypeError, "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else PyErr_Format(PyExc_TypeError, "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: Py_XDECREF(key); Py_XDECREF(value); return -1; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = Py_TYPE(func)->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); #if PY_MAJOR_VERSION < 3 if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; #else if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) return NULL; #endif result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = __Pyx_PyFrame_GetLocalsplus(f); for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; #if PY_MAJOR_VERSION < 3 if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { return NULL; } #else if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { return NULL; } #endif if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); self = __Pyx_CyOrPyCFunction_GET_SELF(func); #if PY_MAJOR_VERSION < 3 if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; #else if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) return NULL; #endif result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectFastCall */ #if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { PyObject *argstuple; PyObject *result = 0; size_t i; argstuple = PyTuple_New((Py_ssize_t)nargs); if (unlikely(!argstuple)) return NULL; for (i = 0; i < nargs; i++) { Py_INCREF(args[i]); if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; } result = __Pyx_PyObject_Call(func, argstuple, kwargs); bad: Py_DECREF(argstuple); return result; } #endif static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); #if CYTHON_COMPILING_IN_CPYTHON if (nargs == 0 && kwargs == NULL) { if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) return __Pyx_PyObject_CallMethO(func, NULL); } else if (nargs == 1 && kwargs == NULL) { if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) return __Pyx_PyObject_CallMethO(func, args[0]); } #endif #if PY_VERSION_HEX < 0x030800B1 #if CYTHON_FAST_PYCCALL if (PyCFunction_Check(func)) { if (kwargs) { return _PyCFunction_FastCallDict(func, args, nargs, kwargs); } else { return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); } } #if PY_VERSION_HEX >= 0x030700A1 if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); } #endif #endif #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); } #endif #endif if (kwargs == NULL) { #if CYTHON_VECTORCALL #if PY_VERSION_HEX < 0x03090000 vectorcallfunc f = _PyVectorcall_Function(func); #else vectorcallfunc f = PyVectorcall_Function(func); #endif if (f) { return f(func, args, (size_t)nargs, NULL); } #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL if (__Pyx_CyFunction_CheckExact(func)) { __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); if (f) return f(func, args, (size_t)nargs, NULL); } #endif } if (nargs == 0) { return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); } #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); #else return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); #endif } /* PyObjectCallNoArg */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { PyObject *arg[2] = {NULL, NULL}; return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } /* PyDictVersioning */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; } static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { PyObject **dictptr = NULL; Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; if (offset) { #if CYTHON_COMPILING_IN_CPYTHON dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); #else dictptr = _PyObject_GetDictPtr(obj); #endif } return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; } static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { PyObject *dict = Py_TYPE(obj)->tp_dict; if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) return 0; return obj_dict_version == __Pyx_get_object_dict_version(obj); } #endif /* GetModuleGlobalName */ #if CYTHON_USE_DICT_VERSIONS static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) #else static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) #endif { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } else if (unlikely(PyErr_Occurred())) { return NULL; } #elif CYTHON_COMPILING_IN_LIMITED_API if (unlikely(!__pyx_m)) { return NULL; } result = PyObject_GetAttr(__pyx_m, name); if (likely(result)) { return result; } #else result = PyDict_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } #endif #else result = PyObject_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } PyErr_Clear(); #endif return __Pyx_GetBuiltinName(name); } /* ArgTypeTest */ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) { __Pyx_TypeName type_name; __Pyx_TypeName obj_type_name; if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } else if (exact) { #if PY_MAJOR_VERSION == 2 if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; #endif } else { if (likely(__Pyx_TypeCheck(obj, type))) return 1; } type_name = __Pyx_PyType_GetName(type); obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); __Pyx_DECREF_TypeName(type_name); __Pyx_DECREF_TypeName(obj_type_name); return 0; } /* FixUpExtensionType */ #if CYTHON_USE_TYPE_SPECS static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { #if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API CYTHON_UNUSED_VAR(spec); CYTHON_UNUSED_VAR(type); #else const PyType_Slot *slot = spec->slots; while (slot && slot->slot && slot->slot != Py_tp_members) slot++; if (slot && slot->slot == Py_tp_members) { int changed = 0; #if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) const #endif PyMemberDef *memb = (PyMemberDef*) slot->pfunc; while (memb && memb->name) { if (memb->name[0] == '_' && memb->name[1] == '_') { #if PY_VERSION_HEX < 0x030900b1 if (strcmp(memb->name, "__weaklistoffset__") == 0) { assert(memb->type == T_PYSSIZET); assert(memb->flags == READONLY); type->tp_weaklistoffset = memb->offset; changed = 1; } else if (strcmp(memb->name, "__dictoffset__") == 0) { assert(memb->type == T_PYSSIZET); assert(memb->flags == READONLY); type->tp_dictoffset = memb->offset; changed = 1; } #if CYTHON_METH_FASTCALL else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { assert(memb->type == T_PYSSIZET); assert(memb->flags == READONLY); #if PY_VERSION_HEX >= 0x030800b4 type->tp_vectorcall_offset = memb->offset; #else type->tp_print = (printfunc) memb->offset; #endif changed = 1; } #endif #else if ((0)); #endif #if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON else if (strcmp(memb->name, "__module__") == 0) { PyObject *descr; assert(memb->type == T_OBJECT); assert(memb->flags == 0 || memb->flags == READONLY); descr = PyDescr_NewMember(type, memb); if (unlikely(!descr)) return -1; if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { Py_DECREF(descr); return -1; } Py_DECREF(descr); changed = 1; } #endif } memb++; } if (changed) PyType_Modified(type); } #endif return 0; } #endif /* FetchSharedCythonModule */ static PyObject *__Pyx_FetchSharedCythonABIModule(void) { return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); } /* FetchCommonType */ static int __Pyx_VerifyCachedType(PyObject *cached_type, const char *name, Py_ssize_t basicsize, Py_ssize_t expected_basicsize) { if (!PyType_Check(cached_type)) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s is not a type object", name); return -1; } if (basicsize != expected_basicsize) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s has the wrong size, try recompiling", name); return -1; } return 0; } #if !CYTHON_USE_TYPE_SPECS static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* abi_module; const char* object_name; PyTypeObject *cached_type = NULL; abi_module = __Pyx_FetchSharedCythonABIModule(); if (!abi_module) return NULL; object_name = strrchr(type->tp_name, '.'); object_name = object_name ? object_name+1 : type->tp_name; cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); if (cached_type) { if (__Pyx_VerifyCachedType( (PyObject *)cached_type, object_name, cached_type->tp_basicsize, type->tp_basicsize) < 0) { goto bad; } goto done; } if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); if (PyType_Ready(type) < 0) goto bad; if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) goto bad; Py_INCREF(type); cached_type = type; done: Py_DECREF(abi_module); return cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } #else static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { PyObject *abi_module, *cached_type = NULL; const char* object_name = strrchr(spec->name, '.'); object_name = object_name ? object_name+1 : spec->name; abi_module = __Pyx_FetchSharedCythonABIModule(); if (!abi_module) return NULL; cached_type = PyObject_GetAttrString(abi_module, object_name); if (cached_type) { Py_ssize_t basicsize; #if CYTHON_COMPILING_IN_LIMITED_API PyObject *py_basicsize; py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); if (unlikely(!py_basicsize)) goto bad; basicsize = PyLong_AsSsize_t(py_basicsize); Py_DECREF(py_basicsize); py_basicsize = 0; if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; #else basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; #endif if (__Pyx_VerifyCachedType( cached_type, object_name, basicsize, spec->basicsize) < 0) { goto bad; } goto done; } if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); CYTHON_UNUSED_VAR(module); cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); if (unlikely(!cached_type)) goto bad; if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; done: Py_DECREF(abi_module); assert(cached_type == NULL || PyType_Check(cached_type)); return (PyTypeObject *) cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } #endif /* GetTopmostException */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate) { _PyErr_StackItem *exc_info = tstate->exc_info; while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && exc_info->previous_item != NULL) { exc_info = exc_info->previous_item; } return exc_info; } #endif /* SaveResetException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); PyObject *exc_value = exc_info->exc_value; if (exc_value == NULL || exc_value == Py_None) { *value = NULL; *type = NULL; *tb = NULL; } else { *value = exc_value; Py_INCREF(*value); *type = (PyObject*) Py_TYPE(exc_value); Py_INCREF(*type); *tb = PyException_GetTraceback(exc_value); } #elif CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); *type = exc_info->exc_type; *value = exc_info->exc_value; *tb = exc_info->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); #else *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); #endif } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 _PyErr_StackItem *exc_info = tstate->exc_info; PyObject *tmp_value = exc_info->exc_value; exc_info->exc_value = value; Py_XDECREF(tmp_value); Py_XDECREF(type); Py_XDECREF(tb); #else PyObject *tmp_type, *tmp_value, *tmp_tb; #if CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = type; exc_info->exc_value = value; exc_info->exc_traceback = tb; #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #endif } #endif /* SwapException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 _PyErr_StackItem *exc_info = tstate->exc_info; tmp_value = exc_info->exc_value; exc_info->exc_value = *value; if (tmp_value == NULL || tmp_value == Py_None) { Py_XDECREF(tmp_value); tmp_value = NULL; tmp_type = NULL; tmp_tb = NULL; } else { tmp_type = (PyObject*) Py_TYPE(tmp_value); Py_INCREF(tmp_type); #if CYTHON_COMPILING_IN_CPYTHON tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; Py_XINCREF(tmp_tb); #else tmp_tb = PyException_GetTraceback(tmp_value); #endif } #elif CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = *type; exc_info->exc_value = *value; exc_info->exc_traceback = *tb; #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = *type; tstate->exc_value = *value; tstate->exc_traceback = *tb; #endif *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); PyErr_SetExcInfo(*type, *value, *tb); *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #endif /* PyObjectCall2Args */ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { PyObject *args[3] = {NULL, arg1, arg2}; return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } /* PyObjectCallOneArg */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *args[2] = {NULL, arg}; return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } /* PyObjectGetMethod */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { PyObject *attr; #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP __Pyx_TypeName type_name; PyTypeObject *tp = Py_TYPE(obj); PyObject *descr; descrgetfunc f = NULL; PyObject **dictptr, *dict; int meth_found = 0; assert (*method == NULL); if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { attr = __Pyx_PyObject_GetAttrStr(obj, name); goto try_unpack; } if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { return 0; } descr = _PyType_Lookup(tp, name); if (likely(descr != NULL)) { Py_INCREF(descr); #if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) #elif PY_MAJOR_VERSION >= 3 #ifdef __Pyx_CyFunction_USED if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) #else if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) #endif #else #ifdef __Pyx_CyFunction_USED if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) #else if (likely(PyFunction_Check(descr))) #endif #endif { meth_found = 1; } else { f = Py_TYPE(descr)->tp_descr_get; if (f != NULL && PyDescr_IsData(descr)) { attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); Py_DECREF(descr); goto try_unpack; } } } dictptr = _PyObject_GetDictPtr(obj); if (dictptr != NULL && (dict = *dictptr) != NULL) { Py_INCREF(dict); attr = __Pyx_PyDict_GetItemStr(dict, name); if (attr != NULL) { Py_INCREF(attr); Py_DECREF(dict); Py_XDECREF(descr); goto try_unpack; } Py_DECREF(dict); } if (meth_found) { *method = descr; return 1; } if (f != NULL) { attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); Py_DECREF(descr); goto try_unpack; } if (likely(descr != NULL)) { *method = descr; return 0; } type_name = __Pyx_PyType_GetName(tp); PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", type_name, name); #else "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", type_name, PyString_AS_STRING(name)); #endif __Pyx_DECREF_TypeName(type_name); return 0; #else attr = __Pyx_PyObject_GetAttrStr(obj, name); goto try_unpack; #endif try_unpack: #if CYTHON_UNPACK_METHODS if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { PyObject *function = PyMethod_GET_FUNCTION(attr); Py_INCREF(function); Py_DECREF(attr); *method = function; return 1; } #endif *method = attr; return 0; } /* PyObjectCallMethod1 */ #if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); Py_DECREF(method); return result; } #endif static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { #if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 PyObject *args[2] = {obj, arg}; (void) __Pyx_PyObject_GetMethod; (void) __Pyx_PyObject_CallOneArg; (void) __Pyx_PyObject_Call2Args; return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); #else PyObject *method = NULL, *result; int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); if (likely(is_method)) { result = __Pyx_PyObject_Call2Args(method, obj, arg); Py_DECREF(method); return result; } if (unlikely(!method)) return NULL; return __Pyx__PyObject_CallMethod1(method, arg); #endif } /* CoroutineBase */ #include #if PY_VERSION_HEX >= 0x030b00a6 #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; CYTHON_UNUSED_VAR(__pyx_tstate); __Pyx_ErrFetch(&et, &ev, &tb); if (!et) { Py_XDECREF(tb); Py_XDECREF(ev); Py_INCREF(Py_None); *pvalue = Py_None; return 0; } if (likely(et == PyExc_StopIteration)) { if (!ev) { Py_INCREF(Py_None); value = Py_None; } #if PY_VERSION_HEX >= 0x030300A0 else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); } #endif else if (unlikely(PyTuple_Check(ev))) { if (PyTuple_GET_SIZE(ev) >= 1) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS value = PyTuple_GET_ITEM(ev, 0); Py_INCREF(value); #else value = PySequence_ITEM(ev, 0); #endif } else { Py_INCREF(Py_None); value = Py_None; } Py_DECREF(ev); } else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { value = ev; } if (likely(value)) { Py_XDECREF(tb); Py_DECREF(et); *pvalue = value; return 0; } } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { __Pyx_ErrRestore(et, ev, tb); return -1; } PyErr_NormalizeException(&et, &ev, &tb); if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { __Pyx_ErrRestore(et, ev, tb); return -1; } Py_XDECREF(tb); Py_DECREF(et); #if PY_VERSION_HEX >= 0x030300A0 value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); #else { PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); Py_DECREF(ev); if (likely(args)) { value = PySequence_GetItem(args, 0); Py_DECREF(args); } if (unlikely(!value)) { __Pyx_ErrRestore(NULL, NULL, NULL); Py_INCREF(Py_None); value = Py_None; } } #endif *pvalue = value; return 0; } static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { #if PY_VERSION_HEX >= 0x030B00a4 Py_CLEAR(exc_state->exc_value); #else PyObject *t, *v, *tb; t = exc_state->exc_type; v = exc_state->exc_value; tb = exc_state->exc_traceback; exc_state->exc_type = NULL; exc_state->exc_value = NULL; exc_state->exc_traceback = NULL; Py_XDECREF(t); Py_XDECREF(v); Py_XDECREF(tb); #endif } #define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { const char *msg; CYTHON_MAYBE_UNUSED_VAR(gen); if ((0)) { #ifdef __Pyx_Coroutine_USED } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { msg = "coroutine already executing"; #endif #ifdef __Pyx_AsyncGen_USED } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { msg = "async generator already executing"; #endif } else { msg = "generator already executing"; } PyErr_SetString(PyExc_ValueError, msg); } #define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) static void __Pyx__Coroutine_NotStartedError(PyObject *gen) { const char *msg; CYTHON_MAYBE_UNUSED_VAR(gen); if ((0)) { #ifdef __Pyx_Coroutine_USED } else if (__Pyx_Coroutine_Check(gen)) { msg = "can't send non-None value to a just-started coroutine"; #endif #ifdef __Pyx_AsyncGen_USED } else if (__Pyx_AsyncGen_CheckExact(gen)) { msg = "can't send non-None value to a just-started async generator"; #endif } else { msg = "can't send non-None value to a just-started generator"; } PyErr_SetString(PyExc_TypeError, msg); } #define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { CYTHON_MAYBE_UNUSED_VAR(gen); CYTHON_MAYBE_UNUSED_VAR(closing); #ifdef __Pyx_Coroutine_USED if (!closing && __Pyx_Coroutine_Check(gen)) { PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); } else #endif if (value) { #ifdef __Pyx_AsyncGen_USED if (__Pyx_AsyncGen_CheckExact(gen)) PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); else #endif PyErr_SetNone(PyExc_StopIteration); } } static PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { __Pyx_PyThreadState_declare PyThreadState *tstate; __Pyx_ExcInfoStruct *exc_state; PyObject *retval; assert(!self->is_running); if (unlikely(self->resume_label == 0)) { if (unlikely(value && value != Py_None)) { return __Pyx_Coroutine_NotStartedError((PyObject*)self); } } if (unlikely(self->resume_label == -1)) { return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); } #if CYTHON_FAST_THREAD_STATE __Pyx_PyThreadState_assign tstate = __pyx_tstate; #else tstate = __Pyx_PyThreadState_Current; #endif exc_state = &self->gi_exc_state; if (exc_state->exc_value) { #if CYTHON_COMPILING_IN_PYPY #else PyObject *exc_tb; #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON exc_tb = PyException_GetTraceback(exc_state->exc_value); #elif PY_VERSION_HEX >= 0x030B00a4 exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; #else exc_tb = exc_state->exc_traceback; #endif if (exc_tb) { PyTracebackObject *tb = (PyTracebackObject *) exc_tb; PyFrameObject *f = tb->tb_frame; assert(f->f_back == NULL); #if PY_VERSION_HEX >= 0x030B00A1 f->f_back = PyThreadState_GetFrame(tstate); #else Py_XINCREF(tstate->frame); f->f_back = tstate->frame; #endif #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON Py_DECREF(exc_tb); #endif } #endif } #if CYTHON_USE_EXC_INFO_STACK exc_state->previous_item = tstate->exc_info; tstate->exc_info = exc_state; #else if (exc_state->exc_type) { __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); } else { __Pyx_Coroutine_ExceptionClear(exc_state); __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); } #endif self->is_running = 1; retval = self->body(self, tstate, value); self->is_running = 0; #if CYTHON_USE_EXC_INFO_STACK exc_state = &self->gi_exc_state; tstate->exc_info = exc_state->previous_item; exc_state->previous_item = NULL; __Pyx_Coroutine_ResetFrameBackpointer(exc_state); #endif return retval; } static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { #if CYTHON_COMPILING_IN_PYPY CYTHON_UNUSED_VAR(exc_state); #else PyObject *exc_tb; #if PY_VERSION_HEX >= 0x030B00a4 if (!exc_state->exc_value) return; exc_tb = PyException_GetTraceback(exc_state->exc_value); #else exc_tb = exc_state->exc_traceback; #endif if (likely(exc_tb)) { PyTracebackObject *tb = (PyTracebackObject *) exc_tb; PyFrameObject *f = tb->tb_frame; Py_CLEAR(f->f_back); #if PY_VERSION_HEX >= 0x030B00a4 Py_DECREF(exc_tb); #endif } #endif } static CYTHON_INLINE PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) { CYTHON_MAYBE_UNUSED_VAR(gen); if (unlikely(!retval)) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (!__Pyx_PyErr_Occurred()) { PyObject *exc = PyExc_StopIteration; #ifdef __Pyx_AsyncGen_USED if (__Pyx_AsyncGen_CheckExact(gen)) exc = __Pyx_PyExc_StopAsyncIteration; #endif __Pyx_PyErr_SetNone(exc); } } return retval; } #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) static CYTHON_INLINE PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { #if PY_VERSION_HEX <= 0x030A00A1 return _PyGen_Send(gen, arg); #else PyObject *result; if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { if (PyAsyncGen_CheckExact(gen)) { assert(result == Py_None); PyErr_SetNone(PyExc_StopAsyncIteration); } else if (result == Py_None) { PyErr_SetNone(PyExc_StopIteration); } else { #if PY_VERSION_HEX < 0x030d00A1 _PyGen_SetStopIterationValue(result); #else if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { PyErr_SetObject(PyExc_StopIteration, result); } else { PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); if (likely(exc != NULL)) { PyErr_SetObject(PyExc_StopIteration, exc); Py_DECREF(exc); } } #endif } Py_DECREF(result); result = NULL; } return result; #endif } #endif static CYTHON_INLINE PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { PyObject *ret; PyObject *val = NULL; __Pyx_Coroutine_Undelegate(gen); __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); ret = __Pyx_Coroutine_SendEx(gen, val, 0); Py_XDECREF(val); return ret; } static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { PyObject *retval; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; if (unlikely(gen->is_running)) return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { PyObject *ret; gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_Check(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_PyAsyncGenASend_CheckExact(yf)) { ret = __Pyx_async_gen_asend_send(yf, value); } else #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) if (PyGen_CheckExact(yf)) { ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); } else #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) if (PyCoro_CheckExact(yf)) { ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); } else #endif { if (value == Py_None) ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); else ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); } gen->is_running = 0; if (likely(ret)) { return ret; } retval = __Pyx_Coroutine_FinishDelegation(gen); } else { retval = __Pyx_Coroutine_SendEx(gen, value, 0); } return __Pyx_Coroutine_MethodReturn(self, retval); } static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { PyObject *retval = NULL; int err = 0; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_Check(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL); if (!retval) return -1; } else #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_PyAsyncGenASend_CheckExact(yf)) { retval = __Pyx_async_gen_asend_close(yf, NULL); } else if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { retval = __Pyx_async_gen_athrow_close(yf, NULL); } else #endif { PyObject *meth; gen->is_running = 1; meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close); if (unlikely(!meth)) { if (unlikely(PyErr_Occurred())) { PyErr_WriteUnraisable(yf); } } else { retval = __Pyx_PyObject_CallNoArg(meth); Py_DECREF(meth); if (unlikely(!retval)) err = -1; } gen->is_running = 0; } Py_XDECREF(retval); return err; } static PyObject *__Pyx_Generator_Next(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; if (unlikely(gen->is_running)) return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { PyObject *ret; gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Generator_Next(yf); } else #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) if (PyGen_CheckExact(yf)) { ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_Check(yf)) { ret = __Pyx_Coroutine_Send(yf, Py_None); } else #endif ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf); gen->is_running = 0; if (likely(ret)) { return ret; } return __Pyx_Coroutine_FinishDelegation(gen); } return __Pyx_Coroutine_SendEx(gen, Py_None, 0); } static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { CYTHON_UNUSED_VAR(arg); return __Pyx_Coroutine_Close(self); } static PyObject *__Pyx_Coroutine_Close(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *retval, *raised_exception; PyObject *yf = gen->yieldfrom; int err = 0; if (unlikely(gen->is_running)) return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { Py_INCREF(yf); err = __Pyx_Coroutine_CloseIter(gen, yf); __Pyx_Coroutine_Undelegate(gen); Py_DECREF(yf); } if (err == 0) PyErr_SetNone(PyExc_GeneratorExit); retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); if (unlikely(retval)) { const char *msg; Py_DECREF(retval); if ((0)) { #ifdef __Pyx_Coroutine_USED } else if (__Pyx_Coroutine_Check(self)) { msg = "coroutine ignored GeneratorExit"; #endif #ifdef __Pyx_AsyncGen_USED } else if (__Pyx_AsyncGen_CheckExact(self)) { #if PY_VERSION_HEX < 0x03060000 msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; #else msg = "async generator ignored GeneratorExit"; #endif #endif } else { msg = "generator ignored GeneratorExit"; } PyErr_SetString(PyExc_RuntimeError, msg); return NULL; } raised_exception = PyErr_Occurred(); if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { if (raised_exception) PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } return NULL; } static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, PyObject *args, int close_on_genexit) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *yf = gen->yieldfrom; if (unlikely(gen->is_running)) return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { PyObject *ret; Py_INCREF(yf); if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { int err = __Pyx_Coroutine_CloseIter(gen, yf); Py_DECREF(yf); __Pyx_Coroutine_Undelegate(gen); if (err < 0) return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); goto throw_here; } gen->is_running = 1; if (0 #ifdef __Pyx_Generator_USED || __Pyx_Generator_CheckExact(yf) #endif #ifdef __Pyx_Coroutine_USED || __Pyx_Coroutine_Check(yf) #endif ) { ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); #ifdef __Pyx_Coroutine_USED } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); #endif } else { PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw); if (unlikely(!meth)) { Py_DECREF(yf); if (unlikely(PyErr_Occurred())) { gen->is_running = 0; return NULL; } __Pyx_Coroutine_Undelegate(gen); gen->is_running = 0; goto throw_here; } if (likely(args)) { ret = __Pyx_PyObject_Call(meth, args, NULL); } else { PyObject *cargs[4] = {NULL, typ, val, tb}; ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } Py_DECREF(meth); } gen->is_running = 0; Py_DECREF(yf); if (!ret) { ret = __Pyx_Coroutine_FinishDelegation(gen); } return __Pyx_Coroutine_MethodReturn(self, ret); } throw_here: __Pyx_Raise(typ, val, tb, NULL); return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); } static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { PyObject *typ; PyObject *val = NULL; PyObject *tb = NULL; if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))) return NULL; return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); } static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { #if PY_VERSION_HEX >= 0x030B00a4 Py_VISIT(exc_state->exc_value); #else Py_VISIT(exc_state->exc_type); Py_VISIT(exc_state->exc_value); Py_VISIT(exc_state->exc_traceback); #endif return 0; } static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { Py_VISIT(gen->closure); Py_VISIT(gen->classobj); Py_VISIT(gen->yieldfrom); return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); } static int __Pyx_Coroutine_clear(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_CLEAR(gen->closure); Py_CLEAR(gen->classobj); Py_CLEAR(gen->yieldfrom); __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); #ifdef __Pyx_AsyncGen_USED if (__Pyx_AsyncGen_CheckExact(self)) { Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); } #endif Py_CLEAR(gen->gi_code); Py_CLEAR(gen->gi_frame); Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname); Py_CLEAR(gen->gi_modulename); return 0; } static void __Pyx_Coroutine_dealloc(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); if (gen->resume_label >= 0) { PyObject_GC_Track(self); #if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE if (unlikely(PyObject_CallFinalizerFromDealloc(self))) #else Py_TYPE(gen)->tp_del(self); if (unlikely(Py_REFCNT(self) > 0)) #endif { return; } PyObject_GC_UnTrack(self); } #ifdef __Pyx_AsyncGen_USED if (__Pyx_AsyncGen_CheckExact(self)) { /* We have to handle this case for asynchronous generators right here, because this code has to be between UNTRACK and GC_Del. */ Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); } #endif __Pyx_Coroutine_clear(self); __Pyx_PyHeapTypeObject_GC_Del(gen); } static void __Pyx_Coroutine_del(PyObject *self) { PyObject *error_type, *error_value, *error_traceback; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; __Pyx_PyThreadState_declare if (gen->resume_label < 0) { return; } #if !CYTHON_USE_TP_FINALIZE assert(self->ob_refcnt == 0); __Pyx_SET_REFCNT(self, 1); #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); #ifdef __Pyx_AsyncGen_USED if (__Pyx_AsyncGen_CheckExact(self)) { __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; PyObject *finalizer = agen->ag_finalizer; if (finalizer && !agen->ag_closed) { PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); if (unlikely(!res)) { PyErr_WriteUnraisable(self); } else { Py_DECREF(res); } __Pyx_ErrRestore(error_type, error_value, error_traceback); return; } } #endif if (unlikely(gen->resume_label == 0 && !error_value)) { #ifdef __Pyx_Coroutine_USED #ifdef __Pyx_Generator_USED if (!__Pyx_Generator_CheckExact(self)) #endif { PyObject_GC_UnTrack(self); #if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) PyErr_WriteUnraisable(self); #else {PyObject *msg; char *cmsg; #if CYTHON_COMPILING_IN_PYPY msg = NULL; cmsg = (char*) "coroutine was never awaited"; #else char *cname; PyObject *qualname; qualname = gen->gi_qualname; cname = PyString_AS_STRING(qualname); msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); if (unlikely(!msg)) { PyErr_Clear(); cmsg = (char*) "coroutine was never awaited"; } else { cmsg = PyString_AS_STRING(msg); } #endif if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) PyErr_WriteUnraisable(self); Py_XDECREF(msg);} #endif PyObject_GC_Track(self); } #endif } else { PyObject *res = __Pyx_Coroutine_Close(self); if (unlikely(!res)) { if (PyErr_Occurred()) PyErr_WriteUnraisable(self); } else { Py_DECREF(res); } } __Pyx_ErrRestore(error_type, error_value, error_traceback); #if !CYTHON_USE_TP_FINALIZE assert(Py_REFCNT(self) > 0); if (likely(--self->ob_refcnt == 0)) { return; } { Py_ssize_t refcnt = Py_REFCNT(self); _Py_NewReference(self); __Pyx_SET_REFCNT(self, refcnt); } #if CYTHON_COMPILING_IN_CPYTHON assert(PyType_IS_GC(Py_TYPE(self)) && _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); _Py_DEC_REFTOTAL; #endif #ifdef COUNT_ALLOCS --Py_TYPE(self)->tp_frees; --Py_TYPE(self)->tp_allocs; #endif #endif } static PyObject * __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) { PyObject *name = self->gi_name; CYTHON_UNUSED_VAR(context); if (unlikely(!name)) name = Py_None; Py_INCREF(name); return name; } static int __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__name__ must be set to a string object"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(self->gi_name, value); return 0; } static PyObject * __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) { PyObject *name = self->gi_qualname; CYTHON_UNUSED_VAR(context); if (unlikely(!name)) name = Py_None; Py_INCREF(name); return name; } static int __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__qualname__ must be set to a string object"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(self->gi_qualname, value); return 0; } static PyObject * __Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) { PyObject *frame = self->gi_frame; CYTHON_UNUSED_VAR(context); if (!frame) { if (unlikely(!self->gi_code)) { Py_RETURN_NONE; } frame = (PyObject *) PyFrame_New( PyThreadState_Get(), /*PyThreadState *tstate,*/ (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (unlikely(!frame)) return NULL; self->gi_frame = frame; } Py_INCREF(frame); return frame; } static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); if (unlikely(!gen)) return NULL; return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); } static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { gen->body = body; gen->closure = closure; Py_XINCREF(closure); gen->is_running = 0; gen->resume_label = 0; gen->classobj = NULL; gen->yieldfrom = NULL; #if PY_VERSION_HEX >= 0x030B00a4 gen->gi_exc_state.exc_value = NULL; #else gen->gi_exc_state.exc_type = NULL; gen->gi_exc_state.exc_value = NULL; gen->gi_exc_state.exc_traceback = NULL; #endif #if CYTHON_USE_EXC_INFO_STACK gen->gi_exc_state.previous_item = NULL; #endif gen->gi_weakreflist = NULL; Py_XINCREF(qualname); gen->gi_qualname = qualname; Py_XINCREF(name); gen->gi_name = name; Py_XINCREF(module_name); gen->gi_modulename = module_name; Py_XINCREF(code); gen->gi_code = code; gen->gi_frame = NULL; PyObject_GC_Track(gen); return gen; } /* PyObject_GenericGetAttrNoDict */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", type_name, attr_name); #else "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", type_name, PyString_AS_STRING(attr_name)); #endif __Pyx_DECREF_TypeName(type_name); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { PyObject *descr; PyTypeObject *tp = Py_TYPE(obj); if (unlikely(!PyString_Check(attr_name))) { return PyObject_GenericGetAttr(obj, attr_name); } assert(!tp->tp_dictoffset); descr = _PyType_Lookup(tp, attr_name); if (unlikely(!descr)) { return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); } Py_INCREF(descr); #if PY_MAJOR_VERSION < 3 if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) #endif { descrgetfunc f = Py_TYPE(descr)->tp_descr_get; if (unlikely(f)) { PyObject *res = f(descr, obj, (PyObject *)tp); Py_DECREF(descr); return res; } } return descr; } #endif /* PatchModuleWithCoroutine */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) int result; PyObject *globals, *result_obj; globals = PyDict_New(); if (unlikely(!globals)) goto ignore; result = PyDict_SetItemString(globals, "_cython_coroutine_type", #ifdef __Pyx_Coroutine_USED (PyObject*)__pyx_CoroutineType); #else Py_None); #endif if (unlikely(result < 0)) goto ignore; result = PyDict_SetItemString(globals, "_cython_generator_type", #ifdef __Pyx_Generator_USED (PyObject*)__pyx_GeneratorType); #else Py_None); #endif if (unlikely(result < 0)) goto ignore; if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; result_obj = PyRun_String(py_code, Py_file_input, globals, globals); if (unlikely(!result_obj)) goto ignore; Py_DECREF(result_obj); Py_DECREF(globals); return module; ignore: Py_XDECREF(globals); PyErr_WriteUnraisable(module); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { Py_DECREF(module); module = NULL; } #else py_code++; #endif return module; } /* PatchGeneratorABC */ #ifndef CYTHON_REGISTER_ABCS #define CYTHON_REGISTER_ABCS 1 #endif #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static PyObject* __Pyx_patch_abc_module(PyObject *module); static PyObject* __Pyx_patch_abc_module(PyObject *module) { module = __Pyx_Coroutine_patch_module( module, "" "if _cython_generator_type is not None:\n" " try: Generator = _module.Generator\n" " except AttributeError: pass\n" " else: Generator.register(_cython_generator_type)\n" "if _cython_coroutine_type is not None:\n" " try: Coroutine = _module.Coroutine\n" " except AttributeError: pass\n" " else: Coroutine.register(_cython_coroutine_type)\n" ); return module; } #endif static int __Pyx_patch_abc(void) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static int abc_patched = 0; if (CYTHON_REGISTER_ABCS && !abc_patched) { PyObject *module; module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); if (unlikely(!module)) { PyErr_WriteUnraisable(NULL); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, ((PY_MAJOR_VERSION >= 3) ? "Cython module failed to register with collections.abc module" : "Cython module failed to register with collections module"), 1) < 0)) { return -1; } } else { module = __Pyx_patch_abc_module(module); abc_patched = 1; if (unlikely(!module)) return -1; Py_DECREF(module); } module = PyImport_ImportModule("backports_abc"); if (module) { module = __Pyx_patch_abc_module(module); Py_XDECREF(module); } if (!module) { PyErr_Clear(); } } #else if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); #endif return 0; } /* Coroutine */ static void __Pyx_CoroutineAwait_dealloc(PyObject *self) { PyObject_GC_UnTrack(self); Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine); __Pyx_PyHeapTypeObject_GC_Del(self); } static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) { Py_VISIT(self->coroutine); return 0; } static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) { Py_CLEAR(self->coroutine); return 0; } static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) { return __Pyx_Generator_Next(self->coroutine); } static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) { return __Pyx_Coroutine_Send(self->coroutine, value); } static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) { return __Pyx_Coroutine_Throw(self->coroutine, args); } static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) { CYTHON_UNUSED_VAR(arg); return __Pyx_Coroutine_Close(self->coroutine); } static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) { Py_INCREF(self); return self; } #if !CYTHON_COMPILING_IN_PYPY static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { CYTHON_UNUSED_VAR(type); CYTHON_UNUSED_VAR(args); CYTHON_UNUSED_VAR(kwargs); PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead"); return NULL; } #endif static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) { CYTHON_UNUSED_VAR(arg); PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object", Py_TYPE(self)->tp_name); return NULL; } static PyMethodDef __pyx_CoroutineAwait_methods[] = { {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS, (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")}, {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS, (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0}, {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_CoroutineAwaitType_slots[] = { {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc}, {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse}, {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear}, #if !CYTHON_COMPILING_IN_PYPY {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new}, #endif {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods}, {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self}, {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next}, {0, 0}, }; static PyType_Spec __pyx_CoroutineAwaitType_spec = { __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", sizeof(__pyx_CoroutineAwaitObject), 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, __pyx_CoroutineAwaitType_slots }; #else static PyTypeObject __pyx_CoroutineAwaitType_type = { PyVarObject_HEAD_INIT(0, 0) __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper", sizeof(__pyx_CoroutineAwaitObject), 0, (destructor) __Pyx_CoroutineAwait_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, PyDoc_STR("A wrapper object implementing __await__ for coroutines."), (traverseproc) __Pyx_CoroutineAwait_traverse, (inquiry) __Pyx_CoroutineAwait_clear, 0, 0, __Pyx_CoroutineAwait_self, (iternextfunc) __Pyx_CoroutineAwait_Next, __pyx_CoroutineAwait_methods, 0 , 0 , 0, 0, 0, 0, 0, 0, 0, #if !CYTHON_COMPILING_IN_PYPY __Pyx_CoroutineAwait_no_new, #else 0, #endif 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, #endif #if __PYX_NEED_TP_PRINT_SLOT 0, #endif #if PY_VERSION_HEX >= 0x030C0000 0, #endif #if PY_VERSION_HEX >= 0x030d00A4 0, #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, #endif }; #endif #if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) { __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType); if (unlikely(!await)) return NULL; Py_INCREF(coroutine); await->coroutine = coroutine; PyObject_GC_Track(await); return (PyObject*)await; } #endif #if PY_VERSION_HEX < 0x030500B1 static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) { CYTHON_UNUSED_VAR(arg); return __Pyx__Coroutine_await(coroutine); } #endif #if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) { if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) { PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine"); return NULL; } return __Pyx__Coroutine_await(coroutine); } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) { PyObject* result; switch (op) { case Py_EQ: result = (other == obj) ? Py_True : Py_False; break; case Py_NE: result = (other != obj) ? Py_True : Py_False; break; default: result = Py_NotImplemented; } Py_INCREF(result); return result; } #endif static PyMethodDef __pyx_Coroutine_methods[] = { {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")}, {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")}, #if PY_VERSION_HEX < 0x030500B1 {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS, (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")}, #endif {0, 0, 0, 0} }; static PyMemberDef __pyx_Coroutine_memberlist[] = { {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, (char*) PyDoc_STR("object being awaited, or None")}, {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, #if CYTHON_USE_TYPE_SPECS {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, #endif {0, 0, 0, 0, 0} }; static PyGetSetDef __pyx_Coroutine_getsets[] = { {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, (char*) PyDoc_STR("name of the coroutine"), 0}, {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, (char*) PyDoc_STR("qualified name of the coroutine"), 0}, {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL, (char*) PyDoc_STR("Frame of the coroutine"), 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_CoroutineType_slots[] = { {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, {Py_am_await, (void *)&__Pyx_Coroutine_await}, {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, {Py_tp_methods, (void *)__pyx_Coroutine_methods}, {Py_tp_members, (void *)__pyx_Coroutine_memberlist}, {Py_tp_getset, (void *)__pyx_Coroutine_getsets}, {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict}, #if CYTHON_USE_TP_FINALIZE {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, #endif {0, 0}, }; static PyType_Spec __pyx_CoroutineType_spec = { __PYX_TYPE_MODULE_PREFIX "coroutine", sizeof(__pyx_CoroutineObject), 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, __pyx_CoroutineType_slots }; #else #if CYTHON_USE_ASYNC_SLOTS static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = { __Pyx_Coroutine_await, 0, 0, #if PY_VERSION_HEX >= 0x030A00A3 0, #endif }; #endif static PyTypeObject __pyx_CoroutineType_type = { PyVarObject_HEAD_INIT(0, 0) __PYX_TYPE_MODULE_PREFIX "coroutine", sizeof(__pyx_CoroutineObject), 0, (destructor) __Pyx_Coroutine_dealloc, 0, 0, 0, #if CYTHON_USE_ASYNC_SLOTS &__pyx_Coroutine_as_async, #else 0, #endif 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, 0, (traverseproc) __Pyx_Coroutine_traverse, 0, #if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1 __Pyx_Coroutine_compare, #else 0, #endif offsetof(__pyx_CoroutineObject, gi_weakreflist), 0, 0, __pyx_Coroutine_methods, __pyx_Coroutine_memberlist, __pyx_Coroutine_getsets, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if CYTHON_USE_TP_FINALIZE 0, #else __Pyx_Coroutine_del, #endif 0, #if CYTHON_USE_TP_FINALIZE __Pyx_Coroutine_del, #elif PY_VERSION_HEX >= 0x030400a1 0, #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, #endif #if __PYX_NEED_TP_PRINT_SLOT 0, #endif #if PY_VERSION_HEX >= 0x030C0000 0, #endif #if PY_VERSION_HEX >= 0x030d00A4 0, #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, #endif }; #endif static int __pyx_Coroutine_init(PyObject *module) { CYTHON_MAYBE_UNUSED_VAR(module); #if CYTHON_USE_TYPE_SPECS __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL); #else __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type); #endif if (unlikely(!__pyx_CoroutineType)) return -1; #ifdef __Pyx_IterableCoroutine_USED if (unlikely(__pyx_IterableCoroutine_init(module) == -1)) return -1; #endif #if CYTHON_USE_TYPE_SPECS __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL); #else __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type); #endif if (unlikely(!__pyx_CoroutineAwaitType)) return -1; return 0; } /* GetAwaitIter */ static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) { #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_Check(o)) { return __Pyx_NewRef(o); } #endif return __Pyx__Coroutine_GetAwaitableIter(o); } static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) { #if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause) __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); _PyErr_FormatFromCause(PyExc_TypeError, "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); __Pyx_DECREF_TypeName(source_type_name); #elif PY_MAJOR_VERSION >= 3 PyObject *exc, *val, *val2, *tb; __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source)); assert(PyErr_Occurred()); PyErr_Fetch(&exc, &val, &tb); PyErr_NormalizeException(&exc, &val, &tb); if (tb != NULL) { PyException_SetTraceback(val, tb); Py_DECREF(tb); } Py_DECREF(exc); assert(!PyErr_Occurred()); PyErr_Format(PyExc_TypeError, "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name); __Pyx_DECREF_TypeName(source_type_name); PyErr_Fetch(&exc, &val2, &tb); PyErr_NormalizeException(&exc, &val2, &tb); Py_INCREF(val); PyException_SetCause(val2, val); PyException_SetContext(val2, val); PyErr_Restore(exc, val2, tb); #else CYTHON_UNUSED_VAR(source); #endif } static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) { PyObject *res; #if CYTHON_USE_ASYNC_SLOTS __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj); if (likely(am && am->am_await)) { res = (*am->am_await)(obj); } else #endif #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) if (PyCoro_CheckExact(obj)) { return __Pyx_NewRef(obj); } else #endif #if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE) #if PY_VERSION_HEX >= 0x030C00A6 if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) { #else if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) { #endif return __Pyx_NewRef(obj); } else #endif { PyObject *method = NULL; int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method); if (likely(is_method)) { res = __Pyx_PyObject_CallOneArg(method, obj); } else if (likely(method)) { res = __Pyx_PyObject_CallNoArg(method); } else goto slot_error; Py_DECREF(method); } if (unlikely(!res)) { __Pyx_Coroutine_AwaitableIterError(obj); goto bad; } if (unlikely(!PyIter_Check(res))) { __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res)); PyErr_Format(PyExc_TypeError, "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name); __Pyx_DECREF_TypeName(res_type_name); Py_CLEAR(res); } else { int is_coroutine = 0; #ifdef __Pyx_Coroutine_USED is_coroutine |= __Pyx_Coroutine_Check(res); #endif #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact) is_coroutine |= PyCoro_CheckExact(res); #endif if (unlikely(is_coroutine)) { /* __await__ must return an *iterator*, not a coroutine or another awaitable (see PEP 492) */ PyErr_SetString(PyExc_TypeError, "__await__() returned a coroutine"); Py_CLEAR(res); } } return res; slot_error: { __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); PyErr_Format(PyExc_TypeError, "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name); __Pyx_DECREF_TypeName(obj_type_name); } bad: return NULL; } /* CoroutineYieldFrom */ static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) { PyObject *retval; PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source); if (unlikely(!source_gen)) { return NULL; } if (__Pyx_Coroutine_Check(source_gen)) { retval = __Pyx_Generator_Next(source_gen); } else { retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen); } if (retval) { gen->yieldfrom = source_gen; return retval; } Py_DECREF(source_gen); return NULL; } static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) { PyObject *retval; if (__Pyx_Coroutine_Check(source)) { if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) { PyErr_SetString( PyExc_RuntimeError, "coroutine is being awaited already"); return NULL; } retval = __Pyx_Generator_Next(source); #ifdef __Pyx_AsyncGen_USED } else if (__pyx_PyAsyncGenASend_CheckExact(source)) { retval = __Pyx_async_gen_asend_iternext(source); #endif } else { return __Pyx__Coroutine_Yield_From_Generic(gen, source); } if (retval) { Py_INCREF(source); gen->yieldfrom = source; } return retval; } /* ExtTypeTest */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { __Pyx_TypeName obj_type_name; __Pyx_TypeName type_name; if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } if (likely(__Pyx_TypeCheck(obj, type))) return 1; obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); type_name = __Pyx_PyType_GetName(type); PyErr_Format(PyExc_TypeError, "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, obj_type_name, type_name); __Pyx_DECREF_TypeName(obj_type_name); __Pyx_DECREF_TypeName(type_name); return 0; } /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) #endif { PyObject *local_type = NULL, *local_value, *local_tb = NULL; #if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; #if PY_VERSION_HEX >= 0x030C00A6 local_value = tstate->current_exception; tstate->current_exception = 0; if (likely(local_value)) { local_type = (PyObject*) Py_TYPE(local_value); Py_INCREF(local_type); local_tb = PyException_GetTraceback(local_value); } #else local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #endif #else PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); #if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 if (unlikely(tstate->current_exception)) #elif CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) #endif goto bad; #if PY_MAJOR_VERSION >= 3 if (local_tb) { if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) goto bad; } #endif Py_XINCREF(local_tb); Py_XINCREF(local_type); Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE #if CYTHON_USE_EXC_INFO_STACK { _PyErr_StackItem *exc_info = tstate->exc_info; #if PY_VERSION_HEX >= 0x030B00a4 tmp_value = exc_info->exc_value; exc_info->exc_value = local_value; tmp_type = NULL; tmp_tb = NULL; Py_XDECREF(local_type); Py_XDECREF(local_tb); #else tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = local_type; exc_info->exc_value = local_value; exc_info->exc_traceback = local_tb; #endif } #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_SetExcInfo(local_type, local_value, local_tb); #endif return 0; bad: *type = 0; *value = 0; *tb = 0; Py_XDECREF(local_type); Py_XDECREF(local_value); Py_XDECREF(local_tb); return -1; } /* pep479 */ static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { PyObject *exc, *val, *tb, *cur_exc; __Pyx_PyThreadState_declare #ifdef __Pyx_StopAsyncIteration_USED int is_async_stopiteration = 0; #endif CYTHON_MAYBE_UNUSED_VAR(in_async_gen); cur_exc = PyErr_Occurred(); if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { #ifdef __Pyx_StopAsyncIteration_USED if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) { is_async_stopiteration = 1; } else #endif return; } __Pyx_PyThreadState_assign __Pyx_GetException(&exc, &val, &tb); Py_XDECREF(exc); Py_XDECREF(val); Py_XDECREF(tb); PyErr_SetString(PyExc_RuntimeError, #ifdef __Pyx_StopAsyncIteration_USED is_async_stopiteration ? "async generator raised StopAsyncIteration" : in_async_gen ? "async generator raised StopIteration" : #endif "generator raised StopIteration"); } /* StringJoin */ static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { (void) __Pyx_PyObject_CallMethod1; #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION < 3 return _PyString_Join(sep, values); #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 return _PyBytes_Join(sep, values); #else return __Pyx_PyObject_CallMethod1(sep, __pyx_n_s_join, values); #endif } /* GetItemInt */ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (unlikely(!j)) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyList_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyTuple_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; if (mm && mm->mp_subscript) { PyObject *r, *key = PyInt_FromSsize_t(i); if (unlikely(!key)) return NULL; r = mm->mp_subscript(o, key); Py_DECREF(key); return r; } if (likely(sm && sm->sq_item)) { if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { Py_ssize_t l = sm->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return sm->sq_item(o, i); } } #else if (is_list || !PyMapping_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { PyObject* exc_type; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign exc_type = __Pyx_PyErr_CurrentExceptionType(); if (unlikely(exc_type)) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) return -1; __Pyx_PyErr_Clear(); return 0; } return 0; } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } return __Pyx_IterFinish(); } /* GetAttr3 */ #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 static PyObject *__Pyx_GetAttr3Default(PyObject *d) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; __Pyx_PyErr_Clear(); Py_INCREF(d); return d; } #endif static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { PyObject *r; #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 int res = PyObject_GetOptionalAttr(o, n, &r); return (res != 0) ? r : __Pyx_NewRef(d); #else #if CYTHON_USE_TYPE_SLOTS if (likely(PyString_Check(n))) { r = __Pyx_PyObject_GetAttrStrNoError(o, n); if (unlikely(!r) && likely(!PyErr_Occurred())) { r = __Pyx_NewRef(d); } return r; } #endif r = PyObject_GetAttr(o, n); return (likely(r)) ? r : __Pyx_GetAttr3Default(d); #endif } /* RaiseUnexpectedTypeError */ static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) { __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, expected, obj_type_name); __Pyx_DECREF_TypeName(obj_type_name); return 0; } /* PyObjectLookupSpecial */ #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { PyObject *res; PyTypeObject *tp = Py_TYPE(obj); #if PY_MAJOR_VERSION < 3 if (unlikely(PyInstance_Check(obj))) return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); #endif res = _PyType_Lookup(tp, attr_name); if (likely(res)) { descrgetfunc f = Py_TYPE(res)->tp_descr_get; if (!f) { Py_INCREF(res); } else { res = f(res, obj, (PyObject *)tp); } } else if (with_error) { PyErr_SetObject(PyExc_AttributeError, attr_name); } return res; } #endif /* ReturnWithStopIteration */ static void __Pyx__ReturnWithStopIteration(PyObject* value) { PyObject *exc, *args; #if CYTHON_COMPILING_IN_CPYTHON __Pyx_PyThreadState_declare if (PY_VERSION_HEX >= 0x030C00A6 || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { args = PyTuple_New(1); if (unlikely(!args)) return; Py_INCREF(value); PyTuple_SET_ITEM(args, 0, value); exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL); Py_DECREF(args); if (!exc) return; } else { Py_INCREF(value); exc = value; } #if CYTHON_FAST_THREAD_STATE __Pyx_PyThreadState_assign #if CYTHON_USE_EXC_INFO_STACK if (!__pyx_tstate->exc_info->exc_value) #else if (!__pyx_tstate->exc_type) #endif { Py_INCREF(PyExc_StopIteration); __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL); return; } #endif #else args = PyTuple_Pack(1, value); if (unlikely(!args)) return; exc = PyObject_Call(PyExc_StopIteration, args, NULL); Py_DECREF(args); if (unlikely(!exc)) return; #endif PyErr_SetObject(PyExc_StopIteration, exc); Py_DECREF(exc); } /* FastTypeChecks */ #if CYTHON_COMPILING_IN_CPYTHON static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { while (a) { a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); if (a == b) return 1; } return b == &PyBaseObject_Type; } static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (a == b) return 1; mro = a->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(a, b); } static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (cls == a || cls == b) return 1; mro = cls->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { PyObject *base = PyTuple_GET_ITEM(mro, i); if (base == (PyObject *)a || base == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); } #if PY_MAJOR_VERSION == 2 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { PyObject *exception, *value, *tb; int res; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&exception, &value, &tb); res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } if (!res) { res = PyObject_IsSubclass(err, exc_type2); if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } } __Pyx_ErrRestore(exception, value, tb); return res; } #else static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { if (exc_type1) { return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); } else { return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); } } #endif static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; assert(PyExceptionClass_Check(exc_type)); n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i= 3 if (likely(PyUnicode_Check(n))) #else if (likely(PyString_Check(n))) #endif return __Pyx_PyObject_GetAttrStr(o, n); #endif return PyObject_GetAttr(o, n); } /* PyObjectCallMethod0 */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { PyObject *method = NULL, *result = NULL; int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); if (likely(is_method)) { result = __Pyx_PyObject_CallOneArg(method, obj); Py_DECREF(method); return result; } if (unlikely(!method)) goto bad; result = __Pyx_PyObject_CallNoArg(method); Py_DECREF(method); bad: return result; } /* RaiseNoneIterError */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } /* UnpackTupleError */ static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { if (t == Py_None) { __Pyx_RaiseNoneNotIterableError(); } else if (PyTuple_GET_SIZE(t) < index) { __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); } else { __Pyx_RaiseTooManyValuesError(index); } } /* UnpackTuple2 */ static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { PyObject *value1 = NULL, *value2 = NULL; #if CYTHON_COMPILING_IN_PYPY value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; #else value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); #endif if (decref_tuple) { Py_DECREF(tuple); } *pvalue1 = value1; *pvalue2 = value2; return 0; #if CYTHON_COMPILING_IN_PYPY bad: Py_XDECREF(value1); Py_XDECREF(value2); if (decref_tuple) { Py_XDECREF(tuple); } return -1; #endif } static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int has_known_size, int decref_tuple) { Py_ssize_t index; PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; iternextfunc iternext; iter = PyObject_GetIter(tuple); if (unlikely(!iter)) goto bad; if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } iternext = __Pyx_PyObject_GetIterNextFunc(iter); value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; Py_DECREF(iter); *pvalue1 = value1; *pvalue2 = value2; return 0; unpacking_failed: if (!has_known_size && __Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); bad: Py_XDECREF(iter); Py_XDECREF(value1); Py_XDECREF(value2); if (decref_tuple) { Py_XDECREF(tuple); } return -1; } /* dict_iter */ #if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 #include #endif static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, Py_ssize_t* p_orig_length, int* p_source_is_dict) { is_dict = is_dict || likely(PyDict_CheckExact(iterable)); *p_source_is_dict = is_dict; if (is_dict) { #if !CYTHON_COMPILING_IN_PYPY *p_orig_length = PyDict_Size(iterable); Py_INCREF(iterable); return iterable; #elif PY_MAJOR_VERSION >= 3 static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; PyObject **pp = NULL; if (method_name) { const char *name = PyUnicode_AsUTF8(method_name); if (strcmp(name, "iteritems") == 0) pp = &py_items; else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; else if (strcmp(name, "itervalues") == 0) pp = &py_values; if (pp) { if (!*pp) { *pp = PyUnicode_FromString(name + 4); if (!*pp) return NULL; } method_name = *pp; } } #endif } *p_orig_length = 0; if (method_name) { PyObject* iter; iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); if (!iterable) return NULL; #if !CYTHON_COMPILING_IN_PYPY if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) return iterable; #endif iter = PyObject_GetIter(iterable); Py_DECREF(iterable); return iter; } return PyObject_GetIter(iterable); } static CYTHON_INLINE int __Pyx_dict_iter_next( PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { PyObject* next_item; #if !CYTHON_COMPILING_IN_PYPY if (source_is_dict) { PyObject *key, *value; if (unlikely(orig_length != PyDict_Size(iter_obj))) { PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); return -1; } if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { return 0; } if (pitem) { PyObject* tuple = PyTuple_New(2); if (unlikely(!tuple)) { return -1; } Py_INCREF(key); Py_INCREF(value); PyTuple_SET_ITEM(tuple, 0, key); PyTuple_SET_ITEM(tuple, 1, value); *pitem = tuple; } else { if (pkey) { Py_INCREF(key); *pkey = key; } if (pvalue) { Py_INCREF(value); *pvalue = value; } } return 1; } else if (PyTuple_CheckExact(iter_obj)) { Py_ssize_t pos = *ppos; if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; *ppos = pos + 1; next_item = PyTuple_GET_ITEM(iter_obj, pos); Py_INCREF(next_item); } else if (PyList_CheckExact(iter_obj)) { Py_ssize_t pos = *ppos; if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; *ppos = pos + 1; next_item = PyList_GET_ITEM(iter_obj, pos); Py_INCREF(next_item); } else #endif { next_item = PyIter_Next(iter_obj); if (unlikely(!next_item)) { return __Pyx_IterFinish(); } } if (pitem) { *pitem = next_item; } else if (pkey && pvalue) { if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) return -1; } else if (pkey) { *pkey = next_item; } else { *pvalue = next_item; } return 1; } /* PyObjectSetAttrStr */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_setattro)) return tp->tp_setattro(obj, attr_name, value); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_setattr)) return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); #endif return PyObject_SetAttr(obj, attr_name, value); } #endif /* RaiseUnboundLocalError */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); } /* SliceObject */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, int wraparound) { __Pyx_TypeName obj_type_name; #if CYTHON_USE_TYPE_SLOTS PyMappingMethods* mp; #if PY_MAJOR_VERSION < 3 PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; if (likely(ms && ms->sq_slice)) { if (!has_cstart) { if (_py_start && (*_py_start != Py_None)) { cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; } else cstart = 0; } if (!has_cstop) { if (_py_stop && (*_py_stop != Py_None)) { cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; } else cstop = PY_SSIZE_T_MAX; } if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { Py_ssize_t l = ms->sq_length(obj); if (likely(l >= 0)) { if (cstop < 0) { cstop += l; if (cstop < 0) cstop = 0; } if (cstart < 0) { cstart += l; if (cstart < 0) cstart = 0; } } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) goto bad; PyErr_Clear(); } } return ms->sq_slice(obj, cstart, cstop); } #else CYTHON_UNUSED_VAR(wraparound); #endif mp = Py_TYPE(obj)->tp_as_mapping; if (likely(mp && mp->mp_subscript)) #else CYTHON_UNUSED_VAR(wraparound); #endif { PyObject* result; PyObject *py_slice, *py_start, *py_stop; if (_py_slice) { py_slice = *_py_slice; } else { PyObject* owned_start = NULL; PyObject* owned_stop = NULL; if (_py_start) { py_start = *_py_start; } else { if (has_cstart) { owned_start = py_start = PyInt_FromSsize_t(cstart); if (unlikely(!py_start)) goto bad; } else py_start = Py_None; } if (_py_stop) { py_stop = *_py_stop; } else { if (has_cstop) { owned_stop = py_stop = PyInt_FromSsize_t(cstop); if (unlikely(!py_stop)) { Py_XDECREF(owned_start); goto bad; } } else py_stop = Py_None; } py_slice = PySlice_New(py_start, py_stop, Py_None); Py_XDECREF(owned_start); Py_XDECREF(owned_stop); if (unlikely(!py_slice)) goto bad; } #if CYTHON_USE_TYPE_SLOTS result = mp->mp_subscript(obj, py_slice); #else result = PyObject_GetItem(obj, py_slice); #endif if (!_py_slice) { Py_DECREF(py_slice); } return result; } obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); PyErr_Format(PyExc_TypeError, "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); __Pyx_DECREF_TypeName(obj_type_name); bad: return NULL; } /* Import */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *module = 0; PyObject *empty_dict = 0; PyObject *empty_list = 0; #if PY_MAJOR_VERSION < 3 PyObject *py_import; py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); if (unlikely(!py_import)) goto bad; if (!from_list) { empty_list = PyList_New(0); if (unlikely(!empty_list)) goto bad; from_list = empty_list; } #endif empty_dict = PyDict_New(); if (unlikely(!empty_dict)) goto bad; { #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { module = PyImport_ImportModuleLevelObject( name, __pyx_d, empty_dict, from_list, 1); if (unlikely(!module)) { if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) goto bad; PyErr_Clear(); } } level = 0; } #endif if (!module) { #if PY_MAJOR_VERSION < 3 PyObject *py_level = PyInt_FromLong(level); if (unlikely(!py_level)) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, __pyx_d, empty_dict, from_list, level); #endif } } bad: Py_XDECREF(empty_dict); Py_XDECREF(empty_list); #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_import); #endif return module; } /* ImportFrom */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { const char* module_name_str = 0; PyObject* module_name = 0; PyObject* module_dot = 0; PyObject* full_name = 0; PyErr_Clear(); module_name_str = PyModule_GetName(module); if (unlikely(!module_name_str)) { goto modbad; } module_name = PyUnicode_FromString(module_name_str); if (unlikely(!module_name)) { goto modbad; } module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__47); if (unlikely(!module_dot)) { goto modbad; } full_name = PyUnicode_Concat(module_dot, name); if (unlikely(!full_name)) { goto modbad; } #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) goto modbad; value = PyObject_GetItem(modules, full_name); } #else value = PyImport_GetModule(full_name); #endif modbad: Py_XDECREF(full_name); Py_XDECREF(module_dot); Py_XDECREF(module_name); } if (unlikely(!value)) { PyErr_Format(PyExc_ImportError, #if PY_MAJOR_VERSION < 3 "cannot import name %.230s", PyString_AS_STRING(name)); #else "cannot import name %S", name); #endif } return value; } /* HasAttr */ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { PyObject *r; if (unlikely(!__Pyx_PyBaseString_Check(n))) { PyErr_SetString(PyExc_TypeError, "hasattr(): attribute name must be string"); return -1; } r = __Pyx_GetAttr(o, n); if (!r) { PyErr_Clear(); return 0; } else { Py_DECREF(r); return 1; } } /* SetPackagePathFromImportLib */ #if PY_MAJOR_VERSION >= 3 && !CYTHON_PEP489_MULTI_PHASE_INIT static int __Pyx_SetPackagePathFromImportLib(PyObject *module_name) { PyObject *importlib, *osmod, *ossep, *parts, *package_path; PyObject *file_path = NULL; int result; PyObject *spec; importlib = PyImport_ImportModule("importlib.util"); if (unlikely(!importlib)) goto bad; spec = PyObject_CallMethod(importlib, "find_spec", "(O)", module_name); Py_DECREF(importlib); if (unlikely(!spec)) goto bad; file_path = PyObject_GetAttrString(spec, "origin"); Py_DECREF(spec); if (unlikely(!file_path)) goto bad; if (unlikely(PyObject_SetAttrString(__pyx_m, "__file__", file_path) < 0)) goto bad; osmod = PyImport_ImportModule("os"); if (unlikely(!osmod)) goto bad; ossep = PyObject_GetAttrString(osmod, "sep"); Py_DECREF(osmod); if (unlikely(!ossep)) goto bad; parts = PyObject_CallMethod(file_path, "rsplit", "(Oi)", ossep, 1); Py_DECREF(file_path); file_path = NULL; Py_DECREF(ossep); if (unlikely(!parts)) goto bad; package_path = Py_BuildValue("[O]", PyList_GET_ITEM(parts, 0)); Py_DECREF(parts); if (unlikely(!package_path)) goto bad; goto set_path; bad: PyErr_WriteUnraisable(module_name); Py_XDECREF(file_path); PyErr_Clear(); package_path = PyList_New(0); if (unlikely(!package_path)) return -1; set_path: result = PyObject_SetAttrString(__pyx_m, "__path__", package_path); Py_DECREF(package_path); return result; } #endif /* ValidateBasesTuple */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { Py_ssize_t i, n; #if CYTHON_ASSUME_SAFE_MACROS n = PyTuple_GET_SIZE(bases); #else n = PyTuple_Size(bases); if (n < 0) return -1; #endif for (i = 1; i < n; i++) { #if CYTHON_AVOID_BORROWED_REFS PyObject *b0 = PySequence_GetItem(bases, i); if (!b0) return -1; #elif CYTHON_ASSUME_SAFE_MACROS PyObject *b0 = PyTuple_GET_ITEM(bases, i); #else PyObject *b0 = PyTuple_GetItem(bases, i); if (!b0) return -1; #endif PyTypeObject *b; #if PY_MAJOR_VERSION < 3 if (PyClass_Check(b0)) { PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif return -1; } #endif b = (PyTypeObject*) b0; if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) { __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); PyErr_Format(PyExc_TypeError, "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); __Pyx_DECREF_TypeName(b_name); #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif return -1; } if (dictoffset == 0) { Py_ssize_t b_dictoffset = 0; #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY b_dictoffset = b->tp_dictoffset; #else PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); if (!py_b_dictoffset) goto dictoffset_return; b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); Py_DECREF(py_b_dictoffset); if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; #endif if (b_dictoffset) { { __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); PyErr_Format(PyExc_TypeError, "extension type '%.200s' has no __dict__ slot, " "but base type '" __Pyx_FMT_TYPENAME "' has: " "either add 'cdef dict __dict__' to the extension type " "or add '__slots__ = [...]' to the base type", type_name, b_name); __Pyx_DECREF_TypeName(b_name); } #if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) dictoffset_return: #endif #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif return -1; } } #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif } return 0; } #endif /* PyType_Ready */ static int __Pyx_PyType_Ready(PyTypeObject *t) { #if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) (void)__Pyx_PyObject_CallMethod0; #if CYTHON_USE_TYPE_SPECS (void)__Pyx_validate_bases_tuple; #endif return PyType_Ready(t); #else int r; PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) return -1; #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) { int gc_was_enabled; #if PY_VERSION_HEX >= 0x030A00b1 gc_was_enabled = PyGC_Disable(); (void)__Pyx_PyObject_CallMethod0; #else PyObject *ret, *py_status; PyObject *gc = NULL; #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) gc = PyImport_GetModule(__pyx_kp_u_gc); #endif if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); if (unlikely(!gc)) return -1; py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); if (unlikely(!py_status)) { Py_DECREF(gc); return -1; } gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); Py_DECREF(py_status); if (gc_was_enabled > 0) { ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); if (unlikely(!ret)) { Py_DECREF(gc); return -1; } Py_DECREF(ret); } else if (unlikely(gc_was_enabled == -1)) { Py_DECREF(gc); return -1; } #endif t->tp_flags |= Py_TPFLAGS_HEAPTYPE; #if PY_VERSION_HEX >= 0x030A0000 t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; #endif #else (void)__Pyx_PyObject_CallMethod0; #endif r = PyType_Ready(t); #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; #if PY_VERSION_HEX >= 0x030A00b1 if (gc_was_enabled) PyGC_Enable(); #else if (gc_was_enabled) { PyObject *tp, *v, *tb; PyErr_Fetch(&tp, &v, &tb); ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); if (likely(ret || r == -1)) { Py_XDECREF(ret); PyErr_Restore(tp, v, tb); } else { Py_XDECREF(tp); Py_XDECREF(v); Py_XDECREF(tb); r = -1; } } Py_DECREF(gc); #endif } #endif return r; #endif } /* PyObject_GenericGetAttr */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { return PyObject_GenericGetAttr(obj, attr_name); } return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); } #endif /* SetupReduce */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; PyObject *name_attr; name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name_2); if (likely(name_attr)) { ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); } else { ret = -1; } if (unlikely(ret < 0)) { PyErr_Clear(); ret = 0; } Py_XDECREF(name_attr); return ret; } static int __Pyx_setup_reduce(PyObject* type_obj) { int ret = 0; PyObject *object_reduce = NULL; PyObject *object_getstate = NULL; PyObject *object_reduce_ex = NULL; PyObject *reduce = NULL; PyObject *reduce_ex = NULL; PyObject *reduce_cython = NULL; PyObject *setstate = NULL; PyObject *setstate_cython = NULL; PyObject *getstate = NULL; #if CYTHON_USE_PYTYPE_LOOKUP getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); #else getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); if (!getstate && PyErr_Occurred()) { goto __PYX_BAD; } #endif if (getstate) { #if CYTHON_USE_PYTYPE_LOOKUP object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); #else object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); if (!object_getstate && PyErr_Occurred()) { goto __PYX_BAD; } #endif if (object_getstate != getstate) { goto __PYX_GOOD; } } #if CYTHON_USE_PYTYPE_LOOKUP object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #else object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #endif reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; if (reduce_ex == object_reduce_ex) { #if CYTHON_USE_PYTYPE_LOOKUP object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #else object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #endif reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); if (likely(reduce_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (reduce == object_reduce || PyErr_Occurred()) { goto __PYX_BAD; } setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate); if (!setstate) PyErr_Clear(); if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); if (likely(setstate_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (!setstate || PyErr_Occurred()) { goto __PYX_BAD; } } PyType_Modified((PyTypeObject*)type_obj); } } goto __PYX_GOOD; __PYX_BAD: if (!PyErr_Occurred()) { __Pyx_TypeName type_obj_name = __Pyx_PyType_GetName((PyTypeObject*)type_obj); PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); __Pyx_DECREF_TypeName(type_obj_name); } ret = -1; __PYX_GOOD: #if !CYTHON_USE_PYTYPE_LOOKUP Py_XDECREF(object_reduce); Py_XDECREF(object_reduce_ex); Py_XDECREF(object_getstate); Py_XDECREF(getstate); #endif Py_XDECREF(reduce); Py_XDECREF(reduce_ex); Py_XDECREF(reduce_cython); Py_XDECREF(setstate); Py_XDECREF(setstate_cython); return ret; } #endif /* SetVTable */ static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { PyObject *ob = PyCapsule_New(vtable, 0, 0); if (unlikely(!ob)) goto bad; #if CYTHON_COMPILING_IN_LIMITED_API if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0)) #else if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0)) #endif goto bad; Py_DECREF(ob); return 0; bad: Py_XDECREF(ob); return -1; } /* GetVTable */ static void* __Pyx_GetVtable(PyTypeObject *type) { void* ptr; #if CYTHON_COMPILING_IN_LIMITED_API PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable); #else PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable); #endif if (!ob) goto bad; ptr = PyCapsule_GetPointer(ob, 0); if (!ptr && !PyErr_Occurred()) PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); Py_DECREF(ob); return ptr; bad: Py_XDECREF(ob); return NULL; } /* MergeVTables */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __Pyx_MergeVtables(PyTypeObject *type) { int i; void** base_vtables; __Pyx_TypeName tp_base_name; __Pyx_TypeName base_name; void* unknown = (void*)-1; PyObject* bases = type->tp_bases; int base_depth = 0; { PyTypeObject* base = type->tp_base; while (base) { base_depth += 1; base = base->tp_base; } } base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1)); base_vtables[0] = unknown; for (i = 1; i < PyTuple_GET_SIZE(bases); i++) { void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i))); if (base_vtable != NULL) { int j; PyTypeObject* base = type->tp_base; for (j = 0; j < base_depth; j++) { if (base_vtables[j] == unknown) { base_vtables[j] = __Pyx_GetVtable(base); base_vtables[j + 1] = unknown; } if (base_vtables[j] == base_vtable) { break; } else if (base_vtables[j] == NULL) { goto bad; } base = base->tp_base; } } } PyErr_Clear(); free(base_vtables); return 0; bad: tp_base_name = __Pyx_PyType_GetName(type->tp_base); base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i)); PyErr_Format(PyExc_TypeError, "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); __Pyx_DECREF_TypeName(tp_base_name); __Pyx_DECREF_TypeName(base_name); free(base_vtables); return -1; } #endif /* FormatTypeName */ #if CYTHON_COMPILING_IN_LIMITED_API static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp) { PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, __pyx_n_s_name_2); if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { PyErr_Clear(); Py_XDECREF(name); name = __Pyx_NewRef(__pyx_n_s__49); } return name; } #endif /* ValidateExternBase */ static int __Pyx_validate_extern_base(PyTypeObject *base) { Py_ssize_t itemsize; #if CYTHON_COMPILING_IN_LIMITED_API PyObject *py_itemsize; #endif #if !CYTHON_COMPILING_IN_LIMITED_API itemsize = ((PyTypeObject *)base)->tp_itemsize; #else py_itemsize = PyObject_GetAttrString((PyObject*)base, "__itemsize__"); if (!py_itemsize) return -1; itemsize = PyLong_AsSsize_t(py_itemsize); Py_DECREF(py_itemsize); py_itemsize = 0; if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) return -1; #endif if (itemsize) { __Pyx_TypeName b_name = __Pyx_PyType_GetName(base); PyErr_Format(PyExc_TypeError, "inheritance from PyVarObject types like '" __Pyx_FMT_TYPENAME "' not currently supported", b_name); __Pyx_DECREF_TypeName(b_name); return -1; } return 0; } /* TypeImport */ #ifndef __PYX_HAVE_RT_ImportType_3_0_11 #define __PYX_HAVE_RT_ImportType_3_0_11 static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size) { PyObject *result = 0; char warning[200]; Py_ssize_t basicsize; Py_ssize_t itemsize; #if CYTHON_COMPILING_IN_LIMITED_API PyObject *py_basicsize; PyObject *py_itemsize; #endif result = PyObject_GetAttrString(module, class_name); if (!result) goto bad; if (!PyType_Check(result)) { PyErr_Format(PyExc_TypeError, "%.200s.%.200s is not a type object", module_name, class_name); goto bad; } #if !CYTHON_COMPILING_IN_LIMITED_API basicsize = ((PyTypeObject *)result)->tp_basicsize; itemsize = ((PyTypeObject *)result)->tp_itemsize; #else py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); if (!py_basicsize) goto bad; basicsize = PyLong_AsSsize_t(py_basicsize); Py_DECREF(py_basicsize); py_basicsize = 0; if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) goto bad; py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); if (!py_itemsize) goto bad; itemsize = PyLong_AsSsize_t(py_itemsize); Py_DECREF(py_itemsize); py_itemsize = 0; if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) goto bad; #endif if (itemsize) { if (size % alignment) { alignment = size % alignment; } if (itemsize < (Py_ssize_t)alignment) itemsize = (Py_ssize_t)alignment; } if ((size_t)(basicsize + itemsize) < size) { PyErr_Format(PyExc_ValueError, "%.200s.%.200s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize+itemsize); goto bad; } if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_11 && ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { PyErr_Format(PyExc_ValueError, "%.200s.%.200s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd-%zd from PyObject", module_name, class_name, size, basicsize, basicsize+itemsize); goto bad; } else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_11 && (size_t)basicsize > size) { PyOS_snprintf(warning, sizeof(warning), "%s.%s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; } return (PyTypeObject *)result; bad: Py_XDECREF(result); return NULL; } #endif /* ImportDottedModule */ #if PY_MAJOR_VERSION >= 3 static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; if (unlikely(PyErr_Occurred())) { PyErr_Clear(); } if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { partial_name = name; } else { slice = PySequence_GetSlice(parts_tuple, 0, count); if (unlikely(!slice)) goto bad; sep = PyUnicode_FromStringAndSize(".", 1); if (unlikely(!sep)) goto bad; partial_name = PyUnicode_Join(sep, slice); } PyErr_Format( #if PY_MAJOR_VERSION < 3 PyExc_ImportError, "No module named '%s'", PyString_AS_STRING(partial_name)); #else #if PY_VERSION_HEX >= 0x030600B1 PyExc_ModuleNotFoundError, #else PyExc_ImportError, #endif "No module named '%U'", partial_name); #endif bad: Py_XDECREF(sep); Py_XDECREF(slice); Py_XDECREF(partial_name); return NULL; } #endif #if PY_MAJOR_VERSION >= 3 static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { PyObject *imported_module; #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) return NULL; imported_module = __Pyx_PyDict_GetItemStr(modules, name); Py_XINCREF(imported_module); #else imported_module = PyImport_GetModule(name); #endif return imported_module; } #endif #if PY_MAJOR_VERSION >= 3 static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { Py_ssize_t i, nparts; nparts = PyTuple_GET_SIZE(parts_tuple); for (i=1; i < nparts && module; i++) { PyObject *part, *submodule; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS part = PyTuple_GET_ITEM(parts_tuple, i); #else part = PySequence_ITEM(parts_tuple, i); #endif submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_DECREF(part); #endif Py_DECREF(module); module = submodule; } if (unlikely(!module)) { return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); } return module; } #endif static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { #if PY_MAJOR_VERSION < 3 PyObject *module, *from_list, *star = __pyx_n_s__50; CYTHON_UNUSED_VAR(parts_tuple); from_list = PyList_New(1); if (unlikely(!from_list)) return NULL; Py_INCREF(star); PyList_SET_ITEM(from_list, 0, star); module = __Pyx_Import(name, from_list, 0); Py_DECREF(from_list); return module; #else PyObject *imported_module; PyObject *module = __Pyx_Import(name, NULL, 0); if (!parts_tuple || unlikely(!module)) return module; imported_module = __Pyx__ImportDottedModule_Lookup(name); if (likely(imported_module)) { Py_DECREF(module); return imported_module; } PyErr_Clear(); return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); #endif } static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 PyObject *module = __Pyx__ImportDottedModule_Lookup(name); if (likely(module)) { PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); if (likely(spec)) { PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { Py_DECREF(spec); spec = NULL; } Py_XDECREF(unsafe); } if (likely(!spec)) { PyErr_Clear(); return module; } Py_DECREF(spec); Py_DECREF(module); } else if (PyErr_Occurred()) { PyErr_Clear(); } #endif return __Pyx__ImportDottedModule(name, parts_tuple); } /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { size_t slen = strlen(cstring); if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "c-string too long to convert to Python"); return NULL; } length = (Py_ssize_t) slen; if (start < 0) { start += length; if (start < 0) start = 0; } if (stop < 0) stop += length; } if (unlikely(stop <= start)) return __Pyx_NewRef(__pyx_empty_unicode); length = stop - start; cstring += start; if (decode_func) { return decode_func(cstring, length, errors); } else { return PyUnicode_Decode(cstring, length, encoding, errors); } } /* Globals */ static PyObject* __Pyx_Globals(void) { return __Pyx_NewRef(__pyx_d); } /* PyVectorcallFastCallDict */ #if CYTHON_METH_FASTCALL static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) { PyObject *res = NULL; PyObject *kwnames; PyObject **newargs; PyObject **kwvalues; Py_ssize_t i, pos; size_t j; PyObject *key, *value; unsigned long keys_are_strings; Py_ssize_t nkw = PyDict_GET_SIZE(kw); newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); if (unlikely(newargs == NULL)) { PyErr_NoMemory(); return NULL; } for (j = 0; j < nargs; j++) newargs[j] = args[j]; kwnames = PyTuple_New(nkw); if (unlikely(kwnames == NULL)) { PyMem_Free(newargs); return NULL; } kwvalues = newargs + nargs; pos = i = 0; keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; while (PyDict_Next(kw, &pos, &key, &value)) { keys_are_strings &= Py_TYPE(key)->tp_flags; Py_INCREF(key); Py_INCREF(value); PyTuple_SET_ITEM(kwnames, i, key); kwvalues[i] = value; i++; } if (unlikely(!keys_are_strings)) { PyErr_SetString(PyExc_TypeError, "keywords must be strings"); goto cleanup; } res = vc(func, newargs, nargs, kwnames); cleanup: Py_DECREF(kwnames); for (i = 0; i < nkw; i++) Py_DECREF(kwvalues[i]); PyMem_Free(newargs); return res; } static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) { if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { return vc(func, args, nargs, NULL); } return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); } #endif /* CythonFunctionShared */ #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { if (__Pyx_CyFunction_Check(func)) { return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; } else if (PyCFunction_Check(func)) { return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; } return 0; } #else static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; } #endif static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API __Pyx_Py_XDECREF_SET( __Pyx_CyFunction_GetClassObj(f), ((classobj) ? __Pyx_NewRef(classobj) : NULL)); #else __Pyx_Py_XDECREF_SET( ((PyCMethodObject *) (f))->mm_class, (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); #endif } static PyObject * __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { CYTHON_UNUSED_VAR(closure); if (unlikely(op->func_doc == NULL)) { #if CYTHON_COMPILING_IN_LIMITED_API op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); if (unlikely(!op->func_doc)) return NULL; #else if (((PyCFunctionObject*)op)->m_ml->ml_doc) { #if PY_MAJOR_VERSION >= 3 op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); #else op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); #endif if (unlikely(op->func_doc == NULL)) return NULL; } else { Py_INCREF(Py_None); return Py_None; } #endif } Py_INCREF(op->func_doc); return op->func_doc; } static int __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); if (value == NULL) { value = Py_None; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_doc, value); return 0; } static PyObject * __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); if (unlikely(op->func_name == NULL)) { #if CYTHON_COMPILING_IN_LIMITED_API op->func_name = PyObject_GetAttrString(op->func, "__name__"); #elif PY_MAJOR_VERSION >= 3 op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); #else op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); #endif if (unlikely(op->func_name == NULL)) return NULL; } Py_INCREF(op->func_name); return op->func_name; } static int __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__name__ must be set to a string object"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_name, value); return 0; } static PyObject * __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); Py_INCREF(op->func_qualname); return op->func_qualname; } static int __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__qualname__ must be set to a string object"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_qualname, value); return 0; } static PyObject * __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); if (unlikely(op->func_dict == NULL)) { op->func_dict = PyDict_New(); if (unlikely(op->func_dict == NULL)) return NULL; } Py_INCREF(op->func_dict); return op->func_dict; } static int __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); if (unlikely(value == NULL)) { PyErr_SetString(PyExc_TypeError, "function's dictionary may not be deleted"); return -1; } if (unlikely(!PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "setting function's dictionary to a non-dict"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_dict, value); return 0; } static PyObject * __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); Py_INCREF(op->func_globals); return op->func_globals; } static PyObject * __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(op); CYTHON_UNUSED_VAR(context); Py_INCREF(Py_None); return Py_None; } static PyObject * __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) { PyObject* result = (op->func_code) ? op->func_code : Py_None; CYTHON_UNUSED_VAR(context); Py_INCREF(result); return result; } static int __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { int result = 0; PyObject *res = op->defaults_getter((PyObject *) op); if (unlikely(!res)) return -1; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS op->defaults_tuple = PyTuple_GET_ITEM(res, 0); Py_INCREF(op->defaults_tuple); op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); Py_INCREF(op->defaults_kwdict); #else op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); if (unlikely(!op->defaults_tuple)) result = -1; else { op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); if (unlikely(!op->defaults_kwdict)) result = -1; } #endif Py_DECREF(res); return result; } static int __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); if (!value) { value = Py_None; } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { PyErr_SetString(PyExc_TypeError, "__defaults__ must be set to a tuple object"); return -1; } PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " "currently affect the values used in function calls", 1); Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); return 0; } static PyObject * __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { PyObject* result = op->defaults_tuple; CYTHON_UNUSED_VAR(context); if (unlikely(!result)) { if (op->defaults_getter) { if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; result = op->defaults_tuple; } else { result = Py_None; } } Py_INCREF(result); return result; } static int __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); if (!value) { value = Py_None; } else if (unlikely(value != Py_None && !PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "__kwdefaults__ must be set to a dict object"); return -1; } PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " "currently affect the values used in function calls", 1); Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); return 0; } static PyObject * __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { PyObject* result = op->defaults_kwdict; CYTHON_UNUSED_VAR(context); if (unlikely(!result)) { if (op->defaults_getter) { if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; result = op->defaults_kwdict; } else { result = Py_None; } } Py_INCREF(result); return result; } static int __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); if (!value || value == Py_None) { value = NULL; } else if (unlikely(!PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "__annotations__ must be set to a dict object"); return -1; } Py_XINCREF(value); __Pyx_Py_XDECREF_SET(op->func_annotations, value); return 0; } static PyObject * __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { PyObject* result = op->func_annotations; CYTHON_UNUSED_VAR(context); if (unlikely(!result)) { result = PyDict_New(); if (unlikely(!result)) return NULL; op->func_annotations = result; } Py_INCREF(result); return result; } static PyObject * __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { int is_coroutine; CYTHON_UNUSED_VAR(context); if (op->func_is_coroutine) { return __Pyx_NewRef(op->func_is_coroutine); } is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; #if PY_VERSION_HEX >= 0x03050000 if (is_coroutine) { PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; fromlist = PyList_New(1); if (unlikely(!fromlist)) return NULL; Py_INCREF(marker); #if CYTHON_ASSUME_SAFE_MACROS PyList_SET_ITEM(fromlist, 0, marker); #else if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { Py_DECREF(marker); Py_DECREF(fromlist); return NULL; } #endif module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); Py_DECREF(fromlist); if (unlikely(!module)) goto ignore; op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); Py_DECREF(module); if (likely(op->func_is_coroutine)) { return __Pyx_NewRef(op->func_is_coroutine); } ignore: PyErr_Clear(); } #endif op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); return __Pyx_NewRef(op->func_is_coroutine); } #if CYTHON_COMPILING_IN_LIMITED_API static PyObject * __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); return PyObject_GetAttrString(op->func, "__module__"); } static int __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); return PyObject_SetAttrString(op->func, "__module__", value); } #endif static PyGetSetDef __pyx_CyFunction_getsets[] = { {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, #if CYTHON_COMPILING_IN_LIMITED_API {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, #endif {0, 0, 0, 0, 0} }; static PyMemberDef __pyx_CyFunction_members[] = { #if !CYTHON_COMPILING_IN_LIMITED_API {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, #endif #if CYTHON_USE_TYPE_SPECS {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, #if CYTHON_METH_FASTCALL #if CYTHON_BACKPORT_VECTORCALL {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, #else #if !CYTHON_COMPILING_IN_LIMITED_API {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, #endif #endif #endif #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, #else {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, #endif #endif {0, 0, 0, 0, 0} }; static PyObject * __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) { CYTHON_UNUSED_VAR(args); #if PY_MAJOR_VERSION >= 3 Py_INCREF(m->func_qualname); return m->func_qualname; #else return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); #endif } static PyMethodDef __pyx_CyFunction_methods[] = { {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, {0, 0, 0, 0} }; #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) #else #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) #endif static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { #if !CYTHON_COMPILING_IN_LIMITED_API PyCFunctionObject *cf = (PyCFunctionObject*) op; #endif if (unlikely(op == NULL)) return NULL; #if CYTHON_COMPILING_IN_LIMITED_API op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); if (unlikely(!op->func)) return NULL; #endif op->flags = flags; __Pyx_CyFunction_weakreflist(op) = NULL; #if !CYTHON_COMPILING_IN_LIMITED_API cf->m_ml = ml; cf->m_self = (PyObject *) op; #endif Py_XINCREF(closure); op->func_closure = closure; #if !CYTHON_COMPILING_IN_LIMITED_API Py_XINCREF(module); cf->m_module = module; #endif op->func_dict = NULL; op->func_name = NULL; Py_INCREF(qualname); op->func_qualname = qualname; op->func_doc = NULL; #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API op->func_classobj = NULL; #else ((PyCMethodObject*)op)->mm_class = NULL; #endif op->func_globals = globals; Py_INCREF(op->func_globals); Py_XINCREF(code); op->func_code = code; op->defaults_pyobjects = 0; op->defaults_size = 0; op->defaults = NULL; op->defaults_tuple = NULL; op->defaults_kwdict = NULL; op->defaults_getter = NULL; op->func_annotations = NULL; op->func_is_coroutine = NULL; #if CYTHON_METH_FASTCALL switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { case METH_NOARGS: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; break; case METH_O: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; break; case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; break; case METH_FASTCALL | METH_KEYWORDS: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; break; case METH_VARARGS | METH_KEYWORDS: __Pyx_CyFunction_func_vectorcall(op) = NULL; break; default: PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); Py_DECREF(op); return NULL; } #endif return (PyObject *) op; } static int __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) { Py_CLEAR(m->func_closure); #if CYTHON_COMPILING_IN_LIMITED_API Py_CLEAR(m->func); #else Py_CLEAR(((PyCFunctionObject*)m)->m_module); #endif Py_CLEAR(m->func_dict); Py_CLEAR(m->func_name); Py_CLEAR(m->func_qualname); Py_CLEAR(m->func_doc); Py_CLEAR(m->func_globals); Py_CLEAR(m->func_code); #if !CYTHON_COMPILING_IN_LIMITED_API #if PY_VERSION_HEX < 0x030900B1 Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); #else { PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; ((PyCMethodObject *) (m))->mm_class = NULL; Py_XDECREF(cls); } #endif #endif Py_CLEAR(m->defaults_tuple); Py_CLEAR(m->defaults_kwdict); Py_CLEAR(m->func_annotations); Py_CLEAR(m->func_is_coroutine); if (m->defaults) { PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); int i; for (i = 0; i < m->defaults_pyobjects; i++) Py_XDECREF(pydefaults[i]); PyObject_Free(m->defaults); m->defaults = NULL; } return 0; } static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) { if (__Pyx_CyFunction_weakreflist(m) != NULL) PyObject_ClearWeakRefs((PyObject *) m); __Pyx_CyFunction_clear(m); __Pyx_PyHeapTypeObject_GC_Del(m); } static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) { PyObject_GC_UnTrack(m); __Pyx__CyFunction_dealloc(m); } static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) { Py_VISIT(m->func_closure); #if CYTHON_COMPILING_IN_LIMITED_API Py_VISIT(m->func); #else Py_VISIT(((PyCFunctionObject*)m)->m_module); #endif Py_VISIT(m->func_dict); Py_VISIT(m->func_name); Py_VISIT(m->func_qualname); Py_VISIT(m->func_doc); Py_VISIT(m->func_globals); Py_VISIT(m->func_code); #if !CYTHON_COMPILING_IN_LIMITED_API Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); #endif Py_VISIT(m->defaults_tuple); Py_VISIT(m->defaults_kwdict); Py_VISIT(m->func_is_coroutine); if (m->defaults) { PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); int i; for (i = 0; i < m->defaults_pyobjects; i++) Py_VISIT(pydefaults[i]); } return 0; } static PyObject* __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) { #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromFormat("", op->func_qualname, (void *)op); #else return PyString_FromFormat("", PyString_AsString(op->func_qualname), (void *)op); #endif } static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { #if CYTHON_COMPILING_IN_LIMITED_API PyObject *f = ((__pyx_CyFunctionObject*)func)->func; PyObject *py_name = NULL; PyCFunction meth; int flags; meth = PyCFunction_GetFunction(f); if (unlikely(!meth)) return NULL; flags = PyCFunction_GetFlags(f); if (unlikely(flags < 0)) return NULL; #else PyCFunctionObject* f = (PyCFunctionObject*)func; PyCFunction meth = f->m_ml->ml_meth; int flags = f->m_ml->ml_flags; #endif Py_ssize_t size; switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { case METH_VARARGS: if (likely(kw == NULL || PyDict_Size(kw) == 0)) return (*meth)(self, arg); break; case METH_VARARGS | METH_KEYWORDS: return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); case METH_NOARGS: if (likely(kw == NULL || PyDict_Size(kw) == 0)) { #if CYTHON_ASSUME_SAFE_MACROS size = PyTuple_GET_SIZE(arg); #else size = PyTuple_Size(arg); if (unlikely(size < 0)) return NULL; #endif if (likely(size == 0)) return (*meth)(self, NULL); #if CYTHON_COMPILING_IN_LIMITED_API py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); if (!py_name) return NULL; PyErr_Format(PyExc_TypeError, "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", py_name, size); Py_DECREF(py_name); #else PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", f->m_ml->ml_name, size); #endif return NULL; } break; case METH_O: if (likely(kw == NULL || PyDict_Size(kw) == 0)) { #if CYTHON_ASSUME_SAFE_MACROS size = PyTuple_GET_SIZE(arg); #else size = PyTuple_Size(arg); if (unlikely(size < 0)) return NULL; #endif if (likely(size == 1)) { PyObject *result, *arg0; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS arg0 = PyTuple_GET_ITEM(arg, 0); #else arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; #endif result = (*meth)(self, arg0); #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_DECREF(arg0); #endif return result; } #if CYTHON_COMPILING_IN_LIMITED_API py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); if (!py_name) return NULL; PyErr_Format(PyExc_TypeError, "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", py_name, size); Py_DECREF(py_name); #else PyErr_Format(PyExc_TypeError, "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", f->m_ml->ml_name, size); #endif return NULL; } break; default: PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); return NULL; } #if CYTHON_COMPILING_IN_LIMITED_API py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); if (!py_name) return NULL; PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", py_name); Py_DECREF(py_name); #else PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", f->m_ml->ml_name); #endif return NULL; } static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *self, *result; #if CYTHON_COMPILING_IN_LIMITED_API self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); if (unlikely(!self) && PyErr_Occurred()) return NULL; #else self = ((PyCFunctionObject*)func)->m_self; #endif result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); return result; } static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { PyObject *result; __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; #if CYTHON_METH_FASTCALL __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); if (vc) { #if CYTHON_ASSUME_SAFE_MACROS return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); #else (void) &__Pyx_PyVectorcall_FastCallDict; return PyVectorcall_Call(func, args, kw); #endif } #endif if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { Py_ssize_t argc; PyObject *new_args; PyObject *self; #if CYTHON_ASSUME_SAFE_MACROS argc = PyTuple_GET_SIZE(args); #else argc = PyTuple_Size(args); if (unlikely(!argc) < 0) return NULL; #endif new_args = PyTuple_GetSlice(args, 1, argc); if (unlikely(!new_args)) return NULL; self = PyTuple_GetItem(args, 0); if (unlikely(!self)) { Py_DECREF(new_args); #if PY_MAJOR_VERSION > 2 PyErr_Format(PyExc_TypeError, "unbound method %.200S() needs an argument", cyfunc->func_qualname); #else PyErr_SetString(PyExc_TypeError, "unbound method needs an argument"); #endif return NULL; } result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); Py_DECREF(new_args); } else { result = __Pyx_CyFunction_Call(func, args, kw); } return result; } #if CYTHON_METH_FASTCALL static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) { int ret = 0; if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { if (unlikely(nargs < 1)) { PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); return -1; } ret = 1; } if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); return -1; } return ret; } static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } if (unlikely(nargs != 0)) { PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", def->ml_name, nargs); return NULL; } return def->ml_meth(self, NULL); } static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } if (unlikely(nargs != 1)) { PyErr_Format(PyExc_TypeError, "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", def->ml_name, nargs); return NULL; } return def->ml_meth(self, args[0]); } static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); } static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); } #endif #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_CyFunctionType_slots[] = { {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, {Py_tp_methods, (void *)__pyx_CyFunction_methods}, {Py_tp_members, (void *)__pyx_CyFunction_members}, {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, {0, 0}, }; static PyType_Spec __pyx_CyFunctionType_spec = { __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", sizeof(__pyx_CyFunctionObject), 0, #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR Py_TPFLAGS_METHOD_DESCRIPTOR | #endif #if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) _Py_TPFLAGS_HAVE_VECTORCALL | #endif Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, __pyx_CyFunctionType_slots }; #else static PyTypeObject __pyx_CyFunctionType_type = { PyVarObject_HEAD_INIT(0, 0) __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", sizeof(__pyx_CyFunctionObject), 0, (destructor) __Pyx_CyFunction_dealloc, #if !CYTHON_METH_FASTCALL 0, #elif CYTHON_BACKPORT_VECTORCALL (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), #else offsetof(PyCFunctionObject, vectorcall), #endif 0, 0, #if PY_MAJOR_VERSION < 3 0, #else 0, #endif (reprfunc) __Pyx_CyFunction_repr, 0, 0, 0, 0, __Pyx_CyFunction_CallAsMethod, 0, 0, 0, 0, #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR Py_TPFLAGS_METHOD_DESCRIPTOR | #endif #if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL _Py_TPFLAGS_HAVE_VECTORCALL | #endif Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, 0, (traverseproc) __Pyx_CyFunction_traverse, (inquiry) __Pyx_CyFunction_clear, 0, #if PY_VERSION_HEX < 0x030500A0 offsetof(__pyx_CyFunctionObject, func_weakreflist), #else offsetof(PyCFunctionObject, m_weakreflist), #endif 0, 0, __pyx_CyFunction_methods, __pyx_CyFunction_members, __pyx_CyFunction_getsets, 0, 0, __Pyx_PyMethod_New, 0, offsetof(__pyx_CyFunctionObject, func_dict), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, #endif #if __PYX_NEED_TP_PRINT_SLOT 0, #endif #if PY_VERSION_HEX >= 0x030C0000 0, #endif #if PY_VERSION_HEX >= 0x030d00A4 0, #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, #endif }; #endif static int __pyx_CyFunction_init(PyObject *module) { #if CYTHON_USE_TYPE_SPECS __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); #else CYTHON_UNUSED_VAR(module); __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); #endif if (unlikely(__pyx_CyFunctionType == NULL)) { return -1; } return 0; } static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults = PyObject_Malloc(size); if (unlikely(!m->defaults)) return PyErr_NoMemory(); memset(m->defaults, 0, size); m->defaults_pyobjects = pyobjects; m->defaults_size = size; return m->defaults; } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults_tuple = tuple; Py_INCREF(tuple); } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults_kwdict = dict; Py_INCREF(dict); } static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->func_annotations = dict; Py_INCREF(dict); } /* CythonFunction */ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { PyObject *op = __Pyx_CyFunction_Init( PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), ml, flags, qualname, closure, module, globals, code ); if (likely(op)) { PyObject_GC_Track(op); } return op; } /* pyfrozenset_new */ static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) { if (it) { PyObject* result; #if CYTHON_COMPILING_IN_PYPY PyObject* args; args = PyTuple_Pack(1, it); if (unlikely(!args)) return NULL; result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL); Py_DECREF(args); return result; #else if (PyFrozenSet_CheckExact(it)) { Py_INCREF(it); return it; } result = PyFrozenSet_New(it); if (unlikely(!result)) return NULL; if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result))) return result; Py_DECREF(result); #endif } #if CYTHON_USE_TYPE_SLOTS return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL); #else return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL); #endif } /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif CYTHON_MAYBE_UNUSED_VAR(tstate); if (unlikely(!__pyx_cython_runtime)) { return c_line; } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { __PYX_PY_DICT_LOOKUP_IF_MODIFIED( use_cline, *cython_runtime_dict, __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) } else #endif { PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); if (use_cline_obj) { use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; Py_DECREF(use_cline_obj); } else { PyErr_Clear(); use_cline = NULL; } } if (!use_cline) { c_line = 0; (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); } else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { c_line = 0; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); return c_line; } #endif /* CodeObjectCache */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } #endif /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #if CYTHON_COMPILING_IN_LIMITED_API static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, PyObject *firstlineno, PyObject *name) { PyObject *replace = NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; replace = PyObject_GetAttrString(code, "replace"); if (likely(replace)) { PyObject *result; result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); Py_DECREF(replace); return result; } PyErr_Clear(); #if __PYX_LIMITED_VERSION_HEX < 0x030780000 { PyObject *compiled = NULL, *result = NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; compiled = Py_CompileString( "out = type(code)(\n" " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" " code.co_lnotab)\n", "", Py_file_input); if (!compiled) return NULL; result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); Py_DECREF(compiled); if (!result) PyErr_Print(); Py_DECREF(result); result = PyDict_GetItemString(scratch_dict, "out"); if (result) Py_INCREF(result); return result; } #else return NULL; #endif } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; PyObject *replace = NULL, *getframe = NULL, *frame = NULL; PyObject *exc_type, *exc_value, *exc_traceback; int success = 0; if (c_line) { (void) __pyx_cfilenm; (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); } PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); code_object = Py_CompileString("_getframe()", filename, Py_eval_input); if (unlikely(!code_object)) goto bad; py_py_line = PyLong_FromLong(py_line); if (unlikely(!py_py_line)) goto bad; py_funcname = PyUnicode_FromString(funcname); if (unlikely(!py_funcname)) goto bad; dict = PyDict_New(); if (unlikely(!dict)) goto bad; { PyObject *old_code_object = code_object; code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); Py_DECREF(old_code_object); } if (unlikely(!code_object)) goto bad; getframe = PySys_GetObject("_getframe"); if (unlikely(!getframe)) goto bad; if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; frame = PyEval_EvalCode(code_object, dict, dict); if (unlikely(!frame) || frame == Py_None) goto bad; success = 1; bad: PyErr_Restore(exc_type, exc_value, exc_traceback); Py_XDECREF(code_object); Py_XDECREF(py_py_line); Py_XDECREF(py_funcname); Py_XDECREF(dict); Py_XDECREF(replace); if (success) { PyTraceBack_Here( (struct _frame*)frame); } Py_XDECREF(frame); } #else static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = NULL; PyObject *py_funcname = NULL; #if PY_MAJOR_VERSION < 3 PyObject *py_srcfile = NULL; py_srcfile = PyString_FromString(filename); if (!py_srcfile) goto bad; #endif if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; funcname = PyUnicode_AsUTF8(py_funcname); if (!funcname) goto bad; #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); if (!py_funcname) goto bad; #endif } #if PY_MAJOR_VERSION < 3 py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); #else py_code = PyCode_NewEmpty(filename, funcname, py_line); #endif Py_XDECREF(py_funcname); return py_code; bad: Py_XDECREF(py_funcname); #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_srcfile); #endif return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject *ptype, *pvalue, *ptraceback; if (c_line) { c_line = __Pyx_CLineForTraceback(tstate, c_line); } py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) { /* If the code object creation fails, then we should clear the fetched exception references and propagate the new exception */ Py_XDECREF(ptype); Py_XDECREF(pvalue); Py_XDECREF(ptraceback); goto bad; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( tstate, /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } #endif /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(int) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } #endif if (unlikely(!PyLong_Check(x))) { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(int) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } } #endif if ((sizeof(int) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { int val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (int) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (int) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (int) -1; } else { stepval = v; } v = NULL; val = (int) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((int) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((int) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (int) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gid_t(gid_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const gid_t neg_one = (gid_t) -1, const_zero = (gid_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(gid_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(gid_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(gid_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(gid_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(gid_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(gid_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(gid_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE gid_t __Pyx_PyInt_As_gid_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const gid_t neg_one = (gid_t) -1, const_zero = (gid_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(gid_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(gid_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (gid_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { gid_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (gid_t) -1; val = __Pyx_PyInt_As_gid_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(gid_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(gid_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) >= 2 * PyLong_SHIFT)) { return (gid_t) (((((gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0])); } } break; case 3: if ((8 * sizeof(gid_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) >= 3 * PyLong_SHIFT)) { return (gid_t) (((((((gid_t)digits[2]) << PyLong_SHIFT) | (gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0])); } } break; case 4: if ((8 * sizeof(gid_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) >= 4 * PyLong_SHIFT)) { return (gid_t) (((((((((gid_t)digits[3]) << PyLong_SHIFT) | (gid_t)digits[2]) << PyLong_SHIFT) | (gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (gid_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(gid_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(gid_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(gid_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(gid_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(gid_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(gid_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) - 1 > 2 * PyLong_SHIFT)) { return (gid_t) (((gid_t)-1)*(((((gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0]))); } } break; case 2: if ((8 * sizeof(gid_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) - 1 > 2 * PyLong_SHIFT)) { return (gid_t) ((((((gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0]))); } } break; case -3: if ((8 * sizeof(gid_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) - 1 > 3 * PyLong_SHIFT)) { return (gid_t) (((gid_t)-1)*(((((((gid_t)digits[2]) << PyLong_SHIFT) | (gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0]))); } } break; case 3: if ((8 * sizeof(gid_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) - 1 > 3 * PyLong_SHIFT)) { return (gid_t) ((((((((gid_t)digits[2]) << PyLong_SHIFT) | (gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0]))); } } break; case -4: if ((8 * sizeof(gid_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) - 1 > 4 * PyLong_SHIFT)) { return (gid_t) (((gid_t)-1)*(((((((((gid_t)digits[3]) << PyLong_SHIFT) | (gid_t)digits[2]) << PyLong_SHIFT) | (gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0]))); } } break; case 4: if ((8 * sizeof(gid_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(gid_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(gid_t) - 1 > 4 * PyLong_SHIFT)) { return (gid_t) ((((((((((gid_t)digits[3]) << PyLong_SHIFT) | (gid_t)digits[2]) << PyLong_SHIFT) | (gid_t)digits[1]) << PyLong_SHIFT) | (gid_t)digits[0]))); } } break; } } #endif if ((sizeof(gid_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(gid_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(gid_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(gid_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { gid_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (gid_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (gid_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (gid_t) -1; } else { stepval = v; } v = NULL; val = (gid_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(gid_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((gid_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(gid_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((gid_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((gid_t) 1) << (sizeof(gid_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (gid_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to gid_t"); return (gid_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to gid_t"); return (gid_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_pid_t(pid_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const pid_t neg_one = (pid_t) -1, const_zero = (pid_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(pid_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(pid_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(pid_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(pid_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(pid_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(pid_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(pid_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE pid_t __Pyx_PyInt_As_pid_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const pid_t neg_one = (pid_t) -1, const_zero = (pid_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(pid_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(pid_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (pid_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { pid_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (pid_t) -1; val = __Pyx_PyInt_As_pid_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(pid_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(pid_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) >= 2 * PyLong_SHIFT)) { return (pid_t) (((((pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0])); } } break; case 3: if ((8 * sizeof(pid_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) >= 3 * PyLong_SHIFT)) { return (pid_t) (((((((pid_t)digits[2]) << PyLong_SHIFT) | (pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0])); } } break; case 4: if ((8 * sizeof(pid_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) >= 4 * PyLong_SHIFT)) { return (pid_t) (((((((((pid_t)digits[3]) << PyLong_SHIFT) | (pid_t)digits[2]) << PyLong_SHIFT) | (pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (pid_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(pid_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(pid_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(pid_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(pid_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(pid_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(pid_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) - 1 > 2 * PyLong_SHIFT)) { return (pid_t) (((pid_t)-1)*(((((pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0]))); } } break; case 2: if ((8 * sizeof(pid_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) - 1 > 2 * PyLong_SHIFT)) { return (pid_t) ((((((pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0]))); } } break; case -3: if ((8 * sizeof(pid_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) - 1 > 3 * PyLong_SHIFT)) { return (pid_t) (((pid_t)-1)*(((((((pid_t)digits[2]) << PyLong_SHIFT) | (pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0]))); } } break; case 3: if ((8 * sizeof(pid_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) - 1 > 3 * PyLong_SHIFT)) { return (pid_t) ((((((((pid_t)digits[2]) << PyLong_SHIFT) | (pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0]))); } } break; case -4: if ((8 * sizeof(pid_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) - 1 > 4 * PyLong_SHIFT)) { return (pid_t) (((pid_t)-1)*(((((((((pid_t)digits[3]) << PyLong_SHIFT) | (pid_t)digits[2]) << PyLong_SHIFT) | (pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0]))); } } break; case 4: if ((8 * sizeof(pid_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(pid_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(pid_t) - 1 > 4 * PyLong_SHIFT)) { return (pid_t) ((((((((((pid_t)digits[3]) << PyLong_SHIFT) | (pid_t)digits[2]) << PyLong_SHIFT) | (pid_t)digits[1]) << PyLong_SHIFT) | (pid_t)digits[0]))); } } break; } } #endif if ((sizeof(pid_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(pid_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(pid_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(pid_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { pid_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (pid_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (pid_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (pid_t) -1; } else { stepval = v; } v = NULL; val = (pid_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(pid_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((pid_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(pid_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((pid_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((pid_t) 1) << (sizeof(pid_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (pid_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to pid_t"); return (pid_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to pid_t"); return (pid_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uid_t(uid_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const uid_t neg_one = (uid_t) -1, const_zero = (uid_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(uid_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(uid_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(uid_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(uid_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(uid_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(uid_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uid_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE uid_t __Pyx_PyInt_As_uid_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const uid_t neg_one = (uid_t) -1, const_zero = (uid_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(uid_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(uid_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (uid_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { uid_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (uid_t) -1; val = __Pyx_PyInt_As_uid_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(uid_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(uid_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) >= 2 * PyLong_SHIFT)) { return (uid_t) (((((uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0])); } } break; case 3: if ((8 * sizeof(uid_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) >= 3 * PyLong_SHIFT)) { return (uid_t) (((((((uid_t)digits[2]) << PyLong_SHIFT) | (uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0])); } } break; case 4: if ((8 * sizeof(uid_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) >= 4 * PyLong_SHIFT)) { return (uid_t) (((((((((uid_t)digits[3]) << PyLong_SHIFT) | (uid_t)digits[2]) << PyLong_SHIFT) | (uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (uid_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(uid_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(uid_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(uid_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(uid_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(uid_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(uid_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) - 1 > 2 * PyLong_SHIFT)) { return (uid_t) (((uid_t)-1)*(((((uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0]))); } } break; case 2: if ((8 * sizeof(uid_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) - 1 > 2 * PyLong_SHIFT)) { return (uid_t) ((((((uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0]))); } } break; case -3: if ((8 * sizeof(uid_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) - 1 > 3 * PyLong_SHIFT)) { return (uid_t) (((uid_t)-1)*(((((((uid_t)digits[2]) << PyLong_SHIFT) | (uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0]))); } } break; case 3: if ((8 * sizeof(uid_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) - 1 > 3 * PyLong_SHIFT)) { return (uid_t) ((((((((uid_t)digits[2]) << PyLong_SHIFT) | (uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0]))); } } break; case -4: if ((8 * sizeof(uid_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) - 1 > 4 * PyLong_SHIFT)) { return (uid_t) (((uid_t)-1)*(((((((((uid_t)digits[3]) << PyLong_SHIFT) | (uid_t)digits[2]) << PyLong_SHIFT) | (uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0]))); } } break; case 4: if ((8 * sizeof(uid_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uid_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uid_t) - 1 > 4 * PyLong_SHIFT)) { return (uid_t) ((((((((((uid_t)digits[3]) << PyLong_SHIFT) | (uid_t)digits[2]) << PyLong_SHIFT) | (uid_t)digits[1]) << PyLong_SHIFT) | (uid_t)digits[0]))); } } break; } } #endif if ((sizeof(uid_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(uid_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(uid_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(uid_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { uid_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (uid_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (uid_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (uid_t) -1; } else { stepval = v; } v = NULL; val = (uid_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(uid_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((uid_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(uid_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((uid_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((uid_t) 1) << (sizeof(uid_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (uid_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to uid_t"); return (uid_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to uid_t"); return (uid_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_mode_t(mode_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const mode_t neg_one = (mode_t) -1, const_zero = (mode_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(mode_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(mode_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(mode_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(mode_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(mode_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(mode_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(mode_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE mode_t __Pyx_PyInt_As_mode_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const mode_t neg_one = (mode_t) -1, const_zero = (mode_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(mode_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(mode_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (mode_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { mode_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (mode_t) -1; val = __Pyx_PyInt_As_mode_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(mode_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(mode_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) >= 2 * PyLong_SHIFT)) { return (mode_t) (((((mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])); } } break; case 3: if ((8 * sizeof(mode_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) >= 3 * PyLong_SHIFT)) { return (mode_t) (((((((mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])); } } break; case 4: if ((8 * sizeof(mode_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) >= 4 * PyLong_SHIFT)) { return (mode_t) (((((((((mode_t)digits[3]) << PyLong_SHIFT) | (mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (mode_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(mode_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(mode_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(mode_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(mode_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(mode_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(mode_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) - 1 > 2 * PyLong_SHIFT)) { return (mode_t) (((mode_t)-1)*(((((mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]))); } } break; case 2: if ((8 * sizeof(mode_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) - 1 > 2 * PyLong_SHIFT)) { return (mode_t) ((((((mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]))); } } break; case -3: if ((8 * sizeof(mode_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) - 1 > 3 * PyLong_SHIFT)) { return (mode_t) (((mode_t)-1)*(((((((mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]))); } } break; case 3: if ((8 * sizeof(mode_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) - 1 > 3 * PyLong_SHIFT)) { return (mode_t) ((((((((mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]))); } } break; case -4: if ((8 * sizeof(mode_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) - 1 > 4 * PyLong_SHIFT)) { return (mode_t) (((mode_t)-1)*(((((((((mode_t)digits[3]) << PyLong_SHIFT) | (mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]))); } } break; case 4: if ((8 * sizeof(mode_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(mode_t) - 1 > 4 * PyLong_SHIFT)) { return (mode_t) ((((((((((mode_t)digits[3]) << PyLong_SHIFT) | (mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]))); } } break; } } #endif if ((sizeof(mode_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(mode_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(mode_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(mode_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { mode_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (mode_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (mode_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (mode_t) -1; } else { stepval = v; } v = NULL; val = (mode_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(mode_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((mode_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(mode_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((mode_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((mode_t) 1) << (sizeof(mode_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (mode_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to mode_t"); return (mode_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to mode_t"); return (mode_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From___pyx_anon_enum(int value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(size_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (size_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { size_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (size_t) -1; val = __Pyx_PyInt_As_size_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) { return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } } break; case 3: if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) { return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } } break; case 4: if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) { return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (size_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(size_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); } } break; case 2: if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); } } break; case -3: if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); } } break; case 3: if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); } } break; case -4: if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); } } break; case 4: if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); } } break; } } #endif if ((sizeof(size_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { size_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (size_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (size_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (size_t) -1; } else { stepval = v; } v = NULL; val = (size_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((size_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((size_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (size_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to size_t"); return (size_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to size_t"); return (size_t) -1; } /* CIntFromPy */ static CYTHON_INLINE fuse_ino_t __Pyx_PyInt_As_fuse_ino_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const fuse_ino_t neg_one = (fuse_ino_t) -1, const_zero = (fuse_ino_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(fuse_ino_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (fuse_ino_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { fuse_ino_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (fuse_ino_t) -1; val = __Pyx_PyInt_As_fuse_ino_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(fuse_ino_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) >= 2 * PyLong_SHIFT)) { return (fuse_ino_t) (((((fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0])); } } break; case 3: if ((8 * sizeof(fuse_ino_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) >= 3 * PyLong_SHIFT)) { return (fuse_ino_t) (((((((fuse_ino_t)digits[2]) << PyLong_SHIFT) | (fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0])); } } break; case 4: if ((8 * sizeof(fuse_ino_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) >= 4 * PyLong_SHIFT)) { return (fuse_ino_t) (((((((((fuse_ino_t)digits[3]) << PyLong_SHIFT) | (fuse_ino_t)digits[2]) << PyLong_SHIFT) | (fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (fuse_ino_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(fuse_ino_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(fuse_ino_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(fuse_ino_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(fuse_ino_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(fuse_ino_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) - 1 > 2 * PyLong_SHIFT)) { return (fuse_ino_t) (((fuse_ino_t)-1)*(((((fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0]))); } } break; case 2: if ((8 * sizeof(fuse_ino_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) - 1 > 2 * PyLong_SHIFT)) { return (fuse_ino_t) ((((((fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0]))); } } break; case -3: if ((8 * sizeof(fuse_ino_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) - 1 > 3 * PyLong_SHIFT)) { return (fuse_ino_t) (((fuse_ino_t)-1)*(((((((fuse_ino_t)digits[2]) << PyLong_SHIFT) | (fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0]))); } } break; case 3: if ((8 * sizeof(fuse_ino_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) - 1 > 3 * PyLong_SHIFT)) { return (fuse_ino_t) ((((((((fuse_ino_t)digits[2]) << PyLong_SHIFT) | (fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0]))); } } break; case -4: if ((8 * sizeof(fuse_ino_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) - 1 > 4 * PyLong_SHIFT)) { return (fuse_ino_t) (((fuse_ino_t)-1)*(((((((((fuse_ino_t)digits[3]) << PyLong_SHIFT) | (fuse_ino_t)digits[2]) << PyLong_SHIFT) | (fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0]))); } } break; case 4: if ((8 * sizeof(fuse_ino_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fuse_ino_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fuse_ino_t) - 1 > 4 * PyLong_SHIFT)) { return (fuse_ino_t) ((((((((((fuse_ino_t)digits[3]) << PyLong_SHIFT) | (fuse_ino_t)digits[2]) << PyLong_SHIFT) | (fuse_ino_t)digits[1]) << PyLong_SHIFT) | (fuse_ino_t)digits[0]))); } } break; } } #endif if ((sizeof(fuse_ino_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(fuse_ino_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(fuse_ino_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(fuse_ino_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { fuse_ino_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (fuse_ino_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (fuse_ino_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (fuse_ino_t) -1; } else { stepval = v; } v = NULL; val = (fuse_ino_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(fuse_ino_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((fuse_ino_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(fuse_ino_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((fuse_ino_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((fuse_ino_t) 1) << (sizeof(fuse_ino_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (fuse_ino_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to fuse_ino_t"); return (fuse_ino_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to fuse_ino_t"); return (fuse_ino_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fuse_ino_t(fuse_ino_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const fuse_ino_t neg_one = (fuse_ino_t) -1, const_zero = (fuse_ino_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(fuse_ino_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(fuse_ino_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(fuse_ino_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(fuse_ino_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(fuse_ino_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(fuse_ino_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(fuse_ino_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE off_t __Pyx_PyInt_As_off_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const off_t neg_one = (off_t) -1, const_zero = (off_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(off_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(off_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (off_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { off_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (off_t) -1; val = __Pyx_PyInt_As_off_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(off_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(off_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) >= 2 * PyLong_SHIFT)) { return (off_t) (((((off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0])); } } break; case 3: if ((8 * sizeof(off_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) >= 3 * PyLong_SHIFT)) { return (off_t) (((((((off_t)digits[2]) << PyLong_SHIFT) | (off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0])); } } break; case 4: if ((8 * sizeof(off_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) >= 4 * PyLong_SHIFT)) { return (off_t) (((((((((off_t)digits[3]) << PyLong_SHIFT) | (off_t)digits[2]) << PyLong_SHIFT) | (off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (off_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(off_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(off_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(off_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(off_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(off_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(off_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) - 1 > 2 * PyLong_SHIFT)) { return (off_t) (((off_t)-1)*(((((off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0]))); } } break; case 2: if ((8 * sizeof(off_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) - 1 > 2 * PyLong_SHIFT)) { return (off_t) ((((((off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0]))); } } break; case -3: if ((8 * sizeof(off_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) - 1 > 3 * PyLong_SHIFT)) { return (off_t) (((off_t)-1)*(((((((off_t)digits[2]) << PyLong_SHIFT) | (off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0]))); } } break; case 3: if ((8 * sizeof(off_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) - 1 > 3 * PyLong_SHIFT)) { return (off_t) ((((((((off_t)digits[2]) << PyLong_SHIFT) | (off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0]))); } } break; case -4: if ((8 * sizeof(off_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) - 1 > 4 * PyLong_SHIFT)) { return (off_t) (((off_t)-1)*(((((((((off_t)digits[3]) << PyLong_SHIFT) | (off_t)digits[2]) << PyLong_SHIFT) | (off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0]))); } } break; case 4: if ((8 * sizeof(off_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(off_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(off_t) - 1 > 4 * PyLong_SHIFT)) { return (off_t) ((((((((((off_t)digits[3]) << PyLong_SHIFT) | (off_t)digits[2]) << PyLong_SHIFT) | (off_t)digits[1]) << PyLong_SHIFT) | (off_t)digits[0]))); } } break; } } #endif if ((sizeof(off_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(off_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(off_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(off_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { off_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (off_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (off_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (off_t) -1; } else { stepval = v; } v = NULL; val = (off_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(off_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((off_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(off_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((off_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((off_t) 1) << (sizeof(off_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (off_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to off_t"); return (off_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to off_t"); return (off_t) -1; } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(long) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } #endif if (unlikely(!PyLong_Check(x))) { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(long) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } } #endif if ((sizeof(long) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { long val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (long) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (long) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (long) -1; } else { stepval = v; } v = NULL; val = (long) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((long) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((long) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (long) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(unsigned int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(unsigned int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(unsigned int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(unsigned int), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned int)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(uint64_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(uint64_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(uint64_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(uint64_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint64_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_dev_t(dev_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const dev_t neg_one = (dev_t) -1, const_zero = (dev_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(dev_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(dev_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(dev_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(dev_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(dev_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(dev_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(dev_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_off_t(off_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const off_t neg_one = (off_t) -1, const_zero = (off_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(off_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(off_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(off_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(off_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(off_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(off_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(off_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(uint64_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (uint64_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { uint64_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (uint64_t) -1; val = __Pyx_PyInt_As_uint64_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(uint64_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(uint64_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT)) { return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])); } } break; case 3: if ((8 * sizeof(uint64_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT)) { return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])); } } break; case 4: if ((8 * sizeof(uint64_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT)) { return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (uint64_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(uint64_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(uint64_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) { return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); } } break; case 2: if ((8 * sizeof(uint64_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) { return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); } } break; case -3: if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) { return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); } } break; case 3: if ((8 * sizeof(uint64_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) { return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); } } break; case -4: if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT)) { return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); } } break; case 4: if ((8 * sizeof(uint64_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT)) { return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); } } break; } } #endif if ((sizeof(uint64_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(uint64_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { uint64_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (uint64_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (uint64_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (uint64_t) -1; } else { stepval = v; } v = NULL; val = (uint64_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(uint64_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((uint64_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(uint64_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((uint64_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((uint64_t) 1) << (sizeof(uint64_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (uint64_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to uint64_t"); return (uint64_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to uint64_t"); return (uint64_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE ino_t __Pyx_PyInt_As_ino_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const ino_t neg_one = (ino_t) -1, const_zero = (ino_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(ino_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(ino_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (ino_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { ino_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (ino_t) -1; val = __Pyx_PyInt_As_ino_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(ino_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(ino_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) >= 2 * PyLong_SHIFT)) { return (ino_t) (((((ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0])); } } break; case 3: if ((8 * sizeof(ino_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) >= 3 * PyLong_SHIFT)) { return (ino_t) (((((((ino_t)digits[2]) << PyLong_SHIFT) | (ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0])); } } break; case 4: if ((8 * sizeof(ino_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) >= 4 * PyLong_SHIFT)) { return (ino_t) (((((((((ino_t)digits[3]) << PyLong_SHIFT) | (ino_t)digits[2]) << PyLong_SHIFT) | (ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (ino_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(ino_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(ino_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(ino_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(ino_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(ino_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(ino_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) - 1 > 2 * PyLong_SHIFT)) { return (ino_t) (((ino_t)-1)*(((((ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0]))); } } break; case 2: if ((8 * sizeof(ino_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) - 1 > 2 * PyLong_SHIFT)) { return (ino_t) ((((((ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0]))); } } break; case -3: if ((8 * sizeof(ino_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) - 1 > 3 * PyLong_SHIFT)) { return (ino_t) (((ino_t)-1)*(((((((ino_t)digits[2]) << PyLong_SHIFT) | (ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0]))); } } break; case 3: if ((8 * sizeof(ino_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) - 1 > 3 * PyLong_SHIFT)) { return (ino_t) ((((((((ino_t)digits[2]) << PyLong_SHIFT) | (ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0]))); } } break; case -4: if ((8 * sizeof(ino_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) - 1 > 4 * PyLong_SHIFT)) { return (ino_t) (((ino_t)-1)*(((((((((ino_t)digits[3]) << PyLong_SHIFT) | (ino_t)digits[2]) << PyLong_SHIFT) | (ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0]))); } } break; case 4: if ((8 * sizeof(ino_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(ino_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(ino_t) - 1 > 4 * PyLong_SHIFT)) { return (ino_t) ((((((((((ino_t)digits[3]) << PyLong_SHIFT) | (ino_t)digits[2]) << PyLong_SHIFT) | (ino_t)digits[1]) << PyLong_SHIFT) | (ino_t)digits[0]))); } } break; } } #endif if ((sizeof(ino_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(ino_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(ino_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(ino_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { ino_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (ino_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (ino_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (ino_t) -1; } else { stepval = v; } v = NULL; val = (ino_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(ino_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((ino_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(ino_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((ino_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((ino_t) 1) << (sizeof(ino_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (ino_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to ino_t"); return (ino_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to ino_t"); return (ino_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_nlink_t(nlink_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const nlink_t neg_one = (nlink_t) -1, const_zero = (nlink_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(nlink_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(nlink_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(nlink_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(nlink_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(nlink_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(nlink_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(nlink_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE nlink_t __Pyx_PyInt_As_nlink_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const nlink_t neg_one = (nlink_t) -1, const_zero = (nlink_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(nlink_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(nlink_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (nlink_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { nlink_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (nlink_t) -1; val = __Pyx_PyInt_As_nlink_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(nlink_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(nlink_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) >= 2 * PyLong_SHIFT)) { return (nlink_t) (((((nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0])); } } break; case 3: if ((8 * sizeof(nlink_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) >= 3 * PyLong_SHIFT)) { return (nlink_t) (((((((nlink_t)digits[2]) << PyLong_SHIFT) | (nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0])); } } break; case 4: if ((8 * sizeof(nlink_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) >= 4 * PyLong_SHIFT)) { return (nlink_t) (((((((((nlink_t)digits[3]) << PyLong_SHIFT) | (nlink_t)digits[2]) << PyLong_SHIFT) | (nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (nlink_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(nlink_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(nlink_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(nlink_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(nlink_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(nlink_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(nlink_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) - 1 > 2 * PyLong_SHIFT)) { return (nlink_t) (((nlink_t)-1)*(((((nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0]))); } } break; case 2: if ((8 * sizeof(nlink_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) - 1 > 2 * PyLong_SHIFT)) { return (nlink_t) ((((((nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0]))); } } break; case -3: if ((8 * sizeof(nlink_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) - 1 > 3 * PyLong_SHIFT)) { return (nlink_t) (((nlink_t)-1)*(((((((nlink_t)digits[2]) << PyLong_SHIFT) | (nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0]))); } } break; case 3: if ((8 * sizeof(nlink_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) - 1 > 3 * PyLong_SHIFT)) { return (nlink_t) ((((((((nlink_t)digits[2]) << PyLong_SHIFT) | (nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0]))); } } break; case -4: if ((8 * sizeof(nlink_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) - 1 > 4 * PyLong_SHIFT)) { return (nlink_t) (((nlink_t)-1)*(((((((((nlink_t)digits[3]) << PyLong_SHIFT) | (nlink_t)digits[2]) << PyLong_SHIFT) | (nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0]))); } } break; case 4: if ((8 * sizeof(nlink_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(nlink_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(nlink_t) - 1 > 4 * PyLong_SHIFT)) { return (nlink_t) ((((((((((nlink_t)digits[3]) << PyLong_SHIFT) | (nlink_t)digits[2]) << PyLong_SHIFT) | (nlink_t)digits[1]) << PyLong_SHIFT) | (nlink_t)digits[0]))); } } break; } } #endif if ((sizeof(nlink_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(nlink_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(nlink_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(nlink_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { nlink_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (nlink_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (nlink_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (nlink_t) -1; } else { stepval = v; } v = NULL; val = (nlink_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(nlink_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((nlink_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(nlink_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((nlink_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((nlink_t) 1) << (sizeof(nlink_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (nlink_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to nlink_t"); return (nlink_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to nlink_t"); return (nlink_t) -1; } /* CIntFromPy */ static CYTHON_INLINE dev_t __Pyx_PyInt_As_dev_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const dev_t neg_one = (dev_t) -1, const_zero = (dev_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(dev_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(dev_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (dev_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { dev_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (dev_t) -1; val = __Pyx_PyInt_As_dev_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(dev_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(dev_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) >= 2 * PyLong_SHIFT)) { return (dev_t) (((((dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0])); } } break; case 3: if ((8 * sizeof(dev_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) >= 3 * PyLong_SHIFT)) { return (dev_t) (((((((dev_t)digits[2]) << PyLong_SHIFT) | (dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0])); } } break; case 4: if ((8 * sizeof(dev_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) >= 4 * PyLong_SHIFT)) { return (dev_t) (((((((((dev_t)digits[3]) << PyLong_SHIFT) | (dev_t)digits[2]) << PyLong_SHIFT) | (dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (dev_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(dev_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(dev_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(dev_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(dev_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(dev_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(dev_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) - 1 > 2 * PyLong_SHIFT)) { return (dev_t) (((dev_t)-1)*(((((dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0]))); } } break; case 2: if ((8 * sizeof(dev_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) - 1 > 2 * PyLong_SHIFT)) { return (dev_t) ((((((dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0]))); } } break; case -3: if ((8 * sizeof(dev_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) - 1 > 3 * PyLong_SHIFT)) { return (dev_t) (((dev_t)-1)*(((((((dev_t)digits[2]) << PyLong_SHIFT) | (dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0]))); } } break; case 3: if ((8 * sizeof(dev_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) - 1 > 3 * PyLong_SHIFT)) { return (dev_t) ((((((((dev_t)digits[2]) << PyLong_SHIFT) | (dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0]))); } } break; case -4: if ((8 * sizeof(dev_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) - 1 > 4 * PyLong_SHIFT)) { return (dev_t) (((dev_t)-1)*(((((((((dev_t)digits[3]) << PyLong_SHIFT) | (dev_t)digits[2]) << PyLong_SHIFT) | (dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0]))); } } break; case 4: if ((8 * sizeof(dev_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(dev_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(dev_t) - 1 > 4 * PyLong_SHIFT)) { return (dev_t) ((((((((((dev_t)digits[3]) << PyLong_SHIFT) | (dev_t)digits[2]) << PyLong_SHIFT) | (dev_t)digits[1]) << PyLong_SHIFT) | (dev_t)digits[0]))); } } break; } } #endif if ((sizeof(dev_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(dev_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(dev_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(dev_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { dev_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (dev_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (dev_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (dev_t) -1; } else { stepval = v; } v = NULL; val = (dev_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(dev_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((dev_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(dev_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((dev_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((dev_t) 1) << (sizeof(dev_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (dev_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to dev_t"); return (dev_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to dev_t"); return (dev_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_blkcnt_t(blkcnt_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const blkcnt_t neg_one = (blkcnt_t) -1, const_zero = (blkcnt_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(blkcnt_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(blkcnt_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(blkcnt_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(blkcnt_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(blkcnt_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(blkcnt_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(blkcnt_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE blkcnt_t __Pyx_PyInt_As_blkcnt_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const blkcnt_t neg_one = (blkcnt_t) -1, const_zero = (blkcnt_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(blkcnt_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(blkcnt_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (blkcnt_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { blkcnt_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (blkcnt_t) -1; val = __Pyx_PyInt_As_blkcnt_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(blkcnt_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) >= 2 * PyLong_SHIFT)) { return (blkcnt_t) (((((blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0])); } } break; case 3: if ((8 * sizeof(blkcnt_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) >= 3 * PyLong_SHIFT)) { return (blkcnt_t) (((((((blkcnt_t)digits[2]) << PyLong_SHIFT) | (blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0])); } } break; case 4: if ((8 * sizeof(blkcnt_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) >= 4 * PyLong_SHIFT)) { return (blkcnt_t) (((((((((blkcnt_t)digits[3]) << PyLong_SHIFT) | (blkcnt_t)digits[2]) << PyLong_SHIFT) | (blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (blkcnt_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(blkcnt_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(blkcnt_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(blkcnt_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(blkcnt_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(blkcnt_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) - 1 > 2 * PyLong_SHIFT)) { return (blkcnt_t) (((blkcnt_t)-1)*(((((blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0]))); } } break; case 2: if ((8 * sizeof(blkcnt_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) - 1 > 2 * PyLong_SHIFT)) { return (blkcnt_t) ((((((blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0]))); } } break; case -3: if ((8 * sizeof(blkcnt_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) - 1 > 3 * PyLong_SHIFT)) { return (blkcnt_t) (((blkcnt_t)-1)*(((((((blkcnt_t)digits[2]) << PyLong_SHIFT) | (blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0]))); } } break; case 3: if ((8 * sizeof(blkcnt_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) - 1 > 3 * PyLong_SHIFT)) { return (blkcnt_t) ((((((((blkcnt_t)digits[2]) << PyLong_SHIFT) | (blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0]))); } } break; case -4: if ((8 * sizeof(blkcnt_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) - 1 > 4 * PyLong_SHIFT)) { return (blkcnt_t) (((blkcnt_t)-1)*(((((((((blkcnt_t)digits[3]) << PyLong_SHIFT) | (blkcnt_t)digits[2]) << PyLong_SHIFT) | (blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0]))); } } break; case 4: if ((8 * sizeof(blkcnt_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blkcnt_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blkcnt_t) - 1 > 4 * PyLong_SHIFT)) { return (blkcnt_t) ((((((((((blkcnt_t)digits[3]) << PyLong_SHIFT) | (blkcnt_t)digits[2]) << PyLong_SHIFT) | (blkcnt_t)digits[1]) << PyLong_SHIFT) | (blkcnt_t)digits[0]))); } } break; } } #endif if ((sizeof(blkcnt_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(blkcnt_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(blkcnt_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(blkcnt_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { blkcnt_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (blkcnt_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (blkcnt_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (blkcnt_t) -1; } else { stepval = v; } v = NULL; val = (blkcnt_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(blkcnt_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((blkcnt_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(blkcnt_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((blkcnt_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((blkcnt_t) 1) << (sizeof(blkcnt_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (blkcnt_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to blkcnt_t"); return (blkcnt_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to blkcnt_t"); return (blkcnt_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_blksize_t(blksize_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const blksize_t neg_one = (blksize_t) -1, const_zero = (blksize_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(blksize_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(blksize_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(blksize_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(blksize_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(blksize_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(blksize_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(blksize_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE blksize_t __Pyx_PyInt_As_blksize_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const blksize_t neg_one = (blksize_t) -1, const_zero = (blksize_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(blksize_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(blksize_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (blksize_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { blksize_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (blksize_t) -1; val = __Pyx_PyInt_As_blksize_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(blksize_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(blksize_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) >= 2 * PyLong_SHIFT)) { return (blksize_t) (((((blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0])); } } break; case 3: if ((8 * sizeof(blksize_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) >= 3 * PyLong_SHIFT)) { return (blksize_t) (((((((blksize_t)digits[2]) << PyLong_SHIFT) | (blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0])); } } break; case 4: if ((8 * sizeof(blksize_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) >= 4 * PyLong_SHIFT)) { return (blksize_t) (((((((((blksize_t)digits[3]) << PyLong_SHIFT) | (blksize_t)digits[2]) << PyLong_SHIFT) | (blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (blksize_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(blksize_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(blksize_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(blksize_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(blksize_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(blksize_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(blksize_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) - 1 > 2 * PyLong_SHIFT)) { return (blksize_t) (((blksize_t)-1)*(((((blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0]))); } } break; case 2: if ((8 * sizeof(blksize_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) - 1 > 2 * PyLong_SHIFT)) { return (blksize_t) ((((((blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0]))); } } break; case -3: if ((8 * sizeof(blksize_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) - 1 > 3 * PyLong_SHIFT)) { return (blksize_t) (((blksize_t)-1)*(((((((blksize_t)digits[2]) << PyLong_SHIFT) | (blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0]))); } } break; case 3: if ((8 * sizeof(blksize_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) - 1 > 3 * PyLong_SHIFT)) { return (blksize_t) ((((((((blksize_t)digits[2]) << PyLong_SHIFT) | (blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0]))); } } break; case -4: if ((8 * sizeof(blksize_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) - 1 > 4 * PyLong_SHIFT)) { return (blksize_t) (((blksize_t)-1)*(((((((((blksize_t)digits[3]) << PyLong_SHIFT) | (blksize_t)digits[2]) << PyLong_SHIFT) | (blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0]))); } } break; case 4: if ((8 * sizeof(blksize_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(blksize_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(blksize_t) - 1 > 4 * PyLong_SHIFT)) { return (blksize_t) ((((((((((blksize_t)digits[3]) << PyLong_SHIFT) | (blksize_t)digits[2]) << PyLong_SHIFT) | (blksize_t)digits[1]) << PyLong_SHIFT) | (blksize_t)digits[0]))); } } break; } } #endif if ((sizeof(blksize_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(blksize_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(blksize_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(blksize_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { blksize_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (blksize_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (blksize_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (blksize_t) -1; } else { stepval = v; } v = NULL; val = (blksize_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(blksize_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((blksize_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(blksize_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((blksize_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((blksize_t) 1) << (sizeof(blksize_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (blksize_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to blksize_t"); return (blksize_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to blksize_t"); return (blksize_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_time_t(time_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const time_t neg_one = (time_t) -1, const_zero = (time_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(time_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(time_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(time_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(time_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(time_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(time_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(time_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE time_t __Pyx_PyInt_As_time_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const time_t neg_one = (time_t) -1, const_zero = (time_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(time_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(time_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (time_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { time_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (time_t) -1; val = __Pyx_PyInt_As_time_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(time_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(time_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) >= 2 * PyLong_SHIFT)) { return (time_t) (((((time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])); } } break; case 3: if ((8 * sizeof(time_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) >= 3 * PyLong_SHIFT)) { return (time_t) (((((((time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])); } } break; case 4: if ((8 * sizeof(time_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) >= 4 * PyLong_SHIFT)) { return (time_t) (((((((((time_t)digits[3]) << PyLong_SHIFT) | (time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (time_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(time_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(time_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(time_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(time_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(time_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(time_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) - 1 > 2 * PyLong_SHIFT)) { return (time_t) (((time_t)-1)*(((((time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]))); } } break; case 2: if ((8 * sizeof(time_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) - 1 > 2 * PyLong_SHIFT)) { return (time_t) ((((((time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]))); } } break; case -3: if ((8 * sizeof(time_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) - 1 > 3 * PyLong_SHIFT)) { return (time_t) (((time_t)-1)*(((((((time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]))); } } break; case 3: if ((8 * sizeof(time_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) - 1 > 3 * PyLong_SHIFT)) { return (time_t) ((((((((time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]))); } } break; case -4: if ((8 * sizeof(time_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) - 1 > 4 * PyLong_SHIFT)) { return (time_t) (((time_t)-1)*(((((((((time_t)digits[3]) << PyLong_SHIFT) | (time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]))); } } break; case 4: if ((8 * sizeof(time_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(time_t) - 1 > 4 * PyLong_SHIFT)) { return (time_t) ((((((((((time_t)digits[3]) << PyLong_SHIFT) | (time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]))); } } break; } } #endif if ((sizeof(time_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(time_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(time_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(time_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { time_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (time_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (time_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (time_t) -1; } else { stepval = v; } v = NULL; val = (time_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(time_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((time_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(time_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((time_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((time_t) 1) << (sizeof(time_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (time_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to time_t"); return (time_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to time_t"); return (time_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(unsigned long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(unsigned long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(unsigned long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(unsigned long), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned long)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(unsigned long) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(unsigned long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (unsigned long) val; } } #endif if (unlikely(!PyLong_Check(x))) { unsigned long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (unsigned long) -1; val = __Pyx_PyInt_As_unsigned_long(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(unsigned long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(unsigned long) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) >= 2 * PyLong_SHIFT)) { return (unsigned long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); } } break; case 3: if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) >= 3 * PyLong_SHIFT)) { return (unsigned long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); } } break; case 4: if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) >= 4 * PyLong_SHIFT)) { return (unsigned long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (unsigned long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(unsigned long) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(unsigned long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(unsigned long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(unsigned long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(unsigned long) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT)) { return (unsigned long) (((unsigned long)-1)*(((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))); } } break; case 2: if ((8 * sizeof(unsigned long) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT)) { return (unsigned long) ((((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))); } } break; case -3: if ((8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT)) { return (unsigned long) (((unsigned long)-1)*(((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))); } } break; case 3: if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT)) { return (unsigned long) ((((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))); } } break; case -4: if ((8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) - 1 > 4 * PyLong_SHIFT)) { return (unsigned long) (((unsigned long)-1)*(((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))); } } break; case 4: if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(unsigned long) - 1 > 4 * PyLong_SHIFT)) { return (unsigned long) ((((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))); } } break; } } #endif if ((sizeof(unsigned long) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(unsigned long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(unsigned long) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(unsigned long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { unsigned long val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (unsigned long) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (unsigned long) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (unsigned long) -1; } else { stepval = v; } v = NULL; val = (unsigned long) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(unsigned long) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((unsigned long) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(unsigned long) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((unsigned long) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((unsigned long) 1) << (sizeof(unsigned long) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (unsigned long) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned long"); return (unsigned long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned long"); return (unsigned long) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fsblkcnt_t(fsblkcnt_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const fsblkcnt_t neg_one = (fsblkcnt_t) -1, const_zero = (fsblkcnt_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(fsblkcnt_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(fsblkcnt_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(fsblkcnt_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(fsblkcnt_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(fsblkcnt_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(fsblkcnt_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(fsblkcnt_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE fsblkcnt_t __Pyx_PyInt_As_fsblkcnt_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const fsblkcnt_t neg_one = (fsblkcnt_t) -1, const_zero = (fsblkcnt_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(fsblkcnt_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (fsblkcnt_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { fsblkcnt_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (fsblkcnt_t) -1; val = __Pyx_PyInt_As_fsblkcnt_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(fsblkcnt_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) >= 2 * PyLong_SHIFT)) { return (fsblkcnt_t) (((((fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0])); } } break; case 3: if ((8 * sizeof(fsblkcnt_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) >= 3 * PyLong_SHIFT)) { return (fsblkcnt_t) (((((((fsblkcnt_t)digits[2]) << PyLong_SHIFT) | (fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0])); } } break; case 4: if ((8 * sizeof(fsblkcnt_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) >= 4 * PyLong_SHIFT)) { return (fsblkcnt_t) (((((((((fsblkcnt_t)digits[3]) << PyLong_SHIFT) | (fsblkcnt_t)digits[2]) << PyLong_SHIFT) | (fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (fsblkcnt_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(fsblkcnt_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(fsblkcnt_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(fsblkcnt_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(fsblkcnt_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(fsblkcnt_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) - 1 > 2 * PyLong_SHIFT)) { return (fsblkcnt_t) (((fsblkcnt_t)-1)*(((((fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0]))); } } break; case 2: if ((8 * sizeof(fsblkcnt_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) - 1 > 2 * PyLong_SHIFT)) { return (fsblkcnt_t) ((((((fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0]))); } } break; case -3: if ((8 * sizeof(fsblkcnt_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) - 1 > 3 * PyLong_SHIFT)) { return (fsblkcnt_t) (((fsblkcnt_t)-1)*(((((((fsblkcnt_t)digits[2]) << PyLong_SHIFT) | (fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0]))); } } break; case 3: if ((8 * sizeof(fsblkcnt_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) - 1 > 3 * PyLong_SHIFT)) { return (fsblkcnt_t) ((((((((fsblkcnt_t)digits[2]) << PyLong_SHIFT) | (fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0]))); } } break; case -4: if ((8 * sizeof(fsblkcnt_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) - 1 > 4 * PyLong_SHIFT)) { return (fsblkcnt_t) (((fsblkcnt_t)-1)*(((((((((fsblkcnt_t)digits[3]) << PyLong_SHIFT) | (fsblkcnt_t)digits[2]) << PyLong_SHIFT) | (fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0]))); } } break; case 4: if ((8 * sizeof(fsblkcnt_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsblkcnt_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsblkcnt_t) - 1 > 4 * PyLong_SHIFT)) { return (fsblkcnt_t) ((((((((((fsblkcnt_t)digits[3]) << PyLong_SHIFT) | (fsblkcnt_t)digits[2]) << PyLong_SHIFT) | (fsblkcnt_t)digits[1]) << PyLong_SHIFT) | (fsblkcnt_t)digits[0]))); } } break; } } #endif if ((sizeof(fsblkcnt_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(fsblkcnt_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(fsblkcnt_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(fsblkcnt_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { fsblkcnt_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (fsblkcnt_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (fsblkcnt_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (fsblkcnt_t) -1; } else { stepval = v; } v = NULL; val = (fsblkcnt_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(fsblkcnt_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((fsblkcnt_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(fsblkcnt_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((fsblkcnt_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((fsblkcnt_t) 1) << (sizeof(fsblkcnt_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (fsblkcnt_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to fsblkcnt_t"); return (fsblkcnt_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to fsblkcnt_t"); return (fsblkcnt_t) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fsfilcnt_t(fsfilcnt_t value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const fsfilcnt_t neg_one = (fsfilcnt_t) -1, const_zero = (fsfilcnt_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(fsfilcnt_t) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(fsfilcnt_t) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(fsfilcnt_t) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(fsfilcnt_t) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(fsfilcnt_t) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 if (is_unsigned) { return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); } else { return PyLong_FromNativeBytes(bytes, sizeof(value), -1); } #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 int one = 1; int little = (int)*(unsigned char *)&one; return _PyLong_FromByteArray(bytes, sizeof(fsfilcnt_t), little, !is_unsigned); #else int one = 1; int little = (int)*(unsigned char *)&one; PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(fsfilcnt_t)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE fsfilcnt_t __Pyx_PyInt_As_fsfilcnt_t(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const fsfilcnt_t neg_one = (fsfilcnt_t) -1, const_zero = (fsfilcnt_t) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(fsfilcnt_t) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (fsfilcnt_t) val; } } #endif if (unlikely(!PyLong_Check(x))) { fsfilcnt_t val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (fsfilcnt_t) -1; val = __Pyx_PyInt_As_fsfilcnt_t(tmp); Py_DECREF(tmp); return val; } if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(fsfilcnt_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) >= 2 * PyLong_SHIFT)) { return (fsfilcnt_t) (((((fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0])); } } break; case 3: if ((8 * sizeof(fsfilcnt_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) >= 3 * PyLong_SHIFT)) { return (fsfilcnt_t) (((((((fsfilcnt_t)digits[2]) << PyLong_SHIFT) | (fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0])); } } break; case 4: if ((8 * sizeof(fsfilcnt_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) >= 4 * PyLong_SHIFT)) { return (fsfilcnt_t) (((((((((fsfilcnt_t)digits[3]) << PyLong_SHIFT) | (fsfilcnt_t)digits[2]) << PyLong_SHIFT) | (fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (fsfilcnt_t) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(fsfilcnt_t) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(fsfilcnt_t, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(fsfilcnt_t) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(fsfilcnt_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(fsfilcnt_t) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) - 1 > 2 * PyLong_SHIFT)) { return (fsfilcnt_t) (((fsfilcnt_t)-1)*(((((fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0]))); } } break; case 2: if ((8 * sizeof(fsfilcnt_t) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) - 1 > 2 * PyLong_SHIFT)) { return (fsfilcnt_t) ((((((fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0]))); } } break; case -3: if ((8 * sizeof(fsfilcnt_t) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) - 1 > 3 * PyLong_SHIFT)) { return (fsfilcnt_t) (((fsfilcnt_t)-1)*(((((((fsfilcnt_t)digits[2]) << PyLong_SHIFT) | (fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0]))); } } break; case 3: if ((8 * sizeof(fsfilcnt_t) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) - 1 > 3 * PyLong_SHIFT)) { return (fsfilcnt_t) ((((((((fsfilcnt_t)digits[2]) << PyLong_SHIFT) | (fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0]))); } } break; case -4: if ((8 * sizeof(fsfilcnt_t) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) - 1 > 4 * PyLong_SHIFT)) { return (fsfilcnt_t) (((fsfilcnt_t)-1)*(((((((((fsfilcnt_t)digits[3]) << PyLong_SHIFT) | (fsfilcnt_t)digits[2]) << PyLong_SHIFT) | (fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0]))); } } break; case 4: if ((8 * sizeof(fsfilcnt_t) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(fsfilcnt_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(fsfilcnt_t) - 1 > 4 * PyLong_SHIFT)) { return (fsfilcnt_t) ((((((((((fsfilcnt_t)digits[3]) << PyLong_SHIFT) | (fsfilcnt_t)digits[2]) << PyLong_SHIFT) | (fsfilcnt_t)digits[1]) << PyLong_SHIFT) | (fsfilcnt_t)digits[0]))); } } break; } } #endif if ((sizeof(fsfilcnt_t) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(fsfilcnt_t, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(fsfilcnt_t) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(fsfilcnt_t, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { fsfilcnt_t val; int ret = -1; #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API Py_ssize_t bytes_copied = PyLong_AsNativeBytes( x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); if (unlikely(bytes_copied == -1)) { } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { goto raise_overflow; } else { ret = 0; } #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)x, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *v; PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (likely(PyLong_CheckExact(x))) { v = __Pyx_NewRef(x); } else { v = PyNumber_Long(x); if (unlikely(!v)) return (fsfilcnt_t) -1; assert(PyLong_CheckExact(v)); } { int result = PyObject_RichCompareBool(v, Py_False, Py_LT); if (unlikely(result < 0)) { Py_DECREF(v); return (fsfilcnt_t) -1; } is_negative = result == 1; } if (is_unsigned && unlikely(is_negative)) { Py_DECREF(v); goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); Py_DECREF(v); if (unlikely(!stepval)) return (fsfilcnt_t) -1; } else { stepval = v; } v = NULL; val = (fsfilcnt_t) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(fsfilcnt_t) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; long idigit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; val |= ((fsfilcnt_t) idigit) << bits; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; } Py_DECREF(shift); shift = NULL; Py_DECREF(mask); mask = NULL; { long idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(fsfilcnt_t) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((fsfilcnt_t) idigit) << bits; } if (!is_unsigned) { if (unlikely(val & (((fsfilcnt_t) 1) << (sizeof(fsfilcnt_t) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif if (unlikely(ret)) return (fsfilcnt_t) -1; return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to fsfilcnt_t"); return (fsfilcnt_t) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to fsfilcnt_t"); return (fsfilcnt_t) -1; } /* CheckBinaryVersion */ static unsigned long __Pyx_get_runtime_version(void) { #if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4 return Py_Version & ~0xFFUL; #else const char* rt_version = Py_GetVersion(); unsigned long version = 0; unsigned long factor = 0x01000000UL; unsigned int digit = 0; int i = 0; while (factor) { while ('0' <= rt_version[i] && rt_version[i] <= '9') { digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); ++i; } version += factor * digit; if (rt_version[i] != '.') break; digit = 0; factor >>= 8; ++i; } return version; #endif } static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { const unsigned long MAJOR_MINOR = 0xFFFF0000UL; if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) return 0; if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) return 1; { char message[200]; PyOS_snprintf(message, sizeof(message), "compile time Python version %d.%d " "of module '%.100s' " "%s " "runtime version %d.%d", (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), __Pyx_MODULE_NAME, (allow_newer) ? "was newer than" : "does not match", (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) ); return PyErr_WarnEx(NULL, message, 1); } } /* InitStrings */ #if PY_MAJOR_VERSION >= 3 static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { if (t.is_unicode | t.is_str) { if (t.intern) { *str = PyUnicode_InternFromString(t.s); } else if (t.encoding) { *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); } else { *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); } } else { *str = PyBytes_FromStringAndSize(t.s, t.n - 1); } if (!*str) return -1; if (PyObject_Hash(*str) == -1) return -1; return 0; } #endif static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION >= 3 __Pyx_InitString(*t, t->p); #else if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } if (!*t->p) return -1; if (PyObject_Hash(*t->p) == -1) return -1; #endif ++t; } return 0; } #include static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { size_t len = strlen(s); if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "byte string is too long"); return -1; } return (Py_ssize_t) len; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { Py_ssize_t len = __Pyx_ssize_strlen(c_str); if (unlikely(len < 0)) return NULL; return __Pyx_PyUnicode_FromStringAndSize(c_str, len); } static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { Py_ssize_t len = __Pyx_ssize_strlen(c_str); if (unlikely(len < 0)) return NULL; return PyByteArray_FromStringAndSize(c_str, len); } static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #if !CYTHON_PEP393_ENABLED static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; } #else static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (likely(PyUnicode_IS_ASCII(o))) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif } #endif #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { return __Pyx_PyUnicode_AsStringAndSize(o, length); } else #endif #if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { int retval; if (unlikely(!x)) return -1; retval = __Pyx_PyObject_IsTrue(x); Py_DECREF(x); return retval; } static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); #if PY_MAJOR_VERSION >= 3 if (PyLong_Check(result)) { if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " "The ability to return an instance of a strict subclass of int is deprecated, " "and may be removed in a future version of Python.", result_type_name)) { __Pyx_DECREF_TypeName(result_type_name); Py_DECREF(result); return NULL; } __Pyx_DECREF_TypeName(result_type_name); return result; } #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", type_name, type_name, result_type_name); __Pyx_DECREF_TypeName(result_type_name); Py_DECREF(result); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x) || PyLong_Check(x))) #else if (likely(PyLong_Check(x))) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = m->nb_int(x); } else if (m && m->nb_long) { name = "long"; res = m->nb_long(x); } #else if (likely(m && m->nb_int)) { name = "int"; res = m->nb_int(x); } #endif #else if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { res = PyNumber_Int(x); } #endif if (likely(res)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { #else if (unlikely(!PyLong_CheckExact(res))) { #endif return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(b); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS if (likely(__Pyx_PyLong_IsCompact(b))) { return __Pyx_PyLong_CompactValue(b); } else { const digit* digits = __Pyx_PyLong_Digits(b); const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); #if PY_MAJOR_VERSION < 3 } else if (likely(PyInt_CheckExact(o))) { return PyInt_AS_LONG(o); #endif } else { Py_ssize_t ival; PyObject *x; x = PyNumber_Index(o); if (!x) return -1; ival = PyInt_AsLong(x); Py_DECREF(x); return ival; } } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } /* #### Code section: utility_code_pragmas_end ### */ #ifdef _MSC_VER #pragma warning( pop ) #endif /* #### Code section: end ### */ #endif /* Py_PYTHON_H */ pyfuse3-3.4.0/src/pyfuse3/__init__.pyi0000644000175000017500000000726114663705673017570 0ustar useruser00000000000000''' __init__.pyi Type annotation stubs for the external API in __init__.pyx. Copyright © 2021 Oliver Galvin This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' # re-exports from ._pyfuse3 import ( Operations as Operations, FileHandleT as FileHandleT, FileNameT as FileNameT, FlagT as FlagT, InodeT as InodeT, ModeT as ModeT, XAttrNameT as XAttrNameT ) from trio.lowlevel import TrioToken from typing import List, Literal, Mapping, Optional, Union ENOATTR: int RENAME_EXCHANGE: FlagT RENAME_NOREPLACE: FlagT ROOT_INODE: InodeT trio_token: Optional[TrioToken] __version__: str NamespaceT = Literal["system", "user"] StatDict = Mapping[str, int] default_options: frozenset[str] class ReaddirToken: pass class RequestContext: @property def uid(self) -> int: ... @property def pid(self) -> int: ... @property def gid(self) -> int: ... @property def umask(self) -> int: ... def __getstate__(self) -> None: ... class SetattrFields: @property def update_atime(self) -> bool: ... @property def update_mtime(self) -> bool: ... @property def update_ctime(self) -> bool: ... @property def update_mode(self) -> bool: ... @property def update_uid(self) -> bool: ... @property def update_gid(self) -> bool: ... @property def update_size(self) -> bool: ... def __init__(self) -> None: ... def __getstate__(self) -> None: ... class EntryAttributes: st_ino: InodeT generation: int entry_timeout: Union[float, int] attr_timeout: Union[float, int] st_mode: ModeT st_nlink: int st_uid: int st_gid: int st_rdev: int st_size: int st_blksize: int st_blocks: int st_atime_ns: int st_ctime_ns: int st_mtime_ns: int st_birthtime_ns: int def __init__(self) -> None: ... def __getstate__(self) -> StatDict: ... def __setstate__(self, state: StatDict) -> None: ... class FileInfo: fh: FileHandleT direct_io: bool keep_cache: bool nonseekable: bool def __init__(self, fh: FileHandleT = ..., direct_io: bool = ..., keep_cache: bool = ..., nonseekable: bool = ...) -> None: ... class StatvfsData: f_bsize: int f_frsize: int f_blocks: int f_bfree: int f_bavail: int f_files: int f_ffree: int f_favail: int f_namemax: int def __init__(self) -> None: ... def __getstate__(self) -> StatDict: ... def __setstate__(self, state: StatDict) -> None: ... class FUSEError(Exception): @property def errno(self) -> int: ... @property def errno_(self) -> int: ... def __init__(self, errno: int) -> None: ... def __str__(self) -> str: ... def listdir(path: str) -> List[str]: ... def syncfs(path: str) -> str: ... def setxattr(path: str, name: str, value: bytes, namespace: NamespaceT = ...) -> None: ... def getxattr(path: str, name: str, size_guess: int = ..., namespace: NamespaceT = ...) -> bytes: ... def init(ops: Operations, mountpoint: str, options: set[str] = ...) -> None: ... async def main(min_tasks: int = ..., max_tasks: int = ...) -> None: ... def terminate() -> None: ... def close(unmount: bool = ...) -> None: ... def invalidate_inode(inode: InodeT, attr_only: bool = ...) -> None: ... def invalidate_entry(inode_p: InodeT, name: FileNameT, deleted: InodeT = ...) -> None: ... def invalidate_entry_async(inode_p: InodeT, name: FileNameT, deleted: InodeT = ..., ignore_enoent: bool = ...) -> None: ... def notify_store(inode: InodeT, offset: int, data: bytes) -> None: ... def get_sup_groups(pid: int) -> set[int]: ... def readdir_reply(token: ReaddirToken, name: FileNameT, attr: EntryAttributes, next_id: int) -> bool: ... pyfuse3-3.4.0/src/pyfuse3/__init__.pyx0000644000175000017500000007710014663705673017606 0ustar useruser00000000000000''' __init__.pyx Copyright © 2013 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' cdef extern from "pyfuse3.h": int PLATFORM enum: PLATFORM_LINUX PLATFORM_BSD PLATFORM_DARWIN ########### # C IMPORTS ########### from fuse_lowlevel cimport * from .macros cimport * from posix.stat cimport struct_stat, S_IFMT, S_IFDIR, S_IFREG from posix.types cimport mode_t, dev_t, off_t from libc.stdint cimport uint32_t from libc.stdlib cimport const_char from libc cimport stdlib, string, errno from posix cimport unistd from libc.errno cimport EACCES, ETIMEDOUT, EPROTO, EINVAL, ENOMSG, ENOATTR from posix.unistd cimport getpid from posix.time cimport timespec from cpython.bytes cimport (PyBytes_AsStringAndSize, PyBytes_FromStringAndSize, PyBytes_AsString, PyBytes_FromString, PyBytes_AS_STRING) from cpython.buffer cimport (PyObject_GetBuffer, PyBuffer_Release, PyBUF_CONTIG_RO, PyBUF_CONTIG) cimport cpython.exc cimport cython cimport libc_extra ######################## # EXTERNAL DEFINITIONS # ######################## cdef extern from "" nogil: enum: RENAME_EXCHANGE RENAME_NOREPLACE cdef extern from "Python.h" nogil: int PY_SSIZE_T_MAX # Actually passed as -D to cc (and defined in setup.py) cdef extern from *: char* PYFUSE3_VERSION ################ # PYTHON IMPORTS ################ from pickle import PicklingError from queue import Queue import logging import os import os.path import sys import trio import threading import typing from . import _pyfuse3 _pyfuse3.FUSEError = FUSEError from ._pyfuse3 import (Operations, async_wrapper, FileHandleT, FileNameT, FlagT, InodeT, ModeT, XAttrNameT) ################## # GLOBAL VARIABLES ################## log = logging.getLogger("pyfuse3") fse = sys.getfilesystemencoding() cdef object operations cdef object mountpoint_b cdef fuse_session* session = NULL cdef fuse_lowlevel_ops fuse_ops cdef int session_fd cdef object py_retval cdef object _notify_queue = None ROOT_INODE = FUSE_ROOT_ID __version__ = PYFUSE3_VERSION.decode('utf-8') _NANOS_PER_SEC = 1000000000 # In the Cython source, we want the names to refer to the # C constants. Therefore, we assign through globals(). g = globals() g['ENOATTR'] = ENOATTR g['RENAME_EXCHANGE'] = RENAME_EXCHANGE g['RENAME_NOREPLACE'] = RENAME_NOREPLACE trio_token = None ####################### # FUSE REQUEST HANDLERS ####################### include "handlers.pxi" ######################################## # INTERNAL FUNCTIONS & DATA STRUCTURES # ######################################## include "internal.pxi" ###################### # EXTERNAL API # ###################### @cython.freelist(10) cdef class RequestContext: ''' Instances of this class are passed to some `Operations` methods to provide information about the caller of the syscall that initiated the request. ''' cdef readonly uid_t uid cdef readonly pid_t pid cdef readonly gid_t gid cdef readonly mode_t umask def __getstate__(self): raise PicklingError("RequestContext instances can't be pickled") @cython.freelist(10) cdef class SetattrFields: ''' `SetattrFields` instances are passed to the `~Operations.setattr` handler to specify which attributes should be updated. ''' cdef readonly object update_atime cdef readonly object update_mtime cdef readonly object update_ctime cdef readonly object update_mode cdef readonly object update_uid cdef readonly object update_gid cdef readonly object update_size def __cinit__(self): self.update_atime = False self.update_mtime = False self.update_ctime = False self.update_mode = False self.update_uid = False self.update_gid = False self.update_size = False def __getstate__(self): raise PicklingError("SetattrFields instances can't be pickled") @cython.freelist(30) cdef class EntryAttributes: ''' Instances of this class store attributes of directory entries. Most of the attributes correspond to the elements of the ``stat`` C struct as returned by e.g. ``fstat`` and should be self-explanatory. ''' # Attributes are documented in rst/data.rst cdef fuse_entry_param fuse_param cdef struct_stat *attr def __cinit__(self): string.memset(&self.fuse_param, 0, sizeof(fuse_entry_param)) self.attr = &self.fuse_param.attr self.fuse_param.generation = 0 self.fuse_param.entry_timeout = 300 self.fuse_param.attr_timeout = 300 self.attr.st_mode = S_IFREG self.attr.st_blksize = 4096 self.attr.st_nlink = 1 @property def st_ino(self): return self.fuse_param.ino @st_ino.setter def st_ino(self, val): self.fuse_param.ino = val self.attr.st_ino = val @property def generation(self): '''The inode generation number''' return self.fuse_param.generation @generation.setter def generation(self, val): self.fuse_param.generation = val @property def attr_timeout(self): '''Validity timeout for the attributes of the directory entry Floating point numbers may be used. Units are seconds. ''' return self.fuse_param.attr_timeout @attr_timeout.setter def attr_timeout(self, val): self.fuse_param.attr_timeout = val @property def entry_timeout(self): '''Validity timeout for the name/existence of the directory entry Floating point numbers may be used. Units are seconds. ''' return self.fuse_param.entry_timeout @entry_timeout.setter def entry_timeout(self, val): self.fuse_param.entry_timeout = val @property def st_mode(self): return self.attr.st_mode @st_mode.setter def st_mode(self, val): self.attr.st_mode = val @property def st_nlink(self): return self.attr.st_nlink @st_nlink.setter def st_nlink(self, val): self.attr.st_nlink = val @property def st_uid(self): return self.attr.st_uid @st_uid.setter def st_uid(self, val): self.attr.st_uid = val @property def st_gid(self): return self.attr.st_gid @st_gid.setter def st_gid(self, val): self.attr.st_gid = val @property def st_rdev(self): return self.attr.st_rdev @st_rdev.setter def st_rdev(self, val): self.attr.st_rdev = val @property def st_size(self): return self.attr.st_size @st_size.setter def st_size(self, val): self.attr.st_size = val @property def st_blocks(self): return self.attr.st_blocks @st_blocks.setter def st_blocks(self, val): self.attr.st_blocks = val @property def st_blksize(self): return self.attr.st_blksize @st_blksize.setter def st_blksize(self, val): self.attr.st_blksize = val @property def st_atime_ns(self): '''Time of last access in (integer) nanoseconds''' return (int(self.attr.st_atime) * _NANOS_PER_SEC + GET_ATIME_NS(self.attr)) @st_atime_ns.setter def st_atime_ns(self, val): self.attr.st_atime = val // _NANOS_PER_SEC SET_ATIME_NS(self.attr, val % _NANOS_PER_SEC) @property def st_mtime_ns(self): '''Time of last modification in (integer) nanoseconds''' return (int(self.attr.st_mtime) * _NANOS_PER_SEC + GET_MTIME_NS(self.attr)) @st_mtime_ns.setter def st_mtime_ns(self, val): self.attr.st_mtime = val // _NANOS_PER_SEC SET_MTIME_NS(self.attr, val % _NANOS_PER_SEC) @property def st_ctime_ns(self): '''Time of last inode modification in (integer) nanoseconds''' return (int(self.attr.st_ctime) * _NANOS_PER_SEC + GET_CTIME_NS(self.attr)) @st_ctime_ns.setter def st_ctime_ns(self, val): self.attr.st_ctime = val // _NANOS_PER_SEC SET_CTIME_NS(self.attr, val % _NANOS_PER_SEC) @property def st_birthtime_ns(self): '''Time of inode creation in (integer) nanoseconds. Only available under BSD and OS X. Will be zero on Linux. ''' # Use C macro to prevent compiler error on Linux # (where st_birthtime does not exist) return int(GET_BIRTHTIME(self.attr) * _NANOS_PER_SEC + GET_BIRTHTIME_NS(self.attr)) @st_birthtime_ns.setter def st_birthtime_ns(self, val): # Use C macro to prevent compiler error on Linux # (where st_birthtime does not exist) SET_BIRTHTIME(self.attr, val // _NANOS_PER_SEC) SET_BIRTHTIME_NS(self.attr, val % _NANOS_PER_SEC) # Pickling and copy support def __getstate__(self): state = dict() for k in ('st_ino', 'generation', 'entry_timeout', 'attr_timeout', 'st_mode', 'st_nlink', 'st_uid', 'st_gid', 'st_rdev', 'st_size', 'st_blksize', 'st_blocks', 'st_atime_ns', 'st_ctime_ns', 'st_mtime_ns', 'st_birthtime_ns'): state[k] = getattr(self, k) return state def __setstate__(self, state): for (k,v) in state.items(): setattr(self, k, v) @cython.freelist(10) cdef class FileInfo: ''' Instances of this class store options and data that `Operations.open` returns. The attributes correspond to the elements of the ``fuse_file_info`` struct that are relevant to the `Operations.open` function. ''' cdef public uint64_t fh cdef public bint direct_io cdef public bint keep_cache cdef public bint nonseekable def __cinit__(self, fh=0, direct_io=0, keep_cache=1, nonseekable=0): self.fh = fh self.direct_io = direct_io self.keep_cache = keep_cache self.nonseekable = nonseekable cdef _copy_to_fuse(self, fuse_file_info *out): out.fh = self.fh # Due to how Cython generates its C code, GCC will complain about # assigning to the bitfields in the fuse_file_info struct. # This is the workaround. if self.direct_io: out.direct_io = 1 else: out.direct_io = 0 if self.keep_cache: out.keep_cache = 1 else: out.keep_cache = 0 if self.nonseekable: out.nonseekable = 1 else: out.nonseekable = 0 @cython.freelist(1) cdef class StatvfsData: ''' Instances of this class store information about the file system. The attributes correspond to the elements of the ``statvfs`` struct, see :manpage:`statvfs(2)` for details. ''' cdef statvfs stat def __cinit__(self): string.memset(&self.stat, 0, sizeof(statvfs)) @property def f_bsize(self): return self.stat.f_bsize @f_bsize.setter def f_bsize(self, val): self.stat.f_bsize = val @property def f_frsize(self): return self.stat.f_frsize @f_frsize.setter def f_frsize(self, val): self.stat.f_frsize = val @property def f_blocks(self): return self.stat.f_blocks @f_blocks.setter def f_blocks(self, val): self.stat.f_blocks = val @property def f_bfree(self): return self.stat.f_bfree @f_bfree.setter def f_bfree(self, val): self.stat.f_bfree = val @property def f_bavail(self): return self.stat.f_bavail @f_bavail.setter def f_bavail(self, val): self.stat.f_bavail = val @property def f_files(self): return self.stat.f_files @f_files.setter def f_files(self, val): self.stat.f_files = val @property def f_ffree(self): return self.stat.f_ffree @f_ffree.setter def f_ffree(self, val): self.stat.f_ffree = val @property def f_favail(self): return self.stat.f_favail @f_favail.setter def f_favail(self, val): self.stat.f_favail = val @property def f_namemax(self): return self.stat.f_namemax @f_namemax.setter def f_namemax(self, val): self.stat.f_namemax = val # Pickling and copy support def __getstate__(self): state = dict() for k in ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', 'f_bavail', 'f_files', 'f_ffree', 'f_favail', 'f_namemax'): state[k] = getattr(self, k) return state def __setstate__(self, state): for (k,v) in state.items(): setattr(self, k, v) # As of Cython 0.28.1, @cython.freelist cannot be used for # classes that derive from a builtin type. cdef class FUSEError(Exception): ''' This exception may be raised by request handlers to indicate that the requested operation could not be carried out. The system call that resulted in the request (if any) will then fail with error code *errno_*. ''' # If we call this variable "errno", we will get syntax errors # during C compilation (maybe something else declares errno as # a macro?) cdef readonly int errno_ @property def errno(self): '''Error code to return to client process''' return self.errno_ def __cinit__(self, errno): self.errno_ = errno def __str__(self): return strerror(self.errno_) def listdir(path): '''Like `os.listdir`, but releases the GIL. This function returns an iterator over the directory entries in *path*. The returned values are of type :ref:`str `. Surrogate escape coding (cf. `PEP 383 `_) is used for directory names that do not have a string representation. ''' if not isinstance(path, str): raise TypeError('*path* argument must be of type str') cdef libc_extra.DIR* dirp cdef libc_extra.dirent* res cdef char* buf path_b = str2bytes(path) buf = path_b with nogil: dirp = libc_extra.opendir(buf) if dirp == NULL: raise OSError(errno.errno, strerror(errno.errno), path) names = list() while True: errno.errno = 0 with nogil: res = libc_extra.readdir(dirp) if res is NULL: if errno.errno != 0: raise OSError(errno.errno, strerror(errno.errno), path) else: break if string.strcmp(res.d_name, b'.') == 0 or \ string.strcmp(res.d_name, b'..') == 0: continue names.append(bytes2str(PyBytes_FromString(res.d_name))) with nogil: libc_extra.closedir(dirp) return names def syncfs(path): '''Sync filesystem mounted at *path* This is a Python interface to the syncfs(2) system call. There is no particular relation to libfuse, it is provided by pyfuse3 as a convience. ''' cdef int ret fd = os.open(path, flags=os.O_DIRECTORY) try: ret = libc_extra.syncfs(fd) if ret != 0: raise OSError(errno.errno, strerror(errno.errno), path) finally: os.close(fd) def setxattr(path, name, bytes value, namespace='user'): '''Set extended attribute *path* and *name* have to be of type `str`. In Python 3.x, they may contain surrogates. *value* has to be of type `bytes`. 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. In contrast to the `os.setxattr` function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems. ''' if not isinstance(path, str): raise TypeError('*path* argument must be of type str') if not isinstance(name, str): raise TypeError('*name* argument must be of type str') if namespace not in ('system', 'user'): raise ValueError('*namespace* parameter must be "system" or "user", not %s' % namespace) cdef int ret cdef Py_ssize_t len_ cdef char *cvalue cdef char *cpath cdef char *cname cdef int cnamespace if namespace == 'system': cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM else: cnamespace = libc_extra.EXTATTR_NAMESPACE_USER path_b = str2bytes(path) name_b = str2bytes(name) PyBytes_AsStringAndSize(value, &cvalue, &len_) cpath = path_b cname = name_b with nogil: # len_ is guaranteed positive ret = libc_extra.setxattr_p( cpath, cname, cvalue, len_, cnamespace) if ret != 0: raise OSError(errno.errno, strerror(errno.errno), path) def getxattr(path, name, size_t size_guess=128, namespace='user'): '''Get extended attribute *path* and *name* have to be of type `str`. In Python 3.x, they may contain surrogates. Returns a value of type `bytes`. 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). 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. In contrast to the `os.getxattr` function from the standard library, the method provided by pyfuse3 is also available for non-Linux systems. ''' if not isinstance(path, str): raise TypeError('*path* argument must be of type str') if not isinstance(name, str): raise TypeError('*name* argument must be of type str') if namespace not in ('system', 'user'): raise ValueError('*namespace* parameter must be "system" or "user", not %s' % namespace) cdef ssize_t ret cdef char *buf cdef char *cpath cdef char *cname cdef size_t bufsize cdef int cnamespace if namespace == 'system': cnamespace = libc_extra.EXTATTR_NAMESPACE_SYSTEM else: cnamespace = libc_extra.EXTATTR_NAMESPACE_USER path_b = str2bytes(path) name_b = str2bytes(name) cpath = path_b cname = name_b bufsize = size_guess buf = stdlib.malloc(bufsize * sizeof(char)) if buf is NULL: cpython.exc.PyErr_NoMemory() try: with nogil: ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) if ret < 0 and errno.errno == errno.ERANGE: with nogil: ret = libc_extra.getxattr_p(cpath, cname, NULL, 0, cnamespace) if ret < 0: raise OSError(errno.errno, strerror(errno.errno), path) bufsize = ret stdlib.free(buf) buf = stdlib.malloc(bufsize * sizeof(char)) if buf is NULL: cpython.exc.PyErr_NoMemory() with nogil: ret = libc_extra.getxattr_p(cpath, cname, buf, bufsize, cnamespace) if ret < 0: raise OSError(errno.errno, strerror(errno.errno), path) return PyBytes_FromStringAndSize(buf, ret) finally: stdlib.free(buf) default_options = frozenset(('default_permissions',)) def init(ops, mountpoint, options=default_options): '''Initialize and mount FUSE file system *ops* has to be an instance of the `Operations` class (or another class defining the same methods). *args* has to be a set of strings. `default_options` provides some reasonable defaults. It is recommended to use these options as a basis and add or remove options as necessary. For example:: my_opts = set(pyfuse3.default_options) my_opts.add('allow_other') my_opts.discard('default_permissions') pyfuse3.init(ops, mountpoint, my_opts) Valid options are listed under ``struct fuse_opt fuse_mount_opts[]`` (in `mount.c `_) and ``struct fuse_opt fuse_ll_opts[]`` (in `fuse_lowlevel_c `_). ''' log.debug('Initializing pyfuse3') cdef fuse_args f_args cdef int res if not isinstance(mountpoint, str): raise TypeError('*mountpoint_* argument must be of type str') global operations global fuse_ops global mountpoint_b global session global session_fd global worker_data worker_data = _WorkerData() mountpoint_b = str2bytes(os.path.abspath(mountpoint)) operations = ops make_fuse_args(options, &f_args) log.debug('Calling fuse_session_new') init_fuse_ops() session = fuse_session_new(&f_args, &fuse_ops, sizeof(fuse_ops), NULL) if not session: raise RuntimeError("fuse_session_new() failed") log.debug('Calling fuse_session_mount') res = fuse_session_mount(session, mountpoint_b) if res != 0: raise RuntimeError('fuse_session_mount failed') session_fd = fuse_session_fd(session) @async_wrapper async def main(int min_tasks=1, int max_tasks=99): '''Run FUSE main loop''' if session == NULL: raise RuntimeError('Need to call init() before main()') global trio_token trio_token = trio.lowlevel.current_trio_token() try: async with trio.open_nursery() as nursery: worker_data.task_count = 1 worker_data.task_serial = 1 nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, name=worker_data.get_name()) finally: trio_token = None if _notify_queue is not None: _notify_queue.put(None) def terminate(): '''Terminate FUSE main loop. This function gracefully terminates the FUSE main loop (resulting in the call to main() to return). When called by a thread different from the one that runs the main loop, the call must be wrapped with `trio.from_thread.run_sync`. The necessary *trio_token* argument can (for convience) be retrieved from the `trio_token` module attribute. ''' fuse_session_exit(session) trio.lowlevel.notify_closing(session_fd) def close(unmount=True): '''Clean up and ensure filesystem is unmounted If *unmount* is False, only clean up operations are peformed, but the file system is not explicitly unmounted. Normally, the filesystem is unmounted by the user calling umount(8) or fusermount(1), which then terminates the FUSE main loop. However, the loop may also terminate as a result of an exception or a signal. In this case the filesystem remains mounted, but any attempt to access it will block (while the filesystem process is still running) or (after the filesystem process has terminated) return an error. If *unmount* is True, this function will ensure that the filesystem is properly unmounted. Note: if the connection to the kernel is terminated via the ``/sys/fs/fuse/connections/`` interface, this function will *not* unmount the filesystem even if *unmount* is True. ''' global mountpoint_b global session if unmount: log.debug('Calling fuse_session_unmount') fuse_session_unmount(session) log.debug('Calling fuse_session_destroy') fuse_session_destroy(session) mountpoint_b = None session = NULL def invalidate_inode(fuse_ino_t inode, attr_only=False): '''Invalidate cache for *inode* Instructs the FUSE kernel module to forget cached attributes and data (unless *attr_only* is True) for *inode*. **This operation may block** if writeback caching is active and there is dirty data for the inode that is to be invalidated. Unfortunately there is no way to return control to the event loop until writeback is complete (leading to a deadlock if the necessary write() requests cannot be processed by the filesystem). Unless writeback caching is disabled, this function should therefore be called from a separate thread. If the operation is not supported by the kernel, raises `OSError` with errno ENOSYS. ''' cdef int ret if attr_only: with nogil: ret = fuse_lowlevel_notify_inval_inode(session, inode, -1, 0) else: with nogil: ret = fuse_lowlevel_notify_inval_inode(session, inode, 0, 0) if ret != 0: raise OSError(-ret, 'fuse_lowlevel_notify_inval_inode returned: ' + strerror(-ret)) def invalidate_entry(fuse_ino_t inode_p, bytes name, fuse_ino_t deleted=0): '''Invalidate directory entry Instructs the FUSE kernel module to forget about the directory entry *name* in the directory with inode *inode_p*. If the inode passed as *deleted* matches the inode that is currently associated with *name* by the kernel, any inotify watchers of this inode are informed that the entry has been deleted. If there is a pending filesystem operation that is related to the parent directory or directory entry, this function will block until that operation has completed. Therefore, to avoid a deadlock this function must not be called while handling a related request, nor while holding a lock that could be needed for handling such a request. As for kernel 4.18, a "related operation" is a `~Operations.lookup`, `~Operations.symlink`, `~Operations.mknod`, `~Operations.mkdir`, `~Operations.unlink`, `~Operations.rename`, `~Operations.link` or `~Operations.create` request for the parent, and a `~Operations.setattr`, `~Operations.unlink`, `~Operations.rmdir`, `~Operations.rename`, `~Operations.setxattr`, `~Operations.removexattr` or `~Operations.readdir` request for the inode itself. For technical reasons, this function can also not return control to the main event loop but will actually block. To return control to the event loop while this function is running, call it in a separate thread using `trio.run_sync_in_worker_thread `_. A less complicated alternative is to use the `invalidate_entry_async` function instead. ''' cdef char *cname cdef ssize_t slen cdef size_t len_ cdef int ret PyBytes_AsStringAndSize(name, &cname, &slen) # len_ is guaranteed positive len_ = slen if deleted: with nogil: # might block! ret = fuse_lowlevel_notify_delete(session, inode_p, deleted, cname, len_) if ret != 0: raise OSError(-ret, 'fuse_lowlevel_notify_delete returned: ' + strerror(-ret)) else: with nogil: # might block! ret = fuse_lowlevel_notify_inval_entry(session, inode_p, cname, len_) if ret != 0: raise OSError(-ret, 'fuse_lowlevel_notify_inval_entry returned: ' + strerror(-ret)) def invalidate_entry_async(inode_p, name, deleted=0, ignore_enoent=False): '''Asynchronously invalidate directory entry This function performs the same operation as `invalidate_entry`, but does so asynchronously in a separate thread. This avoids the deadlocks that may occur when using `invalidate_entry` from within a request handler, but means that the function generally returns before the kernel has actually invalidated the entry, and that no errors can be reported (they will be logged though). The directory entries that are to be invalidated are put in an unbounded queue which is processed by a single thread. This means that if the entry at the beginning of the queue cannot be invalidated yet because a related file system operation is still in progress, none of the other entries will be processed and repeated calls to this function will result in continued growth of the queue. If there are errors, an exception is logged using the `logging` module. If *ignore_enoent* is True, ignore ENOENT errors (which occur if the kernel doesn't actually have knowledge of the entry that is to be removed). ''' global _notify_queue if _notify_queue is None: log.debug('Starting notify worker.') _notify_queue = Queue() t = threading.Thread(target=_notify_loop) t.daemon = True t.start() _notify_queue.put((inode_p, name, deleted, ignore_enoent)) def notify_store(inode, offset, data): '''Store data in kernel page cache Sends *data* for the kernel to store it in the page cache for *inode* at *offset*. If this provides data beyond the current file size, the file is automatically extended. If this function raises an exception, the store may still have completed partially. If the operation is not supported by the kernel, raises `OSError` with errno ENOSYS. ''' # This should not block, but the kernel may need to do some work so release # the GIL to give other threads a chance to run. cdef int ret cdef fuse_ino_t ino cdef off_t off cdef Py_buffer pybuf cdef fuse_bufvec bufvec cdef fuse_buf *buf PyObject_GetBuffer(data, &pybuf, PyBUF_CONTIG_RO) bufvec.count = 1 bufvec.idx = 0 bufvec.off = 0 buf = bufvec.buf buf[0].flags = 0 buf[0].mem = pybuf.buf buf[0].size = pybuf.len # guaranteed positive ino = inode off = offset with nogil: ret = fuse_lowlevel_notify_store(session, ino, off, &bufvec, 0) PyBuffer_Release(&pybuf) if ret != 0: raise OSError(-ret, 'fuse_lowlevel_notify_store returned: ' + strerror(-ret)) def get_sup_groups(pid): '''Return supplementary group ids of *pid* 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. Returns a set. ''' with open('/proc/%d/status' % pid, 'r') as fh: for line in fh: if line.startswith('Groups:'): break else: raise RuntimeError("Unable to parse %s" % fh.name) gids = set() for x in line.split()[1:]: gids.add(int(x)) return gids def readdir_reply(ReaddirToken token, name, EntryAttributes attr, off_t next_id): '''Report a directory entry in response to a `~Operations.readdir` request. This function should be called by the `~Operations.readdir` handler to provide the list of directory entries. The function should be called once for each directory entry, until it returns False. *token* must be the token received by the `~Operations.readdir` handler. *name* and must be the name of the directory entry and *attr* an `EntryAttributes` instance holding its attributes. *next_id* must be a 64-bit integer value that uniquely identifies the current position in the list of directory entries. It may be passed back to a later `~Operations.readdir` call to start another listing at the right position. This value should be robust in the presence of file removals and creations, i.e. if files are created or removed after a call to `~Operations.readdir` and `~Operations.readdir` is called again with *start_id* set to any previously supplied *next_id* values, under no circumstances must any file be reported twice or skipped over. ''' cdef char *cname if token.buf_start == NULL: token.buf_start = calloc_or_raise(token.size, sizeof(char)) token.buf = token.buf_start cname = PyBytes_AsString(name) len_ = fuse_add_direntry_plus(token.req, token.buf, token.size, cname, &attr.fuse_param, next_id) if len_ > token.size: return False token.size -= len_ token.buf = &token.buf[len_] return True pyfuse3-3.4.0/src/pyfuse3/_pyfuse3.py0000644000175000017500000006011314663705673017410 0ustar useruser00000000000000''' _pyfuse3.py Pure-Python components of pyfuse3. Copyright © 2018 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' import errno import functools import logging from typing import (TYPE_CHECKING, Any, Callable, NewType, Optional, Sequence, Tuple) # These types are specific instances of builtin types: FileHandleT = NewType("FileHandleT", int) FileNameT = NewType("FileNameT", bytes) FlagT = NewType("FlagT", int) InodeT = NewType("InodeT", int) ModeT = NewType("ModeT", int) XAttrNameT = NewType("XAttrNameT", bytes) if TYPE_CHECKING: # These types are defined elsewhere in the C code from pyfuse3 import (EntryAttributes, FileInfo, FUSEError, ReaddirToken, RequestContext, SetattrFields, StatvfsData) else: # Will be injected by pyfuse3 extension module FUSEError = None __all__ = ['Operations', 'async_wrapper'] log = logging.getLogger(__name__) # Any top level trio coroutines (i.e., coroutines that are passed # to trio.run) must be pure-Python. This wrapper ensures that this # is the case for Cython-defined async functions. def async_wrapper(fn: Callable[..., Any]) -> Callable[..., Any]: @functools.wraps(fn) async def wrapper(*args, **kwargs): # type: ignore await fn(*args, **kwargs) return wrapper class Operations: ''' This class defines the request handler methods that an pyfuse3 file system may implement. If a particular request handler has not been implemented, it must raise `FUSEError` with an errorcode of `errno.ENOSYS`. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again. The only exception that request handlers are allowed to raise is `FUSEError`. This will cause the specified errno to be returned by the syscall that is being handled. It is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise ``FUSEError(ENOSYS)`` or do nothing). ''' supports_dot_lookup: bool = True enable_writeback_cache: bool = False enable_acl: bool = False def init(self) -> None: '''Initialize operations. This method will be called just before the file system starts handling requests. It must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request. ''' pass async def lookup( self, parent_inode: InodeT, name: FileNameT, ctx: "RequestContext" ) -> "EntryAttributes": '''Look up a directory entry by name and get its attributes. This method should return an `EntryAttributes` instance for the directory entry *name* in the directory with inode *parent_inode*. If there is no such entry, the method should either return an `EntryAttributes` instance with zero ``st_ino`` value (in which case the negative lookup will be cached as specified by ``entry_timeout``), or it should raise `FUSEError` with an errno of `errno.ENOENT` (in this case the negative result will not be cached). *ctx* will be a `RequestContext` instance. The file system must be able to handle lookups for :file:`.` and :file:`..`, no matter if these entries are returned by `readdir` or not. (Successful) execution of this handler increases the lookup count for the returned inode by one. ''' raise FUSEError(errno.ENOSYS) async def forget( self, inode_list: Sequence[Tuple[InodeT, int]] ) -> None: '''Decrease lookup counts for inodes in *inode_list*. *inode_list* is a list of ``(inode, nlookup)`` tuples. This method should reduce the lookup count for each *inode* by *nlookup*. If the lookup count reaches zero, the inode is currently not known to the kernel. In this case, the file system will typically check if there are still directory entries referring to this inode and, if not, remove the inode. If the file system is unmounted, it may not have received `forget` calls to bring all lookup counts to zero. The filesystem needs to take care to clean up inodes that at that point still have non-zero lookup count (e.g. by explicitly calling `forget` with the current lookup count for every such inode after `main` has returned). This method must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request. ''' pass async def getattr( self, inode: InodeT, ctx: "RequestContext" ) -> "EntryAttributes": '''Get attributes for *inode*. *ctx* will be a `RequestContext` instance. This method should return an `EntryAttributes` instance with the attributes of *inode*. The `~EntryAttributes.entry_timeout` attribute is ignored in this context. ''' raise FUSEError(errno.ENOSYS) async def setattr( self, inode: InodeT, attr: "EntryAttributes", fields: "SetattrFields", fh: Optional[FileHandleT], ctx: "RequestContext" ) -> "EntryAttributes": '''Change attributes of *inode*. *fields* will be an `SetattrFields` instance that specifies which attributes are to be updated. *attr* will be an `EntryAttributes` instance for *inode* that contains the new values for changed attributes, and undefined values for all other attributes. Most file systems will additionally set the `~EntryAttributes.st_ctime_ns` attribute to the current time (to indicate that the inode metadata was changed). If the syscall that is being processed received a file descriptor argument (like e.g. :manpage:`ftruncate(2)` or :manpage:`fchmod(2)`), *fh* will be the file handle returned by the corresponding call to the `open` handler. If the syscall was path based (like e.g. :manpage:`truncate(2)` or :manpage:`chmod(2)`), *fh* will be `None`. *ctx* will be a `RequestContext` instance. The method should return an `EntryAttributes` instance (containing both the changed and unchanged values). ''' raise FUSEError(errno.ENOSYS) async def readlink( self, inode: InodeT, ctx: "RequestContext" ) -> FileNameT: '''Return target of symbolic link *inode*. *ctx* will be a `RequestContext` instance. ''' raise FUSEError(errno.ENOSYS) async def mknod( self, parent_inode: InodeT, name: FileNameT, mode: ModeT, rdev: int, ctx: "RequestContext" ) -> "EntryAttributes": '''Create (possibly special) file. This method must create a (special or regular) file *name* in the directory with inode *parent_inode*. Whether the file is special or regular is determined by its *mode*. If the file is neither a block nor character device, *rdev* can be ignored. *ctx* will be a `RequestContext` instance. The method must return an `EntryAttributes` instance with the attributes of the newly created directory entry. (Successful) execution of this handler increases the lookup count for the returned inode by one. ''' raise FUSEError(errno.ENOSYS) async def mkdir( self, parent_inode: InodeT, name: FileNameT, mode: ModeT, ctx: "RequestContext" ) -> "EntryAttributes": '''Create a directory. This method must create a new directory *name* with mode *mode* in the directory with inode *parent_inode*. *ctx* will be a `RequestContext` instance. This method must return an `EntryAttributes` instance with the attributes of the newly created directory entry. (Successful) execution of this handler increases the lookup count for the returned inode by one. ''' raise FUSEError(errno.ENOSYS) async def unlink( self, parent_inode: InodeT, name: FileNameT, ctx: "RequestContext" ) -> None: '''Remove a (possibly special) file. This method must remove the (special or regular) file *name* from the direcory with inode *parent_inode*. *ctx* will be a `RequestContext` instance. If the inode associated with *file* (i.e., not the *parent_inode*) has a non-zero lookup count, or if there are still other directory entries referring to this inode (due to hardlinks), the file system must remove only the directory entry (so that future calls to `readdir` for *parent_inode* will no longer include *name*, but e.g. calls to `getattr` for *file*'s inode still succeed). (Potential) removal of the associated inode with the file contents and metadata must be deferred to the `forget` method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with the inode either). ''' raise FUSEError(errno.ENOSYS) async def rmdir( self, parent_inode: InodeT, name: FileNameT, ctx: "RequestContext" ) -> None: '''Remove directory *name*. This method must remove the directory *name* from the direcory with inode *parent_inode*. *ctx* will be a `RequestContext` instance. If there are still entries in the directory, the method should raise ``FUSEError(errno.ENOTEMPTY)``. If the inode associated with *name* (i.e., not the *parent_inode*) has a non-zero lookup count, the file system must remove only the directory entry (so that future calls to `readdir` for *parent_inode* will no longer include *name*, but e.g. calls to `getattr` for *file*'s inode still succeed). Removal of the associated inode holding the directory contents and metadata must be deferred to the `forget` method to be carried out when the lookup count reaches zero. (Since hard links to directories are not allowed by POSIX, this method is not required to check if there are still other directory entries refering to the same inode. This conveniently avoids the ambigiouties associated with the ``.`` and ``..`` entries). ''' raise FUSEError(errno.ENOSYS) async def symlink( self, parent_inode: InodeT, name: FileNameT, target: FileNameT, ctx: "RequestContext" ) -> "EntryAttributes": '''Create a symbolic link. This method must create a symbolink link named *name* in the directory with inode *parent_inode*, pointing to *target*. *ctx* will be a `RequestContext` instance. The method must return an `EntryAttributes` instance with the attributes of the newly created directory entry. (Successful) execution of this handler increases the lookup count for the returned inode by one. ''' raise FUSEError(errno.ENOSYS) async def rename( self, parent_inode_old: InodeT, name_old: str, parent_inode_new: InodeT, name_new: str, flags: FlagT, ctx: "RequestContext" ) -> None: '''Rename a directory entry. This method must rename *name_old* in the directory with inode *parent_inode_old* to *name_new* in the directory with inode *parent_inode_new*. If *name_new* already exists, it should be overwritten. *flags* may be `RENAME_EXCHANGE` or `RENAME_NOREPLACE`. If `RENAME_NOREPLACE` is specified, the filesystem must not overwrite *name_new* if it exists and return an error instead. If `RENAME_EXCHANGE` is specified, the filesystem must atomically exchange the two files, i.e. both must exist and neither may be deleted. *ctx* will be a `RequestContext` instance. Let the inode associated with *name_old* in *parent_inode_old* be *inode_moved*, and the inode associated with *name_new* in *parent_inode_new* (if it exists) be called *inode_deref*. If *inode_deref* exists and has a non-zero lookup count, or if there are other directory entries referring to *inode_deref*), the file system must update only the directory entry for *name_new* to point to *inode_moved* instead of *inode_deref*. (Potential) removal of *inode_deref* (containing the previous contents of *name_new*) must be deferred to the `forget` method to be carried out when the lookup count reaches zero (and of course only if at that point there are no more directory entries associated with *inode_deref* either). ''' raise FUSEError(errno.ENOSYS) async def link( self, inode: InodeT, new_parent_inode: InodeT, new_name: FileNameT, ctx: "RequestContext" ) -> "EntryAttributes": '''Create directory entry *name* in *parent_inode* refering to *inode*. *ctx* will be a `RequestContext` instance. The method must return an `EntryAttributes` instance with the attributes of the newly created directory entry. (Successful) execution of this handler increases the lookup count for the returned inode by one. ''' raise FUSEError(errno.ENOSYS) async def open( self, inode: InodeT, flags: FlagT, ctx: "RequestContext" ) -> "FileInfo": '''Open a inode *inode* with *flags*. *ctx* will be a `RequestContext` instance. *flags* will be a bitwise or of the open flags described in the :manpage:`open(2)` manpage and defined in the `os` module (with the exception of ``O_CREAT``, ``O_EXCL``, ``O_NOCTTY`` and ``O_TRUNC``) This method must return a `FileInfo` instance. The `FileInfo.fh` field must contain an integer file handle, which will be passed to the `read`, `write`, `flush`, `fsync` and `release` methods to identify the open file. The `FileInfo` instance may also have relevant configuration attributes set; see the `FileInfo` documentation for more information. ''' raise FUSEError(errno.ENOSYS) async def read( self, fh: FileHandleT, off: int, size: int ) -> bytes: '''Read *size* bytes from *fh* at position *off*. *fh* will be an integer filehandle returned by a prior `open` or `create` call. This function should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes. ''' raise FUSEError(errno.ENOSYS) async def write( self, fh: FileHandleT, off: int, buf: bytes ) -> int: '''Write *buf* into *fh* at *off*. *fh* will be an integer filehandle returned by a prior `open` or `create` call. This method must return the number of bytes written. However, unless the file system has been mounted with the ``direct_io`` option, the file system *must* always write *all* the provided data (i.e., return ``len(buf)``). ''' raise FUSEError(errno.ENOSYS) async def flush( self, fh: FileHandleT ) -> None: '''Handle close() syscall. *fh* will be an integer filehandle returned by a prior `open` or `create` call. This method is called whenever a file descriptor is closed. It may be called multiple times for the same open file (e.g. if the file handle has been duplicated). ''' raise FUSEError(errno.ENOSYS) async def release( self, fh: FileHandleT ) -> None: '''Release open file. This method will be called when the last file descriptor of *fh* has been closed, i.e. when the file is no longer opened by any client process. *fh* will be an integer filehandle returned by a prior `open` or `create` call. Once `release` has been called, no future requests for *fh* will be received (until the value is re-used in the return value of another `open` or `create` call). This method may return an error by raising `FUSEError`, but the error will be discarded because there is no corresponding client request. ''' raise FUSEError(errno.ENOSYS) async def fsync( self, fh: FileHandleT, datasync: bool ) -> None: '''Flush buffers for open file *fh*. If *datasync* is true, only the file contents should be flushed (in contrast to the metadata about the file). *fh* will be an integer filehandle returned by a prior `open` or `create` call. ''' raise FUSEError(errno.ENOSYS) async def opendir( self, inode: InodeT, ctx: "RequestContext" ) -> FileHandleT: '''Open the directory with inode *inode*. *ctx* will be a `RequestContext` instance. This method should return an integer file handle. The file handle will be passed to the `readdir`, `fsyncdir` and `releasedir` methods to identify the directory. ''' raise FUSEError(errno.ENOSYS) async def readdir( self, fh: FileHandleT, start_id: int, token: "ReaddirToken" ) -> None: '''Read entries in open directory *fh*. This method should list the contents of directory *fh* (as returned by a prior `opendir` call), starting at the entry identified by *start_id*. Instead of returning the directory entries directly, the method must call `readdir_reply` for each directory entry. If `readdir_reply` returns True, the file system must increase the lookup count for the provided directory entry by one and call `readdir_reply` again for the next entry (if any). If `readdir_reply` returns False, the lookup count must *not* be increased and the method should return without further calls to `readdir_reply`. The *start_id* parameter will be either zero (in which case listing should begin with the first entry) or it will correspond to a value that was previously passed by the file system to the `readdir_reply` function in the *next_id* parameter. If entries are added or removed during a `readdir` cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once. :file:`.` and :file:`..` entries may be included but are not required. However, if they are reported the filesystem *must not* increase the lookup count for the corresponding inodes (even if `readdir_reply` returns True). ''' raise FUSEError(errno.ENOSYS) async def releasedir( self, fh: FileHandleT ) -> None: '''Release open directory. This method will be called exactly once for each `opendir` call. After *fh* has been released, no further `readdir` requests will be received for it (until it is opened again with `opendir`). ''' raise FUSEError(errno.ENOSYS) async def fsyncdir( self, fh: FileHandleT, datasync: bool ) -> None: '''Flush buffers for open directory *fh*. If *datasync* is true, only the directory contents should be flushed (in contrast to metadata about the directory itself). ''' raise FUSEError(errno.ENOSYS) async def statfs( self, ctx: "RequestContext" ) -> "StatvfsData": '''Get file system statistics. *ctx* will be a `RequestContext` instance. The method must return an appropriately filled `StatvfsData` instance. ''' raise FUSEError(errno.ENOSYS) def stacktrace(self) -> None: '''Asynchronous debugging. This method will be called when the ``fuse_stacktrace`` extended attribute is set on the mountpoint. The default implementation logs the current stack trace of every running Python thread. This can be quite useful to debug file system deadlocks. ''' import sys import traceback from os.path import basename code = list() for threadId, frame in sys._current_frames().items(): code.append(f"\n# ThreadID: {threadId}") for filename, lineno, name, line in traceback.extract_stack(frame): code.append(f'{basename(filename)}:{lineno}, in {name}') if line: code.append(f" {line.strip()}") log.error("\n".join(code)) async def setxattr( self, inode: InodeT, name: XAttrNameT, value: bytes, ctx: "RequestContext" ) -> None: '''Set extended attribute *name* of *inode* to *value*. *ctx* will be a `RequestContext` instance. The attribute may or may not exist already. Both *name* and *value* will be of type `bytes`. *name* is guaranteed not to contain zero-bytes (``\\0``). ''' raise FUSEError(errno.ENOSYS) async def getxattr( self, inode: InodeT, name: XAttrNameT, ctx: "RequestContext" ) -> bytes: '''Return extended attribute *name* of *inode*. *ctx* will be a `RequestContext` instance. If the attribute does not exist, the method must raise `FUSEError` with an error code of `ENOATTR`. *name* will be of type `bytes`, but is guaranteed not to contain zero-bytes (``\\0``). ''' raise FUSEError(errno.ENOSYS) async def listxattr( self, inode: InodeT, ctx: "RequestContext" ) -> Sequence[XAttrNameT]: '''Get list of extended attributes for *inode*. *ctx* will be a `RequestContext` instance. This method must return a sequence of `bytes` objects. The objects must not include zero-bytes (``\\0``). ''' raise FUSEError(errno.ENOSYS) async def removexattr( self, inode: InodeT, name: XAttrNameT, ctx: "RequestContext" ) -> None: '''Remove extended attribute *name* of *inode*. *ctx* will be a `RequestContext` instance. If the attribute does not exist, the method must raise `FUSEError` with an error code of `ENOATTR`. *name* will be of type `bytes`, but is guaranteed not to contain zero-bytes (``\\0``). ''' raise FUSEError(errno.ENOSYS) async def access( self, inode: InodeT, mode: ModeT, ctx: "RequestContext" ) -> bool: '''Check if requesting process has *mode* rights on *inode*. *ctx* will be a `RequestContext` instance. The method must return a boolean value. If the ``default_permissions`` mount option is given, this method is not called. When implementing this method, the `get_sup_groups` function may be useful. ''' raise FUSEError(errno.ENOSYS) async def create( self, parent_inode: InodeT, name: FileNameT, mode: ModeT, flags: FlagT, ctx: "RequestContext" ) -> Tuple["FileInfo", "EntryAttributes"]: '''Create a file with permissions *mode* and open it with *flags*. *ctx* will be a `RequestContext` instance. The method must return a tuple of the form *(fi, attr)*, where *fi* is a FileInfo instance handle like the one returned by `open` and *attr* is an `EntryAttributes` instance with the attributes of the newly created directory entry. (Successful) execution of this handler increases the lookup count for the returned inode by one. ''' raise FUSEError(errno.ENOSYS) pyfuse3-3.4.0/src/pyfuse3/asyncio.py0000644000175000017500000000574114663705673017326 0ustar useruser00000000000000''' asyncio.py asyncio compatibility layer for pyfuse3 Copyright © 2018 Nikolaus Rath Copyright © 2018 JustAnotherArchivist This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' import asyncio import collections import sys from typing import Any, Callable, Iterable, Optional, Set, Type import pyfuse3 from ._pyfuse3 import FileHandleT Lock = asyncio.Lock def enable() -> None: '''Switch pyfuse3 to asyncio mode.''' fake_trio = sys.modules['pyfuse3.asyncio'] fake_trio.lowlevel = fake_trio # type: ignore fake_trio.from_thread = fake_trio # type: ignore pyfuse3.trio = fake_trio # type: ignore def disable() -> None: '''Switch pyfuse3 to default (trio) mode.''' pyfuse3.trio = sys.modules['trio'] # type: ignore def current_trio_token() -> str: return 'asyncio' _read_futures = collections.defaultdict(set) async def wait_readable(fd: FileHandleT) -> None: future: 'asyncio.Future[Any]' = asyncio.Future() _read_futures[fd].add(future) try: loop = asyncio.get_event_loop() loop.add_reader(fd, future.set_result, None) future.add_done_callback(lambda f: loop.remove_reader(fd)) await future finally: _read_futures[fd].remove(future) if not _read_futures[fd]: del _read_futures[fd] def notify_closing(fd: FileHandleT) -> None: for f in _read_futures[fd]: f.set_exception(ClosedResourceError()) class ClosedResourceError(Exception): pass def current_task() -> 'Optional[asyncio.Task[Any]]': if sys.version_info < (3, 7): return asyncio.Task.current_task() else: return asyncio.current_task() class _Nursery: async def __aenter__(self) -> "_Nursery": self.tasks: 'Set[asyncio.Task[Any]]' = set() return self def start_soon( self, func: Callable[..., Any], *args: Iterable[Any], name: Optional[str] = None ) -> None: if sys.version_info < (3, 7): task = asyncio.ensure_future(func(*args)) else: task = asyncio.create_task(func(*args)) task.name = name # type: ignore self.tasks.add(task) async def __aexit__( self, exc_type: Optional[Type[BaseException]], exc_value: Optional[BaseException], traceback: Optional[Any] ) -> None: # Wait for tasks to finish while len(self.tasks): # Create a copy of the task list to ensure that it's not a problem # when self.tasks is modified done, pending = await asyncio.wait(tuple(self.tasks)) for task in done: self.tasks.discard(task) # We waited for ALL_COMPLETED (default value of 'when' arg to # asyncio.wait), so all tasks should be completed. If that's not the # case, something's seriously wrong. assert len(pending) == 0 def open_nursery() -> _Nursery: return _Nursery() pyfuse3-3.4.0/src/pyfuse3/darwin_compat.c0000644000175000017500000001400114663705673020267 0ustar useruser00000000000000/* * Copyright (c) 2006-2008 Amit Singh/Google Inc. * Copyright (c) 2012 Anatol Pomozov * Copyright (c) 2011-2013 Benjamin Fleischer */ #include "darwin_compat.h" #include #include #include /* * Semaphore implementation based on: * * Copyright (C) 2000,02 Free Software Foundation, Inc. * This file is part of the GNU C Library. * Written by Gal Le Mignot * * The GNU C Library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * The GNU C Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with the GNU C Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ /* Semaphores */ #define __SEM_ID_NONE ((int)0x0) #define __SEM_ID_LOCAL ((int)0xcafef00d) /* http://www.opengroup.org/onlinepubs/007908799/xsh/sem_init.html */ int darwin_sem_init(darwin_sem_t *sem, int pshared, unsigned int value) { if (pshared) { errno = ENOSYS; return -1; } sem->id = __SEM_ID_NONE; if (pthread_cond_init(&sem->__data.local.count_cond, NULL)) { goto cond_init_fail; } if (pthread_mutex_init(&sem->__data.local.count_lock, NULL)) { goto mutex_init_fail; } sem->__data.local.count = value; sem->id = __SEM_ID_LOCAL; return 0; mutex_init_fail: pthread_cond_destroy(&sem->__data.local.count_cond); cond_init_fail: return -1; } /* http://www.opengroup.org/onlinepubs/007908799/xsh/sem_destroy.html */ int darwin_sem_destroy(darwin_sem_t *sem) { int res = 0; pthread_mutex_lock(&sem->__data.local.count_lock); sem->id = __SEM_ID_NONE; pthread_cond_broadcast(&sem->__data.local.count_cond); if (pthread_cond_destroy(&sem->__data.local.count_cond)) { res = -1; } pthread_mutex_unlock(&sem->__data.local.count_lock); if (pthread_mutex_destroy(&sem->__data.local.count_lock)) { res = -1; } return res; } int darwin_sem_getvalue(darwin_sem_t *sem, unsigned int *sval) { int res = 0; pthread_mutex_lock(&sem->__data.local.count_lock); if (sem->id != __SEM_ID_LOCAL) { res = -1; errno = EINVAL; } else { *sval = sem->__data.local.count; } pthread_mutex_unlock(&sem->__data.local.count_lock); return res; } /* http://www.opengroup.org/onlinepubs/007908799/xsh/sem_post.html */ int darwin_sem_post(darwin_sem_t *sem) { int res = 0; pthread_mutex_lock(&sem->__data.local.count_lock); if (sem->id != __SEM_ID_LOCAL) { res = -1; errno = EINVAL; } else if (sem->__data.local.count < DARWIN_SEM_VALUE_MAX) { sem->__data.local.count++; if (sem->__data.local.count == 1) { pthread_cond_signal(&sem->__data.local.count_cond); } } else { errno = ERANGE; res = -1; } pthread_mutex_unlock(&sem->__data.local.count_lock); return res; } /* http://www.opengroup.org/onlinepubs/009695399/functions/sem_timedwait.html */ int darwin_sem_timedwait(darwin_sem_t *sem, const struct timespec *abs_timeout) { int res = 0; if (abs_timeout && (abs_timeout->tv_nsec < 0 || abs_timeout->tv_nsec >= 1000000000)) { errno = EINVAL; return -1; } pthread_cleanup_push((void(*)(void*))&pthread_mutex_unlock, &sem->__data.local.count_lock); pthread_mutex_lock(&sem->__data.local.count_lock); if (sem->id != __SEM_ID_LOCAL) { errno = EINVAL; res = -1; } else { if (!sem->__data.local.count) { res = pthread_cond_timedwait(&sem->__data.local.count_cond, &sem->__data.local.count_lock, abs_timeout); } if (res) { assert(res == ETIMEDOUT); res = -1; errno = ETIMEDOUT; } else if (sem->id != __SEM_ID_LOCAL) { res = -1; errno = EINVAL; } else { sem->__data.local.count--; } } pthread_cleanup_pop(1); return res; } /* http://www.opengroup.org/onlinepubs/007908799/xsh/sem_trywait.html */ int darwin_sem_trywait(darwin_sem_t *sem) { int res = 0; pthread_mutex_lock(&sem->__data.local.count_lock); if (sem->id != __SEM_ID_LOCAL) { res = -1; errno = EINVAL; } else if (sem->__data.local.count) { sem->__data.local.count--; } else { res = -1; errno = EAGAIN; } pthread_mutex_unlock (&sem->__data.local.count_lock); return res; } /* http://www.opengroup.org/onlinepubs/007908799/xsh/sem_wait.html */ int darwin_sem_wait(darwin_sem_t *sem) { /* Must be volatile or will be clobbered by longjmp */ volatile int res = 0; pthread_cleanup_push((void(*)(void*))&pthread_mutex_unlock, &sem->__data.local.count_lock); pthread_mutex_lock(&sem->__data.local.count_lock); if (sem->id != __SEM_ID_LOCAL) { errno = EINVAL; res = -1; } else { if (!sem->__data.local.count) { pthread_cond_wait(&sem->__data.local.count_cond, &sem->__data.local.count_lock); if (!sem->__data.local.count) { /* spurious wakeup, assume it is an interruption */ res = -1; errno = EINTR; goto out; } } if (sem->id != __SEM_ID_LOCAL) { res = -1; errno = EINVAL; } else { sem->__data.local.count--; } } out: pthread_cleanup_pop(1); return res; } pyfuse3-3.4.0/src/pyfuse3/darwin_compat.h0000644000175000017500000000254014663705673020301 0ustar useruser00000000000000/* * Copyright (c) 2006-2008 Amit Singh/Google Inc. * Copyright (c) 2011-2013 Benjamin Fleischer */ #ifndef _DARWIN_COMPAT_ #define _DARWIN_COMPAT_ #include /* Semaphores */ typedef struct darwin_sem { int id; union { struct { unsigned int count; pthread_mutex_t count_lock; pthread_cond_t count_cond; } local; } __data; } darwin_sem_t; #define DARWIN_SEM_VALUE_MAX ((int32_t)32767) int darwin_sem_init(darwin_sem_t *sem, int pshared, unsigned int value); int darwin_sem_destroy(darwin_sem_t *sem); int darwin_sem_getvalue(darwin_sem_t *sem, unsigned int *value); int darwin_sem_post(darwin_sem_t *sem); int darwin_sem_timedwait(darwin_sem_t *sem, const struct timespec *abs_timeout); int darwin_sem_trywait(darwin_sem_t *sem); int darwin_sem_wait(darwin_sem_t *sem); /* Caller must not include */ typedef darwin_sem_t sem_t; #define sem_init(s, p, v) darwin_sem_init(s, p, v) #define sem_destroy(s) darwin_sem_destroy(s) #define sem_getvalue(s, v) darwin_sem_getvalue(s, v) #define sem_post(s) darwin_sem_post(s) #define sem_timedwait(s, t) darwin_sem_timedwait(s, t) #define sem_trywait(s) darwin_sem_trywait(s) #define sem_wait(s) darwin_sem_wait(s) #define SEM_VALUE_MAX DARWIN_SEM_VALUE_MAX #endif /* _DARWIN_COMPAT_ */ pyfuse3-3.4.0/src/pyfuse3/gettime.h0000644000175000017500000000167514663705673017120 0ustar useruser00000000000000/* * gettime.h * * Platform-independent interface to system clock * * Copyright © 2015 Nikolaus Rath * * This file is part of pyfuse3. This work may be distributed under the * terms of the GNU LGPL. */ /* * Linux */ #if PLATFORM == PLATFORM_LINUX #include static int gettime_realtime(struct timespec *tp) { return clock_gettime(CLOCK_REALTIME, tp); } /* * FreeBSD & NetBSD */ #elif PLATFORM == PLATFORM_BSD #include static int gettime_realtime(struct timespec *tp) { return clock_gettime(CLOCK_REALTIME, tp); } /* * Darwin */ #elif PLATFORM == PLATFORM_DARWIN #include static int gettime_realtime(struct timespec *tp) { struct timeval tv; int res; res = gettimeofday(&tv, NULL); if(res != 0) return -1; tp->tv_sec = tv.tv_sec; tp->tv_nsec = tv.tv_usec * 1000; return 0; } /* * Unknown system */ #else #error This should not happen #endif pyfuse3-3.4.0/src/pyfuse3/handlers.pxi0000644000175000017500000006155014663705673017631 0ustar useruser00000000000000''' handlers.pxi This file defines the FUSE request handlers. It is included by __init__.pyx. Copyright © 2013 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' @cython.freelist(60) cdef class _Container: """For internal use by pyfuse3 only.""" # This serves as a generic container to pass C variables # through Python. Which fields have valid data depends on # context. cdef dev_t rdev cdef fuse_file_info fi cdef fuse_ino_t ino cdef fuse_ino_t parent cdef fuse_req_t req cdef int flags cdef mode_t mode cdef off_t off cdef size_t size cdef struct_stat stat cdef uint64_t fh cdef void fuse_init (void *userdata, fuse_conn_info *conn): if not conn.capable & FUSE_CAP_READDIRPLUS: raise RuntimeError('Kernel too old, pyfuse3 requires kernel 3.9 or newer!') conn.want &= ~( FUSE_CAP_READDIRPLUS_AUTO) if (operations.supports_dot_lookup and conn.capable & FUSE_CAP_EXPORT_SUPPORT): conn.want |= FUSE_CAP_EXPORT_SUPPORT if (operations.enable_writeback_cache and conn.capable & FUSE_CAP_WRITEBACK_CACHE): conn.want |= FUSE_CAP_WRITEBACK_CACHE if (operations.enable_acl and conn.capable & FUSE_CAP_POSIX_ACL): conn.want |= FUSE_CAP_POSIX_ACL # Blocking rather than async, in case we decide to let the # init handler modify `conn` in the future. operations.init() cdef void fuse_lookup (fuse_req_t req, fuse_ino_t parent, const_char *name): cdef _Container c = _Container() c.req = req c.parent = parent save_retval(fuse_lookup_async(c, PyBytes_FromString(name))) async def fuse_lookup_async (_Container c, name): cdef EntryAttributes entry cdef int ret ctx = get_request_context(c.req) try: entry = await operations.lookup( c.parent, name, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_entry(c.req, &entry.fuse_param) if ret != 0: log.error('fuse_lookup(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_forget (fuse_req_t req, fuse_ino_t ino, uint64_t nlookup): save_retval(operations.forget([(ino, nlookup)])) fuse_reply_none(req) cdef void fuse_forget_multi(fuse_req_t req, size_t count, fuse_forget_data *forgets): forget_list = list() for el in forgets[:count]: forget_list.append((el.ino, el.nlookup)) save_retval(operations.forget(forget_list)) fuse_reply_none(req) cdef void fuse_getattr (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.ino = ino save_retval(fuse_getattr_async(c)) async def fuse_getattr_async (_Container c): cdef int ret cdef EntryAttributes entry ctx = get_request_context(c.req) try: entry = await operations.getattr(c.ino, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) if ret != 0: log.error('fuse_getattr(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_setattr (fuse_req_t req, fuse_ino_t ino, struct_stat *stat, int to_set, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.ino = ino c.stat = stat[0] c.flags = to_set if fi is NULL: fh = None else: fh = fi.fh save_retval(fuse_setattr_async(c, fh)) async def fuse_setattr_async (_Container c, fh): cdef int ret cdef timespec now cdef EntryAttributes entry cdef SetattrFields fields cdef struct_stat *attr cdef int to_set = c.flags ctx = get_request_context(c.req) entry = EntryAttributes() fields = SetattrFields.__new__(SetattrFields) string.memcpy(entry.attr, &c.stat, sizeof(struct_stat)) attr = entry.attr if to_set & (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW): ret = libc_extra.gettime_realtime(&now) if ret != 0: log.error('fuse_setattr(): clock_gettime(CLOCK_REALTIME) failed with %s', strerror(errno.errno)) if to_set & FUSE_SET_ATTR_ATIME: fields.update_atime = True elif to_set & FUSE_SET_ATTR_ATIME_NOW: fields.update_atime = True attr.st_atime = now.tv_sec SET_ATIME_NS(attr, now.tv_nsec) if to_set & FUSE_SET_ATTR_MTIME: fields.update_mtime = True elif to_set & FUSE_SET_ATTR_MTIME_NOW: fields.update_mtime = True attr.st_mtime = now.tv_sec SET_MTIME_NS(attr, now.tv_nsec) fields.update_ctime = bool(to_set & FUSE_SET_ATTR_CTIME) fields.update_mode = bool(to_set & FUSE_SET_ATTR_MODE) fields.update_uid = bool(to_set & FUSE_SET_ATTR_UID) fields.update_gid = bool(to_set & FUSE_SET_ATTR_GID) fields.update_size = bool(to_set & FUSE_SET_ATTR_SIZE) try: entry = await operations.setattr(c.ino, entry, fields, fh, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_attr(c.req, entry.attr, entry.fuse_param.attr_timeout) if ret != 0: log.error('fuse_setattr(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_readlink (fuse_req_t req, fuse_ino_t ino): cdef _Container c = _Container() c.req = req c.ino = ino save_retval(fuse_readlink_async(c)) async def fuse_readlink_async (_Container c): cdef int ret cdef char* name ctx = get_request_context(c.req) try: target = await operations.readlink(c.ino, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: name = PyBytes_AsString(target) ret = fuse_reply_readlink(c.req, name) if ret != 0: log.error('fuse_readlink(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_mknod (fuse_req_t req, fuse_ino_t parent, const_char *name, mode_t mode, dev_t rdev): cdef _Container c = _Container() c.req = req c.parent = parent c.mode = mode c.rdev = rdev save_retval(fuse_mknod_async(c, PyBytes_FromString(name))) async def fuse_mknod_async (_Container c, name): cdef int ret cdef EntryAttributes entry ctx = get_request_context(c.req) try: entry = await operations.mknod( c.parent, name, c.mode, c.rdev, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_entry(c.req, &entry.fuse_param) if ret != 0: log.error('fuse_mknod(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_mkdir (fuse_req_t req, fuse_ino_t parent, const_char *name, mode_t mode): cdef _Container c = _Container() c.req = req c.parent = parent c.mode = mode save_retval(fuse_mkdir_async(c, PyBytes_FromString(name))) async def fuse_mkdir_async (_Container c, name): cdef int ret cdef EntryAttributes entry # Force the entry type to directory. We need to explicitly cast, # because on BSD the S_* are not of type mode_t. c.mode = (c.mode & ~ S_IFMT) | S_IFDIR ctx = get_request_context(c.req) try: entry = await operations.mkdir( c.parent, name, c.mode, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_entry(c.req, &entry.fuse_param) if ret != 0: log.error('fuse_mkdir(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_unlink (fuse_req_t req, fuse_ino_t parent, const_char *name): cdef _Container c = _Container() c.req = req c.parent = parent save_retval(fuse_unlink_async(c, PyBytes_FromString(name))) async def fuse_unlink_async (_Container c, name): cdef int ret ctx = get_request_context(c.req) try: await operations.unlink(c.parent, name, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_unlink(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_rmdir (fuse_req_t req, fuse_ino_t parent, const_char *name): cdef _Container c = _Container() c.req = req c.parent = parent save_retval(fuse_rmdir_async(c, PyBytes_FromString(name))) async def fuse_rmdir_async (_Container c, name): cdef int ret ctx = get_request_context(c.req) try: await operations.rmdir(c.parent, name, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_rmdir(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_symlink (fuse_req_t req, const_char *link, fuse_ino_t parent, const_char *name): cdef _Container c = _Container() c.req = req c.parent = parent save_retval(fuse_symlink_async( c, PyBytes_FromString(name), PyBytes_FromString(link))) async def fuse_symlink_async (_Container c, name, link): cdef int ret cdef EntryAttributes entry ctx = get_request_context(c.req) try: entry = await operations.symlink( c.parent, name, link, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_entry(c.req, &entry.fuse_param) if ret != 0: log.error('fuse_symlink(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_rename (fuse_req_t req, fuse_ino_t parent, const_char *name, fuse_ino_t newparent, const_char *newname, unsigned flags): cdef _Container c = _Container() c.req = req c.parent = parent c.ino = newparent c.flags = flags save_retval(fuse_rename_async( c, PyBytes_FromString(name), PyBytes_FromString(newname))) async def fuse_rename_async (_Container c, name, newname): cdef int ret cdef unsigned flags = c.flags cdef fuse_ino_t newparent = c.ino ctx = get_request_context(c.req) try: await operations.rename(c.parent, name, newparent, newname, flags, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_rename(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_link (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const_char *newname): cdef _Container c = _Container() c.req = req c.ino = ino c.parent = newparent save_retval(fuse_link_async(c, PyBytes_FromString(newname))) async def fuse_link_async (_Container c, newname): cdef int ret cdef EntryAttributes entry ctx = get_request_context(c.req) try: entry = await operations.link( c.ino, c.parent, newname, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_entry(c.req, &entry.fuse_param) if ret != 0: log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_open (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.ino = ino c.fi = fi[0] save_retval(fuse_open_async(c)) async def fuse_open_async (_Container c): cdef int ret cdef FileInfo fi ctx = get_request_context(c.req) try: fi = await operations.open(c.ino, c.fi.flags, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: fi._copy_to_fuse(&c.fi) ret = fuse_reply_open(c.req, &c.fi) if ret != 0: log.error('fuse_link(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_read (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.size = size c.off = off c.fh = fi.fh save_retval(fuse_read_async(c)) async def fuse_read_async (_Container c): cdef int ret cdef Py_buffer pybuf try: buf = await operations.read(c.fh, c.off, c.size) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: PyObject_GetBuffer(buf, &pybuf, PyBUF_CONTIG_RO) ret = fuse_reply_buf(c.req, pybuf.buf, pybuf.len) PyBuffer_Release(&pybuf) if ret != 0: log.error('fuse_read(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_write (fuse_req_t req, fuse_ino_t ino, const_char *buf, size_t size, off_t off, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.size = size c.off = off c.fh = fi.fh if size > PY_SSIZE_T_MAX: raise OverflowError('Value too long to convert to Python') pbuf = PyBytes_FromStringAndSize(buf, size) save_retval(fuse_write_async(c, pbuf)) async def fuse_write_async (_Container c, pbuf): cdef int ret cdef size_t len_ try: len_ = await operations.write(c.fh, c.off, pbuf) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_write(c.req, len_) if ret != 0: log.error('fuse_write(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_write_buf(fuse_req_t req, fuse_ino_t ino, fuse_bufvec *bufv, off_t off, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.off = off c.fh = fi.fh buf = PyBytes_from_bufvec(bufv) save_retval(fuse_write_buf_async(c, buf)) async def fuse_write_buf_async (_Container c, buf): cdef int ret cdef size_t len_ try: len_ = await operations.write(c.fh, c.off, buf) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_write(c.req, len_) if ret != 0: log.error('fuse_write_buf(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_flush (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.fh = fi.fh save_retval(fuse_flush_async(c)) async def fuse_flush_async (_Container c): cdef int ret try: await operations.flush(c.fh) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_flush(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_release (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.fh = fi.fh save_retval(fuse_release_async(c)) async def fuse_release_async (_Container c): cdef int ret try: await operations.release(c.fh) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_release(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_fsync (fuse_req_t req, fuse_ino_t ino, int datasync, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.flags = datasync c.fh = fi.fh save_retval(fuse_fsync_async(c)) async def fuse_fsync_async (_Container c): cdef int ret try: await operations.fsync(c.fh, c.flags != 0) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_fsync(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_opendir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.ino = ino c.fi = fi[0] save_retval(fuse_opendir_async(c)) async def fuse_opendir_async (_Container c): cdef int ret ctx = get_request_context(c.req) try: c.fi.fh = await operations.opendir(c.ino, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_open(c.req, &c.fi) if ret != 0: log.error('fuse_opendir(): fuse_reply_* failed with %s', strerror(-ret)) @cython.freelist(10) cdef class ReaddirToken: cdef fuse_req_t req cdef char *buf_start cdef char *buf cdef size_t size cdef void fuse_readdirplus (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, fuse_file_info *fi): global py_retval cdef _Container c = _Container() c.req = req c.size = size c.off = off c.fh = fi.fh save_retval(fuse_readdirplus_async(c)) async def fuse_readdirplus_async (_Container c): cdef int ret cdef ReaddirToken token = ReaddirToken() token.buf_start = NULL token.size = c.size token.req = c.req try: await operations.readdir(c.fh, c.off, token) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: if token.buf_start == NULL: ret = fuse_reply_buf(c.req, NULL, 0) else: ret = fuse_reply_buf(c.req, token.buf_start, c.size - token.size) finally: stdlib.free(token.buf_start) if ret != 0: log.error('fuse_readdirplus(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_releasedir (fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.fh = fi.fh save_retval(fuse_releasedir_async(c)) async def fuse_releasedir_async (_Container c): cdef int ret try: await operations.releasedir(c.fh) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_releasedir(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_fsyncdir (fuse_req_t req, fuse_ino_t ino, int datasync, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.flags = datasync c.fh = fi.fh save_retval(fuse_fsyncdir_async(c)) async def fuse_fsyncdir_async (_Container c): cdef int ret try: await operations.fsyncdir(c.fh, c.flags != 0) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_fsyncdir(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_statfs (fuse_req_t req, fuse_ino_t ino): cdef _Container c = _Container() c.req = req save_retval(fuse_statfs_async(c)) async def fuse_statfs_async (_Container c): cdef int ret cdef StatvfsData stats ctx = get_request_context(c.req) try: stats = await operations.statfs(ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_statfs(c.req, &stats.stat) if ret != 0: log.error('fuse_statfs(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_setxattr (fuse_req_t req, fuse_ino_t ino, const_char *cname, const_char *cvalue, size_t size, int flags): cdef _Container c = _Container() c.req = req c.ino = ino c.size = size c.flags = flags name = PyBytes_FromString(cname) if c.size > PY_SSIZE_T_MAX: raise OverflowError('Value too long to convert to Python') value = PyBytes_FromStringAndSize(cvalue, c.size) save_retval(fuse_setxattr_async(c, name, value)) async def fuse_setxattr_async (_Container c, name, value): cdef int ret # Special case for deadlock debugging if c.ino == FUSE_ROOT_ID and name == 'fuse_stacktrace': operations.stacktrace() fuse_reply_err(c.req, 0) return # Make sure we know all the flags if c.flags & ~(libc_extra.XATTR_CREATE | libc_extra.XATTR_REPLACE): raise ValueError('unknown flag(s): %o' % c.flags) ctx = get_request_context(c.req) try: if c.flags & libc_extra.XATTR_CREATE: # Attribute must not exist try: await operations.getxattr(c.ino, name, ctx) except FUSEError as e: if e.errno != ENOATTR: raise else: raise FUSEError(errno.EEXIST) elif c.flags & libc_extra.XATTR_REPLACE: # Attribute must exist await operations.getxattr(c.ino, name, ctx) await operations.setxattr(c.ino, name, value, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_setxattr(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_getxattr (fuse_req_t req, fuse_ino_t ino, const_char *name, size_t size): cdef _Container c = _Container() c.req = req c.ino = ino c.size = size save_retval(fuse_getxattr_async(c, PyBytes_FromString(name))) async def fuse_getxattr_async (_Container c, name): cdef int ret cdef ssize_t len_s cdef size_t len_ cdef char *cbuf ctx = get_request_context(c.req) try: buf = await operations.getxattr(c.ino, name, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: PyBytes_AsStringAndSize(buf, &cbuf, &len_s) len_ = len_s # guaranteed positive if c.size == 0: ret = fuse_reply_xattr(c.req, len_) elif len_ <= c.size: ret = fuse_reply_buf(c.req, cbuf, len_) else: ret = fuse_reply_err(c.req, errno.ERANGE) if ret != 0: log.error('fuse_getxattr(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size): cdef _Container c = _Container() c.req = req c.ino = ino c.size = size save_retval(fuse_listxattr_async(c)) async def fuse_listxattr_async (_Container c): cdef int ret cdef ssize_t len_s cdef size_t len_ cdef char *cbuf ctx = get_request_context(c.req) try: res = await operations.listxattr(c.ino, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: buf = b'\0'.join(res) + b'\0' PyBytes_AsStringAndSize(buf, &cbuf, &len_s) len_ = len_s # guaranteed positive if len_ == 1: # No attributes len_ = 0 if c.size == 0: ret = fuse_reply_xattr(c.req, len_) elif len_ <= c.size: ret = fuse_reply_buf(c.req, cbuf, len_) else: ret = fuse_reply_err(c.req, errno.ERANGE) if ret != 0: log.error('fuse_listxattr(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_removexattr (fuse_req_t req, fuse_ino_t ino, const_char *name): cdef _Container c = _Container() c.req = req c.ino = ino save_retval(fuse_removexattr_async(c, PyBytes_FromString(name))) async def fuse_removexattr_async (_Container c, name): cdef int ret ctx = get_request_context(c.req) try: await operations.removexattr(c.ino, name, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: ret = fuse_reply_err(c.req, 0) if ret != 0: log.error('fuse_removexattr(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_access (fuse_req_t req, fuse_ino_t ino, int mask): cdef _Container c = _Container() c.req = req c.ino = ino c.flags = mask save_retval(fuse_access_async(c)) async def fuse_access_async (_Container c): cdef int ret cdef int mask = c.flags ctx = get_request_context(c.req) try: allowed = await operations.access(c.ino, mask, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: if allowed: ret = fuse_reply_err(c.req, 0) else: ret = fuse_reply_err(c.req, EACCES) if ret != 0: log.error('fuse_access(): fuse_reply_* failed with %s', strerror(-ret)) cdef void fuse_create (fuse_req_t req, fuse_ino_t parent, const_char *name, mode_t mode, fuse_file_info *fi): cdef _Container c = _Container() c.req = req c.parent = parent c.mode = mode c.fi = fi[0] save_retval(fuse_create_async(c, PyBytes_FromString(name))) async def fuse_create_async (_Container c, name): cdef int ret cdef EntryAttributes entry cdef FileInfo fi ctx = get_request_context(c.req) try: tmp = await operations.create(c.parent, name, c.mode, c.fi.flags, ctx) except FUSEError as e: ret = fuse_reply_err(c.req, e.errno) else: fi = tmp[0] entry = tmp[1] fi._copy_to_fuse(&c.fi) ret = fuse_reply_create(c.req, &entry.fuse_param, &c.fi) if ret != 0: log.error('fuse_create(): fuse_reply_* failed with %s', strerror(-ret)) pyfuse3-3.4.0/src/pyfuse3/internal.pxi0000644000175000017500000002041714663705673017642 0ustar useruser00000000000000''' internal.pxi This file defines functions and data structures that are used internally by pyfuse3. It is included by __init__.pyx. Copyright © 2013 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' cdef void save_retval(object val): global py_retval if py_retval is not None and val is not None: log.error('py_retval was not awaited - please report a bug at ' 'https://github.com/libfuse/pyfuse3/issues!') py_retval = val cdef object get_request_context(fuse_req_t req): '''Get RequestContext() object''' cdef const_fuse_ctx* context cdef RequestContext ctx context = fuse_req_ctx(req) ctx = RequestContext.__new__(RequestContext) ctx.pid = context.pid ctx.uid = context.uid ctx.gid = context.gid ctx.umask = context.umask return ctx cdef void init_fuse_ops(): '''Initialize fuse_lowlevel_ops structure''' string.memset(&fuse_ops, 0, sizeof(fuse_lowlevel_ops)) fuse_ops.init = fuse_init fuse_ops.lookup = fuse_lookup fuse_ops.forget = fuse_forget fuse_ops.getattr = fuse_getattr fuse_ops.setattr = fuse_setattr fuse_ops.readlink = fuse_readlink fuse_ops.mknod = fuse_mknod fuse_ops.mkdir = fuse_mkdir fuse_ops.unlink = fuse_unlink fuse_ops.rmdir = fuse_rmdir fuse_ops.symlink = fuse_symlink fuse_ops.rename = fuse_rename fuse_ops.link = fuse_link fuse_ops.open = fuse_open fuse_ops.read = fuse_read fuse_ops.write = fuse_write fuse_ops.flush = fuse_flush fuse_ops.release = fuse_release fuse_ops.fsync = fuse_fsync fuse_ops.opendir = fuse_opendir fuse_ops.readdirplus = fuse_readdirplus fuse_ops.releasedir = fuse_releasedir fuse_ops.fsyncdir = fuse_fsyncdir fuse_ops.statfs = fuse_statfs ASSIGN_NOT_DARWIN(fuse_ops.setxattr, &fuse_setxattr) ASSIGN_NOT_DARWIN(fuse_ops.getxattr, &fuse_getxattr) fuse_ops.listxattr = fuse_listxattr fuse_ops.removexattr = fuse_removexattr fuse_ops.access = fuse_access fuse_ops.create = fuse_create fuse_ops.forget_multi = fuse_forget_multi fuse_ops.write_buf = fuse_write_buf cdef make_fuse_args(args, fuse_args* f_args): cdef char* arg cdef int i cdef ssize_t size_s cdef size_t size args_new = [ b'pyfuse3' ] for el in args: args_new.append(b'-o') args_new.append(el.encode('us-ascii')) args = args_new f_args.argc = len(args) if f_args.argc == 0: f_args.argv = NULL return f_args.allocated = 1 f_args.argv = stdlib.calloc( f_args.argc, sizeof(char*)) if f_args.argv is NULL: cpython.exc.PyErr_NoMemory() try: for (i, el) in enumerate(args): PyBytes_AsStringAndSize(el, &arg, &size_s) size = size_s # guaranteed positive f_args.argv[i] = stdlib.malloc((size+1)*sizeof(char)) if f_args.argv[i] is NULL: cpython.exc.PyErr_NoMemory() string.strncpy(f_args.argv[i], arg, size+1) except: for i in range(f_args.argc): # Freeing a NULL pointer (if this element has not been allocated # yet) is fine. stdlib.free(f_args.argv[i]) stdlib.free(f_args.argv) raise def _notify_loop(): '''Process async invalidate_entry calls.''' while True: req = _notify_queue.get() if req is None: log.debug('terminating notify thread') break (inode_p, name, deleted, ignore_enoent) = req try: invalidate_entry(inode_p, name, deleted) except Exception as exc: if ignore_enoent and isinstance(exc, FileNotFoundError): pass else: log.exception('Failed to submit invalidate_entry request for ' 'parent inode %d, name %s', req[0], req[1]) cdef str2bytes(s): '''Convert *s* to bytes''' return s.encode(fse, 'surrogateescape') cdef bytes2str(s): '''Convert *s* to str''' return s.decode(fse, 'surrogateescape') cdef strerror(int errno): try: return os.strerror(errno) except ValueError: return 'errno: %d' % errno cdef PyBytes_from_bufvec(fuse_bufvec *src): cdef fuse_bufvec dst cdef size_t len_ cdef ssize_t res len_ = fuse_buf_size(src) - src.off if len_ > PY_SSIZE_T_MAX: raise OverflowError('Value too long to convert to Python') buf = PyBytes_FromStringAndSize(NULL, len_) dst.count = 1 dst.idx = 0 dst.off = 0 dst.buf[0].mem = PyBytes_AS_STRING(buf) dst.buf[0].size = len_ dst.buf[0].flags = 0 res = fuse_buf_copy(&dst, src, 0) if res < 0: raise OSError(errno.errno, 'fuse_buf_copy failed with ' + strerror(errno.errno)) elif res < len_: # This is expected to be rare return buf[:res] else: return buf cdef void* calloc_or_raise(size_t nmemb, size_t size) except NULL: cdef void* mem mem = stdlib.calloc(nmemb, size) if mem is NULL: raise MemoryError() return mem cdef class _WorkerData: """For internal use by pyfuse3 only.""" cdef int task_count cdef int task_serial cdef object read_lock cdef int active_readers def __init__(self): self.read_lock = trio.Lock() self.active_readers = 0 cdef get_name(self): self.task_serial += 1 return 'pyfuse-%02d' % self.task_serial # Delay initialization so that pyfuse3.asyncio can replace # the trio module. cdef _WorkerData worker_data async def _wait_fuse_readable(): '''Wait for FUSE fd to become readable Return True if the fd is readable, or False if the main loop should terminate. ''' #name = trio.lowlevel.current_task().name worker_data.active_readers += 1 try: #log.debug('%s: Waiting for read lock...', name) async with worker_data.read_lock: #log.debug('%s: Waiting for fuse fd to become readable...', name) if fuse_session_exited(session): log.debug('FUSE session exit flag set while waiting for FUSE fd ' 'to become readable.') return False await trio.lowlevel.wait_readable(session_fd) #log.debug('%s: fuse fd readable, unparking next task.', name) except trio.ClosedResourceError: log.debug('FUSE fd about to be closed.') return False finally: worker_data.active_readers -= 1 return True @async_wrapper async def _session_loop(nursery, int min_tasks, int max_tasks): cdef int res cdef fuse_buf buf name = trio.lowlevel.current_task().name buf.mem = NULL buf.size = 0 buf.pos = 0 buf.flags = 0 while not fuse_session_exited(session): if worker_data.active_readers > min_tasks: log.debug('%s: too many idle tasks (%d total, %d waiting), terminating.', name, worker_data.task_count, worker_data.active_readers) break if not await _wait_fuse_readable(): break res = fuse_session_receive_buf(session, &buf) if not worker_data.active_readers and worker_data.task_count < max_tasks: worker_data.task_count += 1 log.debug('%s: No tasks waiting, starting another worker (now %d total).', name, worker_data.task_count) nursery.start_soon(_session_loop, nursery, min_tasks, max_tasks, name=worker_data.get_name()) if res == -errno.EINTR: continue elif res < 0: raise OSError(-res, 'fuse_session_receive_buf failed with ' + strerror(-res)) elif res == 0: break # When fuse_session_process_buf() calls back into one of our handler # methods, the handler will start a co-routine and store it in # py_retval. #log.debug('%s: processing request...', name) save_retval(None) fuse_session_process_buf(session, &buf) if py_retval is not None: await py_retval #log.debug('%s: processing complete.', name) log.debug('%s: terminated', name) stdlib.free(buf.mem) worker_data.task_count -= 1 pyfuse3-3.4.0/src/pyfuse3/macros.c0000644000175000017500000000347714663705673016743 0ustar useruser00000000000000/* macros.c - Pre-processor macros Copyright © 2013 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. */ /* * Macros to access the nanosecond attributes in struct stat in a * platform independent way. Stolen from fuse_misc.h. */ #if PLATFORM == PLATFORM_LINUX #define GET_ATIME_NS(stbuf) ((stbuf)->st_atim.tv_nsec) #define GET_CTIME_NS(stbuf) ((stbuf)->st_ctim.tv_nsec) #define GET_MTIME_NS(stbuf) ((stbuf)->st_mtim.tv_nsec) #define SET_ATIME_NS(stbuf, val) (stbuf)->st_atim.tv_nsec = (val) #define SET_CTIME_NS(stbuf, val) (stbuf)->st_ctim.tv_nsec = (val) #define SET_MTIME_NS(stbuf, val) (stbuf)->st_mtim.tv_nsec = (val) #define GET_BIRTHTIME_NS(stbuf) (0) #define GET_BIRTHTIME(stbuf) (0) #define SET_BIRTHTIME_NS(stbuf, val) do {} while (0) #define SET_BIRTHTIME(stbuf, val) do {} while (0) /* BSD and OS-X */ #else #define GET_BIRTHTIME(stbuf) ((stbuf)->st_birthtime) #define SET_BIRTHTIME(stbuf, val) ((stbuf)->st_birthtime = (val)) #define GET_ATIME_NS(stbuf) ((stbuf)->st_atimespec.tv_nsec) #define GET_CTIME_NS(stbuf) ((stbuf)->st_ctimespec.tv_nsec) #define GET_MTIME_NS(stbuf) ((stbuf)->st_mtimespec.tv_nsec) #define GET_BIRTHTIME_NS(stbuf) ((stbuf)->st_birthtimespec.tv_nsec) #define SET_ATIME_NS(stbuf, val) ((stbuf)->st_atimespec.tv_nsec = (val)) #define SET_CTIME_NS(stbuf, val) ((stbuf)->st_ctimespec.tv_nsec = (val)) #define SET_MTIME_NS(stbuf, val) ((stbuf)->st_mtimespec.tv_nsec = (val)) #define SET_BIRTHTIME_NS(stbuf, val) ((stbuf)->st_birthtimespec.tv_nsec = (val)) #endif #if PLATFORM == PLATFORM_LINUX || PLATFORM == PLATFORM_BSD #define ASSIGN_DARWIN(x,y) #define ASSIGN_NOT_DARWIN(x,y) ((x) = (y)) #elif PLATFORM == PLATFORM_DARWIN #define ASSIGN_DARWIN(x,y) ((x) = (y)) #define ASSIGN_NOT_DARWIN(x,y) #else #error This should not happen #endif pyfuse3-3.4.0/src/pyfuse3/macros.pxd0000644000175000017500000000144614663705673017306 0ustar useruser00000000000000''' macros.pxd Cython definitions for macros.c Copyright © 2018 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' from posix.stat cimport struct_stat cdef extern from "macros.c" nogil: long GET_BIRTHTIME(struct_stat* buf) long GET_ATIME_NS(struct_stat* buf) long GET_CTIME_NS(struct_stat* buf) long GET_MTIME_NS(struct_stat* buf) long GET_BIRTHTIME_NS(struct_stat* buf) void SET_BIRTHTIME(struct_stat* buf, long val) void SET_ATIME_NS(struct_stat* buf, long val) void SET_CTIME_NS(struct_stat* buf, long val) void SET_MTIME_NS(struct_stat* buf, long val) void SET_BIRTHTIME_NS(struct_stat* buf, long val) void ASSIGN_DARWIN(void*, void*) void ASSIGN_NOT_DARWIN(void*, void*) pyfuse3-3.4.0/src/pyfuse3/py.typed0000644000175000017500000000000014663705673016765 0ustar useruser00000000000000pyfuse3-3.4.0/src/pyfuse3/pyfuse3.h0000644000175000017500000000146514663705673017055 0ustar useruser00000000000000/* pyfuse3.h Copyright © 2013 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. */ #define PLATFORM_LINUX 1 #define PLATFORM_BSD 2 #define PLATFORM_DARWIN 3 #ifdef __linux__ #define PLATFORM PLATFORM_LINUX #elif __FreeBSD_kernel__&&__GLIBC__ #define PLATFORM PLATFORM_LINUX #elif __FreeBSD__ #define PLATFORM PLATFORM_BSD #elif __NetBSD__ #define PLATFORM PLATFORM_BSD #elif __APPLE__ && __MACH__ #define PLATFORM PLATFORM_DARWIN #else #error "Unable to determine system (Linux/FreeBSD/NetBSD/Darwin)" #endif #if PLATFORM == PLATFORM_DARWIN #include "darwin_compat.h" #else /* See also: Include/pthreads.pxd */ #include #endif #include #if FUSE_VERSION < 32 #error FUSE version too old, 3.2.0 or newer required #endif pyfuse3-3.4.0/src/pyfuse3/xattr.h0000644000175000017500000000664614663705673016627 0ustar useruser00000000000000/* * xattr.h * * Platform-independent interface to extended attributes * * Copyright © 2015 Nikolaus Rath * * This file is part of pyfuse3. This work may be distributed under the * terms of the GNU LGPL. */ #ifndef UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define UNUSED __attribute__ ((__unused__)) # else # define UNUSED # endif # else # define UNUSED # endif #endif /* * Linux */ #if PLATFORM == PLATFORM_LINUX #include /* * Newer versions of attr deprecate attr/xattr.h which defines ENOATTR as a * synonym for ENODATA. To keep compatibility with the old style and the new, * define this ourselves. */ #ifndef ENOATTR #define ENOATTR ENODATA #endif #define EXTATTR_NAMESPACE_USER 0 #define EXTATTR_NAMESPACE_SYSTEM 0 #define XATTR_NOFOLLOW 0 #define XATTR_NODEFAULT 0 #define XATTR_NOSECURITY 0 static ssize_t getxattr_p (char *path, char *name, void *value, size_t size, UNUSED int namespace) { return getxattr(path, name, value, size); } static int setxattr_p (char *path, char *name, void *value, size_t size, UNUSED int namespace) { return setxattr(path, name, value, size, 0); } /* * FreeBSD & NetBSD */ #elif PLATFORM == PLATFORM_BSD #include #include #include #include #define XATTR_NOFOLLOW 0 #define XATTR_NODEFAULT 0 #define XATTR_NOSECURITY 0 /* FreeBSD doesn't have on operation to only set the attribute if it already exists (XATTR_REPLACE), or only if it does not yet exist (XATTR_CREATE). Setting these values to zero ensures that we can never test positively for them */ #define XATTR_CREATE 0 #define XATTR_REPLACE 0 static ssize_t getxattr_p (char *path, char *name, void *value, size_t size, int namespace) { /* If size > SSIZE_MAX, we cannot determine if we got all the data (because the return value doesn't fit into ssize_t) */ if (size >= SSIZE_MAX) { errno = EINVAL; return -1; } ssize_t ret; ret = extattr_get_file(path, namespace, name, value, size); if (ret > 0 && (size_t) ret == size) { errno = ERANGE; return -1; } return ret; } static int setxattr_p (char *path, char *name, void *value, size_t size, int namespace) { if (size >= SSIZE_MAX) { errno = EINVAL; return -1; } ssize_t ret; ret = extattr_set_file(path, namespace, name, value, size); if (ret < 0) { /* Errno values really ought to fit into int, but better safe than sorry */ if (ret < INT_MIN) return -EOVERFLOW; else return (int) ret; } if ((size_t)ret != size) { errno = ENOSPC; return -1; } return 0; } /* * Darwin */ #elif PLATFORM == PLATFORM_DARWIN #include #define EXTATTR_NAMESPACE_USER 0 #define EXTATTR_NAMESPACE_SYSTEM 0 static ssize_t getxattr_p (char *path, char *name, void *value, size_t size, UNUSED int namespace) { return getxattr(path, name, value, size, 0, 0); } static int setxattr_p (char *path, char *name, void *value, size_t size, UNUSED int namespace) { return setxattr(path, name, value, size, 0, 0); } /* * Unknown system */ #else #error This should not happen #endif pyfuse3-3.4.0/src/pyfuse3.egg-info/0000755000175000017500000000000014663711152016757 5ustar useruser00000000000000pyfuse3-3.4.0/src/pyfuse3.egg-info/PKG-INFO0000644000175000017500000000576714663711151020072 0ustar useruser00000000000000Metadata-Version: 2.1 Name: pyfuse3 Version: 3.4.0 Summary: Python 3 bindings for libfuse 3 with async I/O support Home-page: https://github.com/libfuse/pyfuse3 Author: Nikolaus Rath Author-email: Nikolaus@rath.org License: LGPL Keywords: FUSE,python Platform: Linux Platform: FreeBSD Platform: OS X Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Filesystems Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: POSIX :: Linux Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: POSIX :: BSD :: FreeBSD Classifier: Typing :: Typed Provides: pyfuse3 Requires-Python: >=3.8 License-File: LICENSE .. NOTE: We cannot use sophisticated ReST syntax (like e.g. :file:`foo`) here because this isn't rendered correctly by PyPi and/or BitBucket. Warning - no longer developed! ============================== pyfuse3 is no longer actively developed and just receiving community-contributed maintenance to keep it alive for some time. The pyfuse3 Module ================== .. start-intro pyfuse3 is a set of Python 3 bindings for `libfuse 3`_. It provides an asynchronous API compatible with Trio_ and asyncio_, and enables you to easily write a full-featured Linux filesystem in Python. pyfuse3 releases can be downloaded from PyPi_. The documentation can be `read online`__ and is also included in the ``doc/html`` directory of the pyfuse3 tarball. Getting Help ------------ Please report any bugs on the `issue tracker`_. For discussion and questions, please use the general `FUSE mailing list`_. A searchable `mailing list archive`_ is kindly provided by Gmane_. Development Status ------------------ pyfuse3 is in beta. Bugs are likely. pyfuse3 uses semantic versioning. This means backwards incompatible changes in the API will be reflected in an increase of the major version number. Contributing ------------ The pyfuse3 source code is available on GitHub_. .. __: https://pyfuse3.readthedocs.io/ .. _libfuse 3: http://github.com/libfuse/libfuse .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel .. _issue tracker: https://github.com/libfuse/pyfuse3/issues .. _mailing list archive: http://dir.gmane.org/gmane.comp.file-systems.fuse.devel .. _Gmane: http://www.gmane.org/ .. _PyPi: https://pypi.python.org/pypi/pyfuse3/ .. _GitHub: https://github.com/libfuse/pyfuse3 .. _Trio: https://github.com/python-trio/trio .. _asyncio: https://docs.python.org/3/library/asyncio.html pyfuse3-3.4.0/src/pyfuse3.egg-info/SOURCES.txt0000644000175000017500000000640014663711151020642 0ustar useruser00000000000000Changes.rst LICENSE README.rst pyproject.toml setup.cfg setup.py Include/fuse_common.pxd Include/fuse_lowlevel.pxd Include/fuse_opt.pxd Include/libc_extra.pxd doc/html/.buildinfo doc/html/about.html doc/html/asyncio.html doc/html/changes.html doc/html/data.html doc/html/example.html doc/html/fuse_api.html doc/html/general.html doc/html/genindex.html doc/html/gotchas.html doc/html/index.html doc/html/install.html doc/html/objects.inv doc/html/operations.html doc/html/py-modindex.html doc/html/search.html doc/html/searchindex.js doc/html/util.html doc/html/.doctrees/about.doctree doc/html/.doctrees/asyncio.doctree doc/html/.doctrees/changes.doctree doc/html/.doctrees/data.doctree doc/html/.doctrees/environment.pickle doc/html/.doctrees/example.doctree doc/html/.doctrees/fuse_api.doctree doc/html/.doctrees/general.doctree doc/html/.doctrees/gotchas.doctree doc/html/.doctrees/index.doctree doc/html/.doctrees/install.doctree doc/html/.doctrees/operations.doctree doc/html/.doctrees/util.doctree doc/html/_sources/about.rst.txt doc/html/_sources/asyncio.rst.txt doc/html/_sources/changes.rst.txt doc/html/_sources/data.rst.txt doc/html/_sources/example.rst.txt doc/html/_sources/fuse_api.rst.txt doc/html/_sources/general.rst.txt doc/html/_sources/gotchas.rst.txt doc/html/_sources/index.rst.txt doc/html/_sources/install.rst.txt doc/html/_sources/operations.rst.txt doc/html/_sources/util.rst.txt doc/html/_static/_sphinx_javascript_frameworks_compat.js doc/html/_static/basic.css doc/html/_static/classic.css doc/html/_static/default.css doc/html/_static/doctools.js doc/html/_static/documentation_options.js doc/html/_static/file.png doc/html/_static/jquery-3.6.0.js doc/html/_static/jquery.js doc/html/_static/language_data.js doc/html/_static/minus.png doc/html/_static/plus.png doc/html/_static/pygments.css doc/html/_static/searchtools.js doc/html/_static/sidebar.js doc/html/_static/sphinx_highlight.js doc/html/_static/underscore-1.13.1.js doc/html/_static/underscore.js examples/hello.py examples/hello_asyncio.py examples/passthroughfs.py examples/tmpfs.py rst/about.rst rst/asyncio.rst rst/changes.rst rst/conf.py rst/data.rst rst/example.rst rst/fuse_api.rst rst/general.rst rst/gotchas.rst rst/index.rst rst/install.rst rst/operations.rst rst/util.rst rst/_static/.placeholder rst/_templates/localtoc.html src/_pyfuse3.py src/pyfuse3_asyncio.py src/pyfuse3/__init__.c src/pyfuse3/__init__.pyi src/pyfuse3/__init__.pyx src/pyfuse3/_pyfuse3.py src/pyfuse3/asyncio.py src/pyfuse3/darwin_compat.c src/pyfuse3/darwin_compat.h src/pyfuse3/gettime.h src/pyfuse3/handlers.pxi src/pyfuse3/internal.pxi src/pyfuse3/macros.c src/pyfuse3/macros.pxd src/pyfuse3/py.typed src/pyfuse3/pyfuse3.h src/pyfuse3/xattr.h src/pyfuse3.egg-info/PKG-INFO src/pyfuse3.egg-info/SOURCES.txt src/pyfuse3.egg-info/dependency_links.txt src/pyfuse3.egg-info/requires.txt src/pyfuse3.egg-info/top_level.txt src/pyfuse3.egg-info/zip-safe test/conftest.py test/pytest.ini test/pytest_checklogs.py test/test_api.py test/test_examples.py test/test_fs.py test/test_rounding.py test/util.py test/.pytest_cache/.gitignore test/.pytest_cache/CACHEDIR.TAG test/.pytest_cache/README.md test/.pytest_cache/v/cache/lastfailed test/.pytest_cache/v/cache/nodeids test/.pytest_cache/v/cache/stepwise util/sdist-sign util/sphinx_cython.py util/upload-pypipyfuse3-3.4.0/src/pyfuse3.egg-info/dependency_links.txt0000644000175000017500000000000114663711151023024 0ustar useruser00000000000000 pyfuse3-3.4.0/src/pyfuse3.egg-info/requires.txt0000644000175000017500000000001314663711151021350 0ustar useruser00000000000000trio>=0.15 pyfuse3-3.4.0/src/pyfuse3.egg-info/top_level.txt0000644000175000017500000000004114663711151021503 0ustar useruser00000000000000_pyfuse3 pyfuse3 pyfuse3_asyncio pyfuse3-3.4.0/src/pyfuse3.egg-info/zip-safe0000644000175000017500000000000114245447120020404 0ustar useruser00000000000000 pyfuse3-3.4.0/src/pyfuse3_asyncio.py0000644000175000017500000000053214663705673017377 0ustar useruser00000000000000''' asyncio.py Compatibility redirect: asyncio compatibility layer for pyfuse3 Copyright © 2018 Nikolaus Rath Copyright © 2018 JustAnotherArchivist This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' from pyfuse3 import asyncio import sys sys.modules['pyfuse3_asyncio'] = asyncio pyfuse3-3.4.0/test/0000755000175000017500000000000014663711152014057 5ustar useruser00000000000000pyfuse3-3.4.0/test/.pytest_cache/0000755000175000017500000000000014663711152016610 5ustar useruser00000000000000pyfuse3-3.4.0/test/.pytest_cache/.gitignore0000644000175000017500000000004514245453144020577 0ustar useruser00000000000000# Created by pytest automatically. * pyfuse3-3.4.0/test/.pytest_cache/CACHEDIR.TAG0000644000175000017500000000027714245453144020315 0ustar useruser00000000000000Signature: 8a477f597d28d172789f06886806bc55 # This file is a cache directory tag created by pytest. # For information about cache directory tags, see: # https://bford.info/cachedir/spec.html pyfuse3-3.4.0/test/.pytest_cache/README.md0000644000175000017500000000045614245453144020074 0ustar useruser00000000000000# pytest cache directory # This directory contains data from the pytest's cache plugin, which provides the `--lf` and `--ff` options, as well as the `cache` fixture. **Do not** commit this to version control. See [the docs](https://docs.pytest.org/en/stable/how-to/cache.html) for more information. pyfuse3-3.4.0/test/.pytest_cache/v/0000755000175000017500000000000014663711152017055 5ustar useruser00000000000000pyfuse3-3.4.0/test/.pytest_cache/v/cache/0000755000175000017500000000000014663711152020120 5ustar useruser00000000000000pyfuse3-3.4.0/test/.pytest_cache/v/cache/lastfailed0000644000175000017500000000006214245470753022156 0ustar useruser00000000000000{ "test_examples.py::test_passthroughfs": true }pyfuse3-3.4.0/test/.pytest_cache/v/cache/nodeids0000644000175000017500000000114414245470753021475 0ustar useruser00000000000000[ "test_api.py::test_copy", "test_api.py::test_entry_res", "test_api.py::test_listdir", "test_api.py::test_sup_groups", "test_api.py::test_syncfs", "test_api.py::test_xattr", "test_examples.py::test_hello[hello.py]", "test_examples.py::test_hello[hello_asyncio.py]", "test_examples.py::test_passthroughfs", "test_examples.py::test_tmpfs", "test_fs.py::test_attr_timeout", "test_fs.py::test_entry_timeout", "test_fs.py::test_invalidate_entry", "test_fs.py::test_invalidate_inode", "test_fs.py::test_notify_store", "test_fs.py::test_terminate", "test_rounding.py::test_rounding" ]pyfuse3-3.4.0/test/.pytest_cache/v/cache/stepwise0000644000175000017500000000000214245470753021703 0ustar useruser00000000000000[]pyfuse3-3.4.0/test/conftest.py0000644000175000017500000000713514663705673016277 0ustar useruser00000000000000import sys import os.path import logging import pytest import time import gc # Enable output checks pytest_plugins = ('pytest_checklogs') # Register false positives @pytest.fixture(autouse=True) def register_false_checklog_pos(reg_output): # DeprecationWarnings are unfortunately quite often a result of indirect # imports via third party modules, so we can't actually fix them. reg_output(r'(Pending)?DeprecationWarning', count=0) # Valgrind output reg_output(r'^==\d+== Memcheck, a memory error detector$') reg_output(r'^==\d+== For counts of detected and suppressed errors, rerun with: -v') reg_output(r'^==\d+== ERROR SUMMARY: 0 errors from 0 contexts') def pytest_addoption(parser): group = parser.getgroup("general") group._addoption("--installed", action="store_true", default=False, help="Test the installed package.") group = parser.getgroup("terminal reporting") group._addoption("--logdebug", action="append", metavar='', help="Activate debugging output from for tests. Use `all` " "to get debug messages from all modules. This option can be " "specified multiple times.") # If a test fails, wait a moment before retrieving the captured # stdout/stderr. When using a server process, this makes sure that we capture # any potential output of the server that comes *after* a test has failed. For # example, if a request handler raises an exception, the server first signals an # error to FUSE (causing the test to fail), and then logs the exception. Without # the extra delay, the exception will go into nowhere. @pytest.hookimpl(hookwrapper=True) def pytest_pyfunc_call(pyfuncitem): outcome = yield failed = outcome.excinfo is not None if failed: time.sleep(1) def pytest_configure(config): # If we are running from the source directory, make sure that we load # modules from here basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) if not config.getoption('installed'): pyfuse3_path = os.path.join(basedir, 'src') if (os.path.exists(os.path.join(basedir, 'setup.py')) and os.path.exists(os.path.join(basedir, 'src', 'pyfuse3', '__init__.pyx'))): sys.path.insert(0, pyfuse3_path) # Make sure that called processes use the same path pp = os.environ.get('PYTHONPATH', None) if pp: pp = '%s:%s' % (pyfuse3_path, pp) else: pp = pyfuse3_path os.environ['PYTHONPATH'] = pp try: import faulthandler except ImportError: pass else: faulthandler.enable() # When running from VCS repo, enable all warnings if os.path.exists(os.path.join(basedir, 'MANIFEST.in')): import warnings warnings.resetwarnings() warnings.simplefilter('default') # Configure logging. We don't set a default handler but rely on # the catchlog pytest plugin. logdebug = config.getoption('logdebug') root_logger = logging.getLogger() if logdebug is not None: logging.disable(logging.NOTSET) if 'all' in logdebug: root_logger.setLevel(logging.DEBUG) else: for module in logdebug: logging.getLogger(module).setLevel(logging.DEBUG) else: root_logger.setLevel(logging.INFO) logging.disable(logging.DEBUG) logging.captureWarnings(capture=True) # Run gc.collect() at the end of every test, so that we get ResourceWarnings # as early as possible. def pytest_runtest_teardown(item, nextitem): gc.collect() pyfuse3-3.4.0/test/pytest.ini0000644000175000017500000000012114245446437016111 0ustar useruser00000000000000[pytest] addopts = --verbose --assert=rewrite --tb=native -x markers = uses_fuse pyfuse3-3.4.0/test/pytest_checklogs.py0000644000175000017500000000745514245446437020025 0ustar useruser00000000000000#!/usr/bin/env python3 ''' pytest_checklogs.py - this file is part of S3QL. Copyright (C) 2008 Nikolaus Rath This work can be distributed under the terms of the GNU GPLv3. py.test plugin to look for suspicious phrases in messages emitted on stdout/stderr or via the logging module. False positives can be registered via a new `reg_output` fixture (for messages to stdout/stderr), and a `assert_logs` function (for logging messages). ''' import pytest import re import functools import sys import logging from contextlib import contextmanager class CountMessagesHandler(logging.Handler): def __init__(self, level=logging.NOTSET): super().__init__(level) self.count = 0 def emit(self, record): self.count += 1 @contextmanager def assert_logs(pattern, level=logging.WARNING, count=None): '''Assert that suite emits specified log message *pattern* is matched against the *unformatted* log message, i.e. before any arguments are merged. If *count* is not None, raise an exception unless exactly *count* matching messages are caught. Matched log records will also be flagged so that the caplog fixture does not generate exceptions for them (no matter their severity). ''' def filter(record): if (record.levelno == level and re.search(pattern, record.msg)): record.checklogs_ignore = True return True return False handler = CountMessagesHandler() handler.setLevel(level) handler.addFilter(filter) logger = logging.getLogger() logger.addHandler(handler) try: yield finally: logger.removeHandler(handler) if count is not None and handler.count != count: pytest.fail('Expected to catch %d %r messages, but got only %d' % (count, pattern, handler.count)) def check_test_output(capfd, item): (stdout, stderr) = capfd.readouterr() # Strip out false positives try: false_pos = item.checklogs_fp except AttributeError: false_pos = () for (pattern, flags, count) in false_pos: cp = re.compile(pattern, flags) (stdout, cnt) = cp.subn('', stdout, count=count) if count == 0 or count - cnt > 0: stderr = cp.sub('', stderr, count=count - cnt) for pattern in ('exception', 'error', 'warning', 'fatal', 'traceback', 'fault', 'crash(?:ed)?', 'abort(?:ed)', 'fishy'): cp = re.compile(r'\b{}\b'.format(pattern), re.IGNORECASE | re.MULTILINE) hit = cp.search(stderr) if hit: pytest.fail('Suspicious output to stderr (matched "%s")' % hit.group(0)) hit = cp.search(stdout) if hit: pytest.fail('Suspicious output to stdout (matched "%s")' % hit.group(0)) def register_output(item, pattern, count=1, flags=re.MULTILINE): '''Register *pattern* as false positive for output checking This prevents the test from failing because the output otherwise appears suspicious. ''' item.checklogs_fp.append((pattern, flags, count)) @pytest.fixture() def reg_output(request): assert not hasattr(request.node, 'checklogs_fp') request.node.checklogs_fp = [] return functools.partial(register_output, request.node) # Autouse fixtures are instantiated before explicitly used fixtures, this should also # catch log messages emitted when e.g. initializing resources in other fixtures. @pytest.fixture(autouse=True) def check_output(caplog, capfd, request): yield for when in ("setup", "call", "teardown"): for record in caplog.get_records(when): if (record.levelno >= logging.WARNING and not getattr(record, 'checklogs_ignore', False)): pytest.fail('Logger received warning messages.') check_test_output(capfd, request.node) pyfuse3-3.4.0/test/test_api.py0000755000175000017500000000530114245446437016252 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' test_api.py - Unit tests for pyfuse3. Copyright © 2015 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' if __name__ == '__main__': import pytest import sys sys.exit(pytest.main([__file__] + sys.argv[1:])) import pyfuse3 import tempfile import os import errno import pytest from copy import copy from pickle import PicklingError def test_listdir(): # There is a race-condition here if /usr/bin is modified while the test # runs - but hopefully this is sufficiently rare. list1 = set(os.listdir('/usr/bin')) list2 = set(pyfuse3.listdir('/usr/bin')) assert list1 == list2 def test_sup_groups(): gids = pyfuse3.get_sup_groups(os.getpid()) gids2 = set(os.getgroups()) assert gids == gids2 def test_syncfs(): pyfuse3.syncfs('.') def _getxattr_helper(path, name): try: value = pyfuse3.getxattr(path, name) except OSError as exc: errno = exc.errno value = None if not hasattr(os, 'getxattr'): return value try: value2 = os.getxattr(path, name) except OSError as exc: assert exc.errno == errno else: assert value2 is not None assert value2 == value return value def test_entry_res(): a = pyfuse3.EntryAttributes() val = 1000.2735 a.st_atime_ns = val*1e9 assert a.st_atime_ns / 1e9 == val def test_xattr(): with tempfile.NamedTemporaryFile() as fh: key = 'user.new_attribute' assert _getxattr_helper(fh.name, key) is None value = b'a nice little bytestring' try: pyfuse3.setxattr(fh.name, key, value) except OSError as exc: if exc.errno == errno.ENOTSUP: pytest.skip('ACLs not supported for %s' % fh.name) raise assert _getxattr_helper(fh.name, key) == value if not hasattr(os, 'setxattr'): return key = 'user.another_new_attribute' assert _getxattr_helper(fh.name, key) is None value = b'a nice little bytestring, but slightly modified' os.setxattr(fh.name, key, value) assert _getxattr_helper(fh.name, key) == value def test_copy(): for obj in (pyfuse3.SetattrFields(), pyfuse3.RequestContext()): pytest.raises(PicklingError, copy, obj) for (inst, attr) in ((pyfuse3.EntryAttributes(), 'st_mode'), (pyfuse3.StatvfsData(), 'f_files')): setattr(inst, attr, 42) inst_copy = copy(inst) assert getattr(inst, attr) == getattr(inst_copy, attr) inst = pyfuse3.FUSEError(10) assert inst.errno == copy(inst).errno pyfuse3-3.4.0/test/test_examples.py0000755000175000017500000003252614426510071017313 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' test_examples.py - Unit tests for pyfuse3. Copyright © 2015 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' if __name__ == '__main__': import pytest import sys sys.exit(pytest.main([__file__] + sys.argv[1:])) import subprocess import os import sys import pytest import stat import shutil import filecmp import errno from tempfile import NamedTemporaryFile from util import fuse_test_marker, wait_for_mount, umount, cleanup from pyfuse3 import _NANOS_PER_SEC basename = os.path.join(os.path.dirname(__file__), '..') TEST_FILE = __file__ pytestmark = fuse_test_marker() with open(TEST_FILE, 'rb') as fh: TEST_DATA = fh.read() def name_generator(__ctr=[0]): __ctr[0] += 1 return 'testfile_%d' % __ctr[0] @pytest.mark.parametrize('filename', ('hello.py', 'hello_asyncio.py')) def test_hello(tmpdir, filename): mnt_dir = str(tmpdir) cmdline = [sys.executable, os.path.join(basename, 'examples', filename), mnt_dir ] mount_process = subprocess.Popen(cmdline, stdin=subprocess.DEVNULL, universal_newlines=True) try: wait_for_mount(mount_process, mnt_dir) assert os.listdir(mnt_dir) == [ 'message' ] filename = os.path.join(mnt_dir, 'message') with open(filename, 'r') as fh: assert fh.read() == 'hello world\n' with pytest.raises(IOError) as exc_info: open(filename, 'r+') assert exc_info.value.errno == errno.EACCES with pytest.raises(IOError) as exc_info: open(filename + 'does-not-exist', 'r+') assert exc_info.value.errno == errno.ENOENT except: cleanup(mount_process, mnt_dir) raise else: umount(mount_process, mnt_dir) def test_tmpfs(tmpdir): mnt_dir = str(tmpdir) cmdline = [sys.executable, os.path.join(basename, 'examples', 'tmpfs.py'), mnt_dir ] mount_process = subprocess.Popen(cmdline, stdin=subprocess.DEVNULL, universal_newlines=True) try: wait_for_mount(mount_process, mnt_dir) tst_write(mnt_dir) tst_mkdir(mnt_dir) tst_symlink(mnt_dir) tst_mknod(mnt_dir) tst_chown(mnt_dir) tst_chmod(mnt_dir) tst_utimens(mnt_dir) tst_rounding(mnt_dir) tst_link(mnt_dir) tst_rename(mnt_dir) tst_readdir(mnt_dir) tst_statvfs(mnt_dir) tst_truncate_path(mnt_dir) tst_truncate_fd(mnt_dir) tst_unlink(mnt_dir) except: cleanup(mount_process, mnt_dir) raise else: umount(mount_process, mnt_dir) def test_passthroughfs(tmpdir): mnt_dir = str(tmpdir.mkdir('mnt')) src_dir = str(tmpdir.mkdir('src')) cmdline = [sys.executable, os.path.join(basename, 'examples', 'passthroughfs.py'), src_dir, mnt_dir ] mount_process = subprocess.Popen(cmdline, stdin=subprocess.DEVNULL, universal_newlines=True) try: wait_for_mount(mount_process, mnt_dir) tst_write(mnt_dir) tst_mkdir(mnt_dir) tst_symlink(mnt_dir) tst_mknod(mnt_dir) if os.getuid() == 0: tst_chown(mnt_dir) tst_chmod(mnt_dir) # Underlying fs may not have full nanosecond resolution tst_utimens(mnt_dir, ns_tol=1000) tst_rounding(mnt_dir) tst_link(mnt_dir) tst_rename(mnt_dir) tst_readdir(mnt_dir) tst_statvfs(mnt_dir) tst_truncate_path(mnt_dir) tst_truncate_fd(mnt_dir) tst_unlink(mnt_dir) tst_passthrough(src_dir, mnt_dir) except: cleanup(mount_process, mnt_dir) raise else: umount(mount_process, mnt_dir) def checked_unlink(filename, path, isdir=False): fullname = os.path.join(path, filename) if isdir: os.rmdir(fullname) else: os.unlink(fullname) with pytest.raises(OSError) as exc_info: os.stat(fullname) assert exc_info.value.errno == errno.ENOENT assert filename not in os.listdir(path) def tst_mkdir(mnt_dir): dirname = name_generator() fullname = mnt_dir + "/" + dirname os.mkdir(fullname) fstat = os.stat(fullname) assert stat.S_ISDIR(fstat.st_mode) assert os.listdir(fullname) == [] assert fstat.st_nlink in (1,2) assert dirname in os.listdir(mnt_dir) checked_unlink(dirname, mnt_dir, isdir=True) def tst_symlink(mnt_dir): linkname = name_generator() fullname = mnt_dir + "/" + linkname os.symlink("/imaginary/dest", fullname) fstat = os.lstat(fullname) assert stat.S_ISLNK(fstat.st_mode) assert os.readlink(fullname) == "/imaginary/dest" assert fstat.st_nlink == 1 assert linkname in os.listdir(mnt_dir) checked_unlink(linkname, mnt_dir) def tst_mknod(mnt_dir): filename = os.path.join(mnt_dir, name_generator()) shutil.copyfile(TEST_FILE, filename) fstat = os.lstat(filename) assert stat.S_ISREG(fstat.st_mode) assert fstat.st_nlink == 1 assert os.path.basename(filename) in os.listdir(mnt_dir) assert filecmp.cmp(TEST_FILE, filename, False) checked_unlink(filename, mnt_dir) def tst_chown(mnt_dir): filename = os.path.join(mnt_dir, name_generator()) os.mkdir(filename) fstat = os.lstat(filename) uid = fstat.st_uid gid = fstat.st_gid uid_new = uid + 1 os.chown(filename, uid_new, -1) fstat = os.lstat(filename) assert fstat.st_uid == uid_new assert fstat.st_gid == gid gid_new = gid + 1 os.chown(filename, -1, gid_new) fstat = os.lstat(filename) assert fstat.st_uid == uid_new assert fstat.st_gid == gid_new checked_unlink(filename, mnt_dir, isdir=True) def tst_chmod(mnt_dir): filename = os.path.join(mnt_dir, name_generator()) os.mkdir(filename) fstat = os.lstat(filename) mode = stat.S_IMODE(fstat.st_mode) mode_new = 0o640 assert mode != mode_new os.chmod(filename, mode_new) fstat = os.lstat(filename) assert stat.S_IMODE(fstat.st_mode) == mode_new checked_unlink(filename, mnt_dir, isdir=True) def tst_write(mnt_dir): name = os.path.join(mnt_dir, name_generator()) shutil.copyfile(TEST_FILE, name) assert filecmp.cmp(name, TEST_FILE, False) checked_unlink(name, mnt_dir) def tst_unlink(mnt_dir): name = os.path.join(mnt_dir, name_generator()) data1 = b'foo' data2 = b'bar' with open(os.path.join(mnt_dir, name), 'wb+', buffering=0) as fh: fh.write(data1) checked_unlink(name, mnt_dir) fh.write(data2) fh.seek(0) assert fh.read() == data1+data2 def tst_statvfs(mnt_dir): os.statvfs(mnt_dir) def tst_link(mnt_dir): name1 = os.path.join(mnt_dir, name_generator()) name2 = os.path.join(mnt_dir, name_generator()) shutil.copyfile(TEST_FILE, name1) assert filecmp.cmp(name1, TEST_FILE, False) os.link(name1, name2) fstat1 = os.lstat(name1) fstat2 = os.lstat(name2) assert fstat1 == fstat2 assert fstat1.st_nlink == 2 assert os.path.basename(name2) in os.listdir(mnt_dir) assert filecmp.cmp(name1, name2, False) os.unlink(name2) fstat1 = os.lstat(name1) assert fstat1.st_nlink == 1 os.unlink(name1) def tst_rename(mnt_dir): name1 = os.path.join(mnt_dir, name_generator()) name2 = os.path.join(mnt_dir, name_generator()) shutil.copyfile(TEST_FILE, name1) assert os.path.basename(name1) in os.listdir(mnt_dir) assert os.path.basename(name2) not in os.listdir(mnt_dir) assert filecmp.cmp(name1, TEST_FILE, False) fstat1 = os.lstat(name1) os.rename(name1, name2) fstat2 = os.lstat(name2) assert fstat1 == fstat2 assert filecmp.cmp(name2, TEST_FILE, False) assert os.path.basename(name1) not in os.listdir(mnt_dir) assert os.path.basename(name2) in os.listdir(mnt_dir) os.unlink(name2) def tst_readdir(mnt_dir): dir_ = os.path.join(mnt_dir, name_generator()) file_ = dir_ + "/" + name_generator() subdir = dir_ + "/" + name_generator() subfile = subdir + "/" + name_generator() os.mkdir(dir_) shutil.copyfile(TEST_FILE, file_) os.mkdir(subdir) shutil.copyfile(TEST_FILE, subfile) listdir_is = os.listdir(dir_) listdir_is.sort() listdir_should = [ os.path.basename(file_), os.path.basename(subdir) ] listdir_should.sort() assert listdir_is == listdir_should os.unlink(file_) os.unlink(subfile) os.rmdir(subdir) os.rmdir(dir_) def tst_truncate_path(mnt_dir): assert len(TEST_DATA) > 1024 filename = os.path.join(mnt_dir, name_generator()) with open(filename, 'wb') as fh: fh.write(TEST_DATA) fstat = os.stat(filename) size = fstat.st_size assert size == len(TEST_DATA) # Add zeros at the end os.truncate(filename, size + 1024) assert os.stat(filename).st_size == size + 1024 with open(filename, 'rb') as fh: assert fh.read(size) == TEST_DATA assert fh.read(1025) == b'\0' * 1024 # Truncate data os.truncate(filename, size - 1024) assert os.stat(filename).st_size == size - 1024 with open(filename, 'rb') as fh: assert fh.read(size) == TEST_DATA[:size-1024] os.unlink(filename) def tst_truncate_fd(mnt_dir): assert len(TEST_DATA) > 1024 with NamedTemporaryFile('w+b', 0, dir=mnt_dir) as fh: fd = fh.fileno() fh.write(TEST_DATA) fstat = os.fstat(fd) size = fstat.st_size assert size == len(TEST_DATA) # Add zeros at the end os.ftruncate(fd, size + 1024) assert os.fstat(fd).st_size == size + 1024 fh.seek(0) assert fh.read(size) == TEST_DATA assert fh.read(1025) == b'\0' * 1024 # Truncate data os.ftruncate(fd, size - 1024) assert os.fstat(fd).st_size == size - 1024 fh.seek(0) assert fh.read(size) == TEST_DATA[:size-1024] def tst_utimens(mnt_dir, ns_tol=0): filename = os.path.join(mnt_dir, name_generator()) os.mkdir(filename) fstat = os.lstat(filename) atime = fstat.st_atime + 42.28 mtime = fstat.st_mtime - 42.23 atime_ns = fstat.st_atime_ns + int(42.28*1e9) mtime_ns = fstat.st_mtime_ns - int(42.23*1e9) os.utime(filename, None, ns=(atime_ns, mtime_ns)) fstat = os.lstat(filename) assert abs(fstat.st_atime - atime) < 1e-3 assert abs(fstat.st_mtime - mtime) < 1e-3 assert abs(fstat.st_atime_ns - atime_ns) <= ns_tol assert abs(fstat.st_mtime_ns - mtime_ns) <= ns_tol checked_unlink(filename, mnt_dir, isdir=True) def tst_rounding(mnt_dir, ns_tol=0): filename = os.path.join(mnt_dir, name_generator()) os.mkdir(filename) fstat = os.lstat(filename) # Approximately 67 years, ending in 999. # Note: 67 years were chosen to avoid y2038 issues (1970 + 67 = 2037). # Testing these is **not** in scope of this test. secs = 67 * 365 * 24 * 3600 + 999 # Max nanos nanos = _NANOS_PER_SEC - 1 # seconds+ns and ns_tol as a float in seconds secs_f = secs + nanos / _NANOS_PER_SEC secs_tol = ns_tol / _NANOS_PER_SEC atime_ns = secs * _NANOS_PER_SEC + nanos mtime_ns = atime_ns os.utime(filename, None, ns=(atime_ns, mtime_ns)) fstat = os.lstat(filename) assert abs(fstat.st_atime - secs_f) <= secs_tol assert abs(fstat.st_mtime - secs_f) <= secs_tol assert abs(fstat.st_atime_ns - atime_ns) <= ns_tol assert abs(fstat.st_mtime_ns - mtime_ns) <= ns_tol checked_unlink(filename, mnt_dir, isdir=True) def tst_passthrough(src_dir, mnt_dir): # Test propagation from source to mirror name = name_generator() src_name = os.path.join(src_dir, name) mnt_name = os.path.join(mnt_dir, name) assert name not in os.listdir(src_dir) assert name not in os.listdir(mnt_dir) with open(src_name, 'w') as fh: fh.write('Hello, world') assert name in os.listdir(src_dir) assert name in os.listdir(mnt_dir) assert_same_stats(src_name, mnt_name) # Test propagation from mirror to source name = name_generator() src_name = os.path.join(src_dir, name) mnt_name = os.path.join(mnt_dir, name) assert name not in os.listdir(src_dir) assert name not in os.listdir(mnt_dir) with open(mnt_name, 'w') as fh: fh.write('Hello, world') assert name in os.listdir(src_dir) assert name in os.listdir(mnt_dir) assert_same_stats(src_name, mnt_name) # Test propagation inside subdirectory name = name_generator() src_dir = os.path.join(src_dir, 'subdir') mnt_dir = os.path.join(mnt_dir, 'subdir') os.mkdir(src_dir) src_name = os.path.join(src_dir, name) mnt_name = os.path.join(mnt_dir, name) assert name not in os.listdir(src_dir) assert name not in os.listdir(mnt_dir) with open(mnt_name, 'w') as fh: fh.write('Hello, world') assert name in os.listdir(src_dir) assert name in os.listdir(mnt_dir) assert_same_stats(src_name, mnt_name) def assert_same_stats(name1, name2): stat1 = os.stat(name1) stat2 = os.stat(name2) for name in ('st_atime_ns', 'st_mtime_ns', 'st_ctime_ns', 'st_mode', 'st_ino', 'st_nlink', 'st_uid', 'st_gid', 'st_size'): v1 = getattr(stat1, name) v2 = getattr(stat2, name) assert v1 == v2, 'Attribute {} differs by {} ({} vs {})'.format( name, v1 - v2, v1, v2) pyfuse3-3.4.0/test/test_fs.py0000755000175000017500000002107014314706006016076 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' test_fs.py - Unit tests for pyfuse3. Copyright © 2015 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' import pytest import sys if __name__ == '__main__': sys.exit(pytest.main([__file__] + sys.argv[1:])) import pyfuse3 from pyfuse3 import FUSEError import multiprocessing import os import errno import stat import time import logging import trio import threading from util import fuse_test_marker, wait_for_mount, umount, cleanup pytestmark = fuse_test_marker() def get_mp(): # We can't use forkserver because we have to make sure # that the server inherits the per-test stdout/stderr file # descriptors. if hasattr(multiprocessing, 'get_context'): mp = multiprocessing.get_context('fork') else: # Older versions only support *fork* anyway mp = multiprocessing if threading.active_count() != 1: raise RuntimeError("Multi-threaded test running is not supported") return mp @pytest.fixture() def testfs(tmpdir): mnt_dir = str(tmpdir) mp = get_mp() with mp.Manager() as mgr: cross_process = mgr.Namespace() mount_process = mp.Process(target=run_fs, args=(mnt_dir, cross_process)) mount_process.start() try: wait_for_mount(mount_process, mnt_dir) yield (mnt_dir, cross_process) except: cleanup(mnt_process, mnt_dir) raise else: umount(mount_process, mnt_dir) def test_invalidate_entry(testfs): (mnt_dir, fs_state) = testfs path = os.path.join(mnt_dir, 'message') os.stat(path) assert fs_state.lookup_called fs_state.lookup_called = False os.stat(path) assert not fs_state.lookup_called # Hardcoded sleeptimes - sorry! Needed because of the special semantics of # invalidate_entry() pyfuse3.setxattr(mnt_dir, 'command', b'forget_entry') time.sleep(1.1) os.stat(path) assert fs_state.lookup_called def test_invalidate_inode(testfs): (mnt_dir, fs_state) = testfs with open(os.path.join(mnt_dir, 'message'), 'r') as fh: assert fh.read() == 'hello world\n' assert fs_state.read_called fs_state.read_called = False fh.seek(0) assert fh.read() == 'hello world\n' assert not fs_state.read_called pyfuse3.setxattr(mnt_dir, 'command', b'forget_inode') fh.seek(0) assert fh.read() == 'hello world\n' assert fs_state.read_called def test_notify_store(testfs): (mnt_dir, fs_state) = testfs with open(os.path.join(mnt_dir, 'message'), 'r') as fh: pyfuse3.setxattr(mnt_dir, 'command', b'store') fs_state.read_called = False assert fh.read() == 'hello world\n' assert not fs_state.read_called def test_entry_timeout(testfs): (mnt_dir, fs_state) = testfs fs_state.entry_timeout = 1 path = os.path.join(mnt_dir, 'message') os.stat(path) assert fs_state.lookup_called fs_state.lookup_called = False os.stat(path) assert not fs_state.lookup_called time.sleep(fs_state.entry_timeout*1.1) fs_state.lookup_called = False os.stat(path) assert fs_state.lookup_called def test_attr_timeout(testfs): (mnt_dir, fs_state) = testfs fs_state.attr_timeout = 1 with open(os.path.join(mnt_dir, 'message'), 'r') as fh: os.fstat(fh.fileno()) assert fs_state.getattr_called fs_state.getattr_called = False os.fstat(fh.fileno()) assert not fs_state.getattr_called time.sleep(fs_state.attr_timeout*1.1) fs_state.getattr_called = False os.fstat(fh.fileno()) assert fs_state.getattr_called def test_terminate(tmpdir): mnt_dir = str(tmpdir) mp = get_mp() with mp.Manager() as mgr: fs_state = mgr.Namespace() mount_process = mp.Process(target=run_fs, args=(mnt_dir, fs_state)) mount_process.start() try: wait_for_mount(mount_process, mnt_dir) pyfuse3.setxattr(mnt_dir, 'command', b'terminate') mount_process.join(5) assert mount_process.exitcode is not None except: cleanup(mount_process, mnt_dir) raise class Fs(pyfuse3.Operations): def __init__(self, cross_process): super(Fs, self).__init__() self.hello_name = b"message" self.hello_inode = pyfuse3.ROOT_INODE+1 self.hello_data = b"hello world\n" self.status = cross_process self.lookup_cnt = 0 self.status.getattr_called = False self.status.lookup_called = False self.status.read_called = False self.status.entry_timeout = 99999 self.status.attr_timeout = 99999 async def getattr(self, inode, ctx=None): entry = pyfuse3.EntryAttributes() if inode == pyfuse3.ROOT_INODE: entry.st_mode = (stat.S_IFDIR | 0o755) entry.st_size = 0 elif inode == self.hello_inode: entry.st_mode = (stat.S_IFREG | 0o644) entry.st_size = len(self.hello_data) else: raise pyfuse3.FUSEError(errno.ENOENT) stamp = int(1438467123.985654*1e9) entry.st_atime_ns = stamp entry.st_ctime_ns = stamp entry.st_mtime_ns = stamp entry.st_gid = os.getgid() entry.st_uid = os.getuid() entry.st_ino = inode entry.entry_timeout = self.status.entry_timeout entry.attr_timeout = self.status.attr_timeout self.status.getattr_called = True return entry async def forget(self, inode_list): for (inode, cnt) in inode_list: if inode == self.hello_inode: self.lookup_cnt -= 1 assert self.lookup_cnt >= 0 else: assert inode == pyfuse3.ROOT_INODE async def lookup(self, parent_inode, name, ctx=None): if parent_inode != pyfuse3.ROOT_INODE or name != self.hello_name: raise pyfuse3.FUSEError(errno.ENOENT) self.lookup_cnt += 1 self.status.lookup_called = True return await self.getattr(self.hello_inode) async def opendir(self, inode, ctx): if inode != pyfuse3.ROOT_INODE: raise pyfuse3.FUSEError(errno.ENOENT) return inode async def readdir(self, fh, off, token): assert fh == pyfuse3.ROOT_INODE if off == 0: pyfuse3.readdir_reply( token, self.hello_name, await self.getattr(self.hello_inode), 1) return async def open(self, inode, flags, ctx): if inode != self.hello_inode: raise pyfuse3.FUSEError(errno.ENOENT) if flags & os.O_RDWR or flags & os.O_WRONLY: raise pyfuse3.FUSEError(errno.EACCES) return pyfuse3.FileInfo(fh=inode) async def read(self, fh, off, size): assert fh == self.hello_inode self.status.read_called = True return self.hello_data[off:off+size] async def setxattr(self, inode, name, value, ctx): if inode != pyfuse3.ROOT_INODE or name != b'command': raise FUSEError(errno.ENOTSUP) if value == b'forget_entry': pyfuse3.invalidate_entry_async(pyfuse3.ROOT_INODE, self.hello_name) # Make sure that the request is pending before we return await trio.sleep(0.1) elif value == b'forget_inode': pyfuse3.invalidate_inode(self.hello_inode) elif value == b'store': pyfuse3.notify_store(self.hello_inode, offset=0, data=self.hello_data) elif value == b'terminate': pyfuse3.terminate() else: raise FUSEError(errno.EINVAL) def run_fs(mountpoint, cross_process): # Logging (note that we run in a new process, so we can't # rely on direct log capture and instead print to stdout) root_logger = logging.getLogger() formatter = logging.Formatter('%(asctime)s.%(msecs)03d %(levelname)s ' '%(funcName)s(%(threadName)s): %(message)s', datefmt="%M:%S") handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) handler.setFormatter(formatter) root_logger.addHandler(handler) root_logger.setLevel(logging.DEBUG) testfs = Fs(cross_process) fuse_options = set(pyfuse3.default_options) fuse_options.add('fsname=pyfuse3_testfs') pyfuse3.init(testfs, mountpoint, fuse_options) try: trio.run(pyfuse3.main) finally: pyfuse3.close() pyfuse3-3.4.0/test/test_rounding.py0000755000175000017500000000233314245446437017330 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' test_rounding.py - Unit tests for pyfuse3. Copyright © 2020 Philip Warner This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' if __name__ == '__main__': import pytest import sys sys.exit(pytest.main([__file__] + sys.argv[1:])) import pyfuse3 from pyfuse3 import _NANOS_PER_SEC def test_rounding(): # Incorrect division previously resulted in rounding errors for # all dates. entry = pyfuse3.EntryAttributes() # Approximately 67 years, ending in 999. # Note: 67 years were chosen to avoid y2038 issues (1970 + 67 = 2037). # Testing these is **not** in scope of this test. secs = 67 * 365 * 24 * 3600 + 999 nanos = _NANOS_PER_SEC - 1 total = secs * _NANOS_PER_SEC + nanos entry.st_atime_ns = total entry.st_ctime_ns = total entry.st_mtime_ns = total # Birthtime skipped -- only valid under BSD and OSX #entry.st_birthtime_ns = total assert entry.st_atime_ns == total assert entry.st_ctime_ns == total assert entry.st_mtime_ns == total # Birthtime skipped -- only valid under BSD and OSX #assert entry.st_birthtime_ns == total pyfuse3-3.4.0/test/util.py0000644000175000017500000001006514426510071015402 0ustar useruser00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' util.py - Utility functions for pyfuse3 unit tests. Copyright © 2015 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' import os import platform import pytest import shutil import stat import subprocess import time def fuse_test_marker(): '''Return a pytest.marker that indicates FUSE availability If system/user/environment does not support FUSE, return a `pytest.mark.skip` object with more details. If FUSE is supported, return `pytest.mark.uses_fuse()`. ''' if platform.system() == 'Darwin': # No working autodetection, just assume it will work. return skip = lambda x: pytest.mark.skip(reason=x) fusermount_path = shutil.which('fusermount') if fusermount_path is None: return skip("Can't find fusermount executable") if not os.path.exists('/dev/fuse'): return skip("FUSE kernel module does not seem to be loaded") if os.getuid() == 0: return pytest.mark.uses_fuse() mode = os.stat(fusermount_path).st_mode if mode & stat.S_ISUID == 0: return skip('fusermount executable not setuid, and we are not root.') try: fd = os.open('/dev/fuse', os.O_RDWR) except OSError as exc: return skip('Unable to open /dev/fuse: %s' % exc.strerror) else: os.close(fd) return pytest.mark.uses_fuse() def exitcode(process): if isinstance(process, subprocess.Popen): return process.poll() else: if process.is_alive(): return None else: return process.exitcode def wait_for(callable, timeout=10, interval=0.1): '''Wait until *callable* returns something True and return it If *timeout* expires, return None ''' waited = 0 while True: ret = callable() if ret: return ret if waited > timeout: return None waited += interval time.sleep(interval) def wait_for_mount(mount_process, mnt_dir): elapsed = 0 while elapsed < 30: if os.path.ismount(mnt_dir): return True if exitcode(mount_process) is not None: pytest.fail('file system process terminated prematurely') time.sleep(0.1) elapsed += 0.1 pytest.fail("mountpoint failed to come up") def cleanup(mount_process, mnt_dir): if platform.system() == 'Darwin': subprocess.call(['umount', '-l', mnt_dir], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT) else: subprocess.call(['fusermount', '-z', '-u', mnt_dir], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT) mount_process.terminate() if isinstance(mount_process, subprocess.Popen): try: mount_process.wait(1) except subprocess.TimeoutExpired: mount_process.kill() else: mount_process.join(5) if mount_process.exitcode is None: mount_process.kill() def umount(mount_process, mnt_dir): if platform.system() == 'Darwin': subprocess.check_call(['umount', '-l', mnt_dir]) else: subprocess.check_call(['fusermount', '-z', '-u', mnt_dir]) assert not os.path.ismount(mnt_dir) if isinstance(mount_process, subprocess.Popen): try: code = mount_process.wait(5) if code == 0: return pytest.fail('file system process terminated with code %s' % (code,)) except subprocess.TimeoutExpired: mount_process.terminate() try: mount_process.wait(1) except subprocess.TimeoutExpired: mount_process.kill() else: mount_process.join(5) code = mount_process.exitcode if code == 0: return elif code is None: mount_process.terminate() mount_process.join(1) else: pytest.fail('file system process terminated with code %s' % (code,)) pytest.fail('mount process did not terminate') pyfuse3-3.4.0/util/0000755000175000017500000000000014663711152014055 5ustar useruser00000000000000pyfuse3-3.4.0/util/sdist-sign0000755000175000017500000000046414663705673016106 0ustar useruser00000000000000#!/bin/bash R=$1 if [ "$R" = "" ]; then echo "Usage: sdist-sign 1.2.3" exit fi if [ "$QUBES_GPG_DOMAIN" = "" ]; then GPG=gpg else GPG=qubes-gpg-client-wrapper fi python setup.py sdist D=dist/pyfuse3-$R.tar.gz $GPG --detach-sign --local-user "Thomas Waldmann" --armor --output $D.asc $D pyfuse3-3.4.0/util/sphinx_cython.py0000644000175000017500000000201614245446437017332 0ustar useruser00000000000000# -*- coding: utf-8 -*- ''' sphinx_cython.py This module removes C style type declarations from function and method docstrings. It also works around http://trac.cython.org/cython_trac/ticket/812 Copyright © 2010 Nikolaus Rath This file is part of pyfuse3. This work may be distributed under the terms of the GNU LGPL. ''' import re TYPE_RE = re.compile(r'(int|char|unicode|str|bytes)(?:\s+\*?\s*|\s*\*?\s+)([a-zA-Z_].*)') def setup(app): app.connect('autodoc-process-signature', process_signature) def process_signature(app, what, name, obj, options, signature, return_annotation): # Some unused arguments #pylint: disable=W0613 if signature is None: return (signature, return_annotation) new_params = list() for param in (x.strip() for x in signature[1:-1].split(',')): hit = TYPE_RE.match(param) if hit: new_params.append(hit.group(2)) else: new_params.append(param) return ('(%s)' % ', '.join(new_params), return_annotation) pyfuse3-3.4.0/util/upload-pypi0000755000175000017500000000041714663705673016263 0ustar useruser00000000000000#!/bin/bash R=$1 if [ "$R" = "" ]; then echo "Usage: upload-pypi 1.2.3 [test]" exit fi if [ "$2" = "test" ]; then export TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/ else export TWINE_REPOSITORY_URL= fi D=dist/pyfuse3-$R.tar.gz twine upload $D