summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolaus Rath <Nikolaus@rath.org>2019-09-08 15:58:33 +0100
committerNikolaus Rath <Nikolaus@rath.org>2019-09-08 15:58:33 +0100
commit8046ba3df7d658ac6c5b9e0cd145789958e69110 (patch)
tree4e92cdd5cdd006fd9d31db462b2b6b4aed7670a7
parent2a943f56d4aa75a70e592b02c1fd9f0c11b7764b (diff)
parent0c4f0728c090ec19ec1ccc5f16befda7ed55cc1c (diff)
Update upstream source from tag 'upstream/3.3+dfsg'
Update to upstream version '3.3+dfsg' with Debian dir af9b1d540682a6fa841c5600014cdd2ac19bea23
-rw-r--r--.gitignore1
-rw-r--r--Changes.txt4
-rw-r--r--PKG-INFO2
-rw-r--r--contrib/expire_backups.12
-rw-r--r--contrib/pcp.12
-rw-r--r--doc/latex/LICRlatin2utf8.xdy3
-rw-r--r--doc/latex/latexmkjarc8
-rw-r--r--doc/latex/manual.aux376
-rw-r--r--doc/latex/manual.idx90
-rw-r--r--doc/latex/manual.tex161
-rw-r--r--doc/latex/manual.toc346
-rw-r--r--doc/latex/python.ist3
-rw-r--r--doc/latex/sphinx.sty232
-rw-r--r--doc/latex/sphinx.xdy8
-rw-r--r--doc/latex/sphinxhighlight.sty102
-rw-r--r--doc/latex/sphinxhowto.cls11
-rw-r--r--doc/latex/sphinxmanual.cls8
-rw-r--r--doc/man/fsck.s3ql.12
-rw-r--r--doc/man/mkfs.s3ql.12
-rw-r--r--doc/man/mount.s3ql.12
-rw-r--r--doc/man/s3ql_oauth_client.135
-rw-r--r--doc/man/s3ql_verify.12
-rw-r--r--doc/man/s3qladm.12
-rw-r--r--doc/man/s3qlcp.12
-rw-r--r--doc/man/s3qlctrl.12
-rw-r--r--doc/man/s3qllock.12
-rw-r--r--doc/man/s3qlrm.12
-rw-r--r--doc/man/s3qlstat.12
-rw-r--r--doc/man/umount.s3ql.12
-rw-r--r--doc/manual.pdfbin310842 -> 310521 bytes
-rw-r--r--rst/backends.rst20
-rw-r--r--rst/man/ctrl.rst2
-rw-r--r--src/s3ql.egg-info/PKG-INFO2
-rw-r--r--src/s3ql.egg-info/SOURCES.txt1
-rw-r--r--src/s3ql.egg-info/requires.txt4
-rw-r--r--src/s3ql/__init__.py2
-rw-r--r--src/s3ql/backends/swift.py3
-rw-r--r--src/s3ql/backends/swiftks.py72
-rw-r--r--src/s3ql/deltadump.c2754
39 files changed, 1962 insertions, 2314 deletions
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 26a7c92..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/.pc/
diff --git a/Changes.txt b/Changes.txt
index 6cd0e38..c4b4d9a 100644
--- a/Changes.txt
+++ b/Changes.txt
@@ -1,3 +1,7 @@
+2019-09-08, S3QL 3.3
+
+ * Added support for Keystone V3 authentication.
+
2019-07-17, S3QL 3.2
* Added a `--compress` option to `fsck.s3ql`.
diff --git a/PKG-INFO b/PKG-INFO
index 2c96bfe..32738ed 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: s3ql
-Version: 3.2
+Version: 3.3
Summary: a full-featured file system for online data storage
Home-page: https://bitbucket.org/nikratio/s3ql/
Author: Nikolaus Rath
diff --git a/contrib/expire_backups.1 b/contrib/expire_backups.1
index 8c5be77..6783b09 100644
--- a/contrib/expire_backups.1
+++ b/contrib/expire_backups.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "EXPIRE_BACKUPS" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "EXPIRE_BACKUPS" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
expire_backups \- Intelligently expire old backups
.
diff --git a/contrib/pcp.1 b/contrib/pcp.1
index 3d7ead4..d73f5a3 100644
--- a/contrib/pcp.1
+++ b/contrib/pcp.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "PCP" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "PCP" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
pcp \- Recursive, parallel copy of directory trees
.
diff --git a/doc/latex/LICRlatin2utf8.xdy b/doc/latex/LICRlatin2utf8.xdy
index 60a24b4..31c80f9 100644
--- a/doc/latex/LICRlatin2utf8.xdy
+++ b/doc/latex/LICRlatin2utf8.xdy
@@ -29,6 +29,9 @@
;; to preamble of LaTeX document. However this character is not supported
;; by the TeX "times" font used by default by Sphinx for pdflatex engine.
;;
+;; **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and
+;; \.{} need no extra user declaration anymore.
+;;
;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up).
;;
;; - U+02DB (˛) and U+02D9 (˙) are also not supported by inputenc
diff --git a/doc/latex/latexmkjarc b/doc/latex/latexmkjarc
index 93c7fc7..5b315d6 100644
--- a/doc/latex/latexmkjarc
+++ b/doc/latex/latexmkjarc
@@ -5,11 +5,9 @@ sub mendex {
my ($source, $basename, $destination) = @_;
my $dictfile = $basename . ".dic";
unlink($destination);
- if (-f $dictfile) {
- system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source);
- if ($? > 0) {
- print("mendex exited with error code $? (ignored)\n");
- }
+ system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source);
+ if ($? > 0) {
+ print("mendex exited with error code $? (ignored)\n");
}
if (!-e $destination) {
# create an empty .ind file if nothing
diff --git a/doc/latex/manual.aux b/doc/latex/manual.aux
index 7b9204f..aafb5c8 100644
--- a/doc/latex/manual.aux
+++ b/doc/latex/manual.aux
@@ -16,49 +16,46 @@
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
-\select@language{english}
-\@writefile{toc}{\select@language{english}}
-\@writefile{lof}{\select@language{english}}
-\@writefile{lot}{\select@language{english}}
+\babel@aux{english}{}
\newlabel{index::doc}{{}{1}{}{section*.2}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {1}S3QL}{1}{chapter.1}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {1}S3QL}{1}{chapter.1}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{about:s3ql}{{1}{1}{S3QL}{chapter.1}{}}
\newlabel{about::doc}{{1}{1}{S3QL}{chapter.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.1}Features}{1}{section.1.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {1.1}Features}{1}{section.1.1}\protected@file@percent }
\newlabel{about:features}{{1.1}{1}{Features}{section.1.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.2}Development Status}{2}{section.1.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {1.2}Development Status}{2}{section.1.2}\protected@file@percent }
\newlabel{about:development-status}{{1.2}{2}{Development Status}{section.1.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.3}Supported Platforms}{2}{section.1.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {1.3}Supported Platforms}{2}{section.1.3}\protected@file@percent }
\newlabel{about:supported-platforms}{{1.3}{2}{Supported Platforms}{section.1.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.4}Contributing}{2}{section.1.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {1.4}Contributing}{2}{section.1.4}\protected@file@percent }
\newlabel{about:contributing}{{1.4}{2}{Contributing}{section.1.4}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {2}Installation}{3}{chapter.2}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {2}Installation}{3}{chapter.2}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{installation:installation}{{2}{3}{Installation}{chapter.2}{}}
\newlabel{installation::doc}{{2}{3}{Installation}{chapter.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {2.1}Dependencies}{3}{section.2.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {2.1}Dependencies}{3}{section.2.1}\protected@file@percent }
\newlabel{installation:dependencies}{{2.1}{3}{Dependencies}{section.2.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {2.2}Installing S3QL}{4}{section.2.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {2.2}Installing S3QL}{4}{section.2.2}\protected@file@percent }
\newlabel{installation:installing-s3ql}{{2.2}{4}{Installing S3QL}{section.2.2}{}}
\newlabel{installation:inst-s3ql}{{2.2}{4}{Installing S3QL}{section.2.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {2.3}Development Version}{4}{section.2.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {2.3}Development Version}{4}{section.2.3}\protected@file@percent }
\newlabel{installation:development-version}{{2.3}{4}{Development Version}{section.2.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {2.4}Running tests requiring remote servers}{4}{section.2.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {2.4}Running tests requiring remote servers}{4}{section.2.4}\protected@file@percent }
\newlabel{installation:running-tests-requiring-remote-servers}{{2.4}{4}{Running tests requiring remote servers}{section.2.4}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {3}Storage Backends}{7}{chapter.3}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {3}Storage Backends}{7}{chapter.3}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{backends:storage-backends}{{3}{7}{Storage Backends}{chapter.3}{}}
\newlabel{backends:id1}{{3}{7}{Storage Backends}{chapter.3}{}}
\newlabel{backends::doc}{{3}{7}{Storage Backends}{chapter.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.1}Google Storage}{7}{section.3.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.1}Google Storage}{7}{section.3.1}\protected@file@percent }
\newlabel{backends:google-storage}{{3.1}{7}{Google Storage}{section.3.1}{}}
\newlabel{backends:cmdoption-gs-backend-arg-ssl-ca-path}{{3.1}{7}{Google Storage}{section*.3}{}}
\newlabel{backends:cmdoption-gs-backend-arg-tcp-timeout}{{3.1}{8}{Google Storage}{section*.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.2}Amazon S3}{8}{section.3.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.2}Amazon S3}{8}{section.3.2}\protected@file@percent }
\newlabel{backends:amazon-s3}{{3.2}{8}{Amazon S3}{section.3.2}{}}
\newlabel{backends:cmdoption-s3-backend-arg-no-ssl}{{3.2}{8}{Amazon S3}{section*.5}{}}
\newlabel{backends:cmdoption-s3-backend-arg-ssl-ca-path}{{3.2}{8}{Amazon S3}{section*.6}{}}
@@ -68,7 +65,7 @@
\newlabel{backends:cmdoption-s3-backend-arg-ia}{{3.2}{8}{Amazon S3}{section*.10}{}}
\newlabel{backends:cmdoption-s3-backend-arg-oia}{{3.2}{8}{Amazon S3}{section*.11}{}}
\newlabel{backends:cmdoption-s3-backend-arg-rrs}{{3.2}{8}{Amazon S3}{section*.12}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.3}OpenStack/Swift}{9}{section.3.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.3}OpenStack/Swift}{9}{section.3.3}\protected@file@percent }
\newlabel{backends:openstack-swift}{{3.3}{9}{OpenStack/Swift}{section.3.3}{}}
\newlabel{backends:openstack-backend}{{3.3}{9}{OpenStack/Swift}{section.3.3}{}}
\newlabel{backends:cmdoption-swift-backend-arg-no-ssl}{{3.3}{9}{OpenStack/Swift}{section*.13}{}}
@@ -76,399 +73,404 @@
\newlabel{backends:cmdoption-swift-backend-arg-tcp-timeout}{{3.3}{9}{OpenStack/Swift}{section*.15}{}}
\newlabel{backends:cmdoption-swift-backend-arg-disable-expect100}{{3.3}{9}{OpenStack/Swift}{section*.16}{}}
\newlabel{backends:cmdoption-swift-backend-arg-no-feature-detection}{{3.3}{9}{OpenStack/Swift}{section*.17}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.4}Rackspace CloudFiles}{10}{section.3.4}}
+\newlabel{backends:cmdoption-swift-backend-arg-domain}{{3.3}{10}{OpenStack/Swift}{section*.18}{}}
+\newlabel{backends:cmdoption-swift-backend-arg-project-domain}{{3.3}{10}{OpenStack/Swift}{section*.19}{}}
+\newlabel{backends:cmdoption-swift-backend-arg-in}{{3.3}{10}{OpenStack/Swift}{section*.20}{}}
+\newlabel{backends:cmdoption-swift-backend-arg-it}{{3.3}{10}{OpenStack/Swift}{section*.21}{}}
+\newlabel{backends:cmdoption-swift-backend-arg-assumed}{{3.3}{10}{OpenStack/Swift}{section*.22}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.4}Rackspace CloudFiles}{10}{section.3.4}\protected@file@percent }
\newlabel{backends:rackspace-cloudfiles}{{3.4}{10}{Rackspace CloudFiles}{section.3.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.5}S3 compatible}{10}{section.3.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.5}S3 compatible}{10}{section.3.5}\protected@file@percent }
\newlabel{backends:s3-compatible}{{3.5}{10}{S3 compatible}{section.3.5}{}}
-\newlabel{backends:cmdoption-s3c-backend-arg-no-ssl}{{3.5}{10}{S3 compatible}{section*.18}{}}
-\newlabel{backends:cmdoption-s3c-backend-arg-ssl-ca-path}{{3.5}{10}{S3 compatible}{section*.19}{}}
-\newlabel{backends:cmdoption-s3c-backend-arg-tcp-timeout}{{3.5}{10}{S3 compatible}{section*.20}{}}
-\newlabel{backends:cmdoption-s3c-backend-arg-disable-expect100}{{3.5}{10}{S3 compatible}{section*.21}{}}
-\newlabel{backends:cmdoption-s3c-backend-arg-dumb-copy}{{3.5}{10}{S3 compatible}{section*.22}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.6}Local}{11}{section.3.6}}
+\newlabel{backends:cmdoption-s3c-backend-arg-no-ssl}{{3.5}{10}{S3 compatible}{section*.23}{}}
+\newlabel{backends:cmdoption-s3c-backend-arg-ssl-ca-path}{{3.5}{10}{S3 compatible}{section*.24}{}}
+\newlabel{backends:cmdoption-s3c-backend-arg-tcp-timeout}{{3.5}{11}{S3 compatible}{section*.25}{}}
+\newlabel{backends:cmdoption-s3c-backend-arg-disable-expect100}{{3.5}{11}{S3 compatible}{section*.26}{}}
+\newlabel{backends:cmdoption-s3c-backend-arg-dumb-copy}{{3.5}{11}{S3 compatible}{section*.27}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.6}Local}{11}{section.3.6}\protected@file@percent }
\newlabel{backends:local}{{3.6}{11}{Local}{section.3.6}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {4}Important Rules to Avoid Losing Data}{13}{chapter.4}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {4}Important Rules to Avoid Losing Data}{13}{chapter.4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{durability:important-rules-to-avoid-losing-data}{{4}{13}{Important Rules to Avoid Losing Data}{chapter.4}{}}
\newlabel{durability:durability}{{4}{13}{Important Rules to Avoid Losing Data}{chapter.4}{}}
\newlabel{durability::doc}{{4}{13}{Important Rules to Avoid Losing Data}{chapter.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.1}Rules in a Nutshell}{13}{section.4.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.1}Rules in a Nutshell}{13}{section.4.1}\protected@file@percent }
\newlabel{durability:rules-in-a-nutshell}{{4.1}{13}{Rules in a Nutshell}{section.4.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.2}Consistency Window List}{14}{section.4.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.2}Consistency Window List}{14}{section.4.2}\protected@file@percent }
\newlabel{durability:consistency-window-list}{{4.2}{14}{Consistency Window List}{section.4.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.3}Data Consistency}{14}{section.4.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.3}Data Consistency}{14}{section.4.3}\protected@file@percent }
\newlabel{durability:data-consistency}{{4.3}{14}{Data Consistency}{section.4.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.4}Data Durability}{15}{section.4.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.4}Data Durability}{15}{section.4.4}\protected@file@percent }
\newlabel{durability:data-durability}{{4.4}{15}{Data Durability}{section.4.4}{}}
\newlabel{durability:backend-reliability}{{4.4}{15}{Data Durability}{section.4.4}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {5}File System Creation}{17}{chapter.5}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {5}File System Creation}{17}{chapter.5}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{mkfs:file-system-creation}{{5}{17}{File System Creation}{chapter.5}{}}
\newlabel{mkfs::doc}{{5}{17}{File System Creation}{chapter.5}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {6}Managing File Systems}{19}{chapter.6}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {6}Managing File Systems}{19}{chapter.6}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{adm:managing-file-systems}{{6}{19}{Managing File Systems}{chapter.6}{}}
\newlabel{adm::doc}{{6}{19}{Managing File Systems}{chapter.6}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.1}Changing the Passphrase}{19}{section.6.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.1}Changing the Passphrase}{19}{section.6.1}\protected@file@percent }
\newlabel{adm:changing-the-passphrase}{{6.1}{19}{Changing the Passphrase}{section.6.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.2}Upgrading the file system}{20}{section.6.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.2}Upgrading the file system}{20}{section.6.2}\protected@file@percent }
\newlabel{adm:upgrading-the-file-system}{{6.2}{20}{Upgrading the file system}{section.6.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.3}Deleting a file system}{20}{section.6.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.3}Deleting a file system}{20}{section.6.3}\protected@file@percent }
\newlabel{adm:deleting-a-file-system}{{6.3}{20}{Deleting a file system}{section.6.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.4}Restoring Metadata Backups}{20}{section.6.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.4}Restoring Metadata Backups}{20}{section.6.4}\protected@file@percent }
\newlabel{adm:restoring-metadata-backups}{{6.4}{20}{Restoring Metadata Backups}{section.6.4}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {7}Mounting}{21}{chapter.7}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {7}Mounting}{21}{chapter.7}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{mount:mounting}{{7}{21}{Mounting}{chapter.7}{}}
\newlabel{mount::doc}{{7}{21}{Mounting}{chapter.7}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.1}Permission Checking}{22}{section.7.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.1}Permission Checking}{22}{section.7.1}\protected@file@percent }
\newlabel{mount:permission-checking}{{7.1}{22}{Permission Checking}{section.7.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.2}Compression Algorithms}{22}{section.7.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.2}Compression Algorithms}{22}{section.7.2}\protected@file@percent }
\newlabel{mount:compression-algorithms}{{7.2}{22}{Compression Algorithms}{section.7.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.3}Notes about Caching}{23}{section.7.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.3}Notes about Caching}{23}{section.7.3}\protected@file@percent }
\newlabel{mount:notes-about-caching}{{7.3}{23}{Notes about Caching}{section.7.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}Maximum Number of Cache Entries}{23}{subsection.7.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}Maximum Number of Cache Entries}{23}{subsection.7.3.1}\protected@file@percent }
\newlabel{mount:maximum-number-of-cache-entries}{{7.3.1}{23}{Maximum Number of Cache Entries}{subsection.7.3.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Cache Flushing and Expiration}{23}{subsection.7.3.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Cache Flushing and Expiration}{23}{subsection.7.3.2}\protected@file@percent }
\newlabel{mount:cache-flushing-and-expiration}{{7.3.2}{23}{Cache Flushing and Expiration}{subsection.7.3.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.4}NFS Support}{23}{section.7.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.4}NFS Support}{23}{section.7.4}\protected@file@percent }
\newlabel{mount:nfs-support}{{7.4}{23}{NFS Support}{section.7.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.5}Failure Modes}{23}{section.7.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.5}Failure Modes}{23}{section.7.5}\protected@file@percent }
\newlabel{mount:failure-modes}{{7.5}{23}{Failure Modes}{section.7.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.6}Automatic Mounting}{24}{section.7.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.6}Automatic Mounting}{24}{section.7.6}\protected@file@percent }
\newlabel{mount:automatic-mounting}{{7.6}{24}{Automatic Mounting}{section.7.6}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {8}Advanced S3QL Features}{25}{chapter.8}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {8}Advanced S3QL Features}{25}{chapter.8}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{special:advanced-s3ql-features}{{8}{25}{Advanced S3QL Features}{chapter.8}{}}
\newlabel{special::doc}{{8}{25}{Advanced S3QL Features}{chapter.8}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.1}Snapshotting and Copy-on-Write}{25}{section.8.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.1}Snapshotting and Copy-on-Write}{25}{section.8.1}\protected@file@percent }
\newlabel{special:snapshotting-and-copy-on-write}{{8.1}{25}{Snapshotting and Copy-on-Write}{section.8.1}{}}
\newlabel{special:s3qlcp}{{8.1}{25}{Snapshotting and Copy-on-Write}{section.8.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Snapshotting vs Hardlinking}{25}{subsection.8.1.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Snapshotting vs Hardlinking}{25}{subsection.8.1.1}\protected@file@percent }
\newlabel{special:snapshotting-vs-hardlinking}{{8.1.1}{25}{Snapshotting vs Hardlinking}{subsection.8.1.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.2}Getting Statistics}{26}{section.8.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.2}Getting Statistics}{26}{section.8.2}\protected@file@percent }
\newlabel{special:getting-statistics}{{8.2}{26}{Getting Statistics}{section.8.2}{}}
\newlabel{special:s3qlstat}{{8.2}{26}{Getting Statistics}{section.8.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.3}Immutable Trees}{26}{section.8.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.3}Immutable Trees}{26}{section.8.3}\protected@file@percent }
\newlabel{special:immutable-trees}{{8.3}{26}{Immutable Trees}{section.8.3}{}}
\newlabel{special:s3qllock}{{8.3}{26}{Immutable Trees}{section.8.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.4}Fast Recursive Removal}{27}{section.8.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.4}Fast Recursive Removal}{27}{section.8.4}\protected@file@percent }
\newlabel{special:fast-recursive-removal}{{8.4}{27}{Fast Recursive Removal}{section.8.4}{}}
\newlabel{special:s3qlrm}{{8.4}{27}{Fast Recursive Removal}{section.8.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.5}Runtime Configuration}{27}{section.8.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.5}Runtime Configuration}{27}{section.8.5}\protected@file@percent }
\newlabel{special:runtime-configuration}{{8.5}{27}{Runtime Configuration}{section.8.5}{}}
\newlabel{special:s3qlctrl}{{8.5}{27}{Runtime Configuration}{section.8.5}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {9}Unmounting}{29}{chapter.9}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {9}Unmounting}{29}{chapter.9}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{umount:unmounting}{{9}{29}{Unmounting}{chapter.9}{}}
\newlabel{umount::doc}{{9}{29}{Unmounting}{chapter.9}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {10}Checking for Errors}{31}{chapter.10}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {10}Checking for Errors}{31}{chapter.10}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{fsck:checking-for-errors}{{10}{31}{Checking for Errors}{chapter.10}{}}
\newlabel{fsck::doc}{{10}{31}{Checking for Errors}{chapter.10}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.1}Checking and repairing internal file system errors}{31}{section.10.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.1}Checking and repairing internal file system errors}{31}{section.10.1}\protected@file@percent }
\newlabel{fsck:checking-and-repairing-internal-file-system-errors}{{10.1}{31}{Checking and repairing internal file system errors}{section.10.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.2}Detecting and handling backend data corruption}{32}{section.10.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.2}Detecting and handling backend data corruption}{32}{section.10.2}\protected@file@percent }
\newlabel{fsck:detecting-and-handling-backend-data-corruption}{{10.2}{32}{Detecting and handling backend data corruption}{section.10.2}{}}
\newlabel{fsck:s3ql-verify}{{10.2}{32}{Detecting and handling backend data corruption}{section.10.2}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {11}Storing Backend Information and Credentials}{35}{chapter.11}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {11}Storing Backend Information and Credentials}{35}{chapter.11}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{authinfo:storing-backend-information-and-credentials}{{11}{35}{Storing Backend Information and Credentials}{chapter.11}{}}
\newlabel{authinfo:authinfo}{{11}{35}{Storing Backend Information and Credentials}{chapter.11}{}}
\newlabel{authinfo::doc}{{11}{35}{Storing Backend Information and Credentials}{chapter.11}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {12}Contributed Programs}{37}{chapter.12}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {12}Contributed Programs}{37}{chapter.12}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{contrib:contributed-programs}{{12}{37}{Contributed Programs}{chapter.12}{}}
\newlabel{contrib::doc}{{12}{37}{Contributed Programs}{chapter.12}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {12.1}benchmark.py}{37}{section.12.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {12.1}benchmark.py}{37}{section.12.1}\protected@file@percent }
\newlabel{contrib:benchmark-py}{{12.1}{37}{benchmark.py}{section.12.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {12.2}clone\_fs.py}{37}{section.12.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {12.2}clone\_fs.py}{37}{section.12.2}\protected@file@percent }
\newlabel{contrib:clone-fs-py}{{12.2}{37}{clone\_fs.py}{section.12.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {12.3}pcp.py}{37}{section.12.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {12.3}pcp.py}{37}{section.12.3}\protected@file@percent }
\newlabel{contrib:pcp-py}{{12.3}{37}{pcp.py}{section.12.3}{}}
\newlabel{contrib:pcp}{{12.3}{37}{pcp.py}{section.12.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {12.4}s3ql\_backup.sh}{37}{section.12.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {12.4}s3ql\_backup.sh}{37}{section.12.4}\protected@file@percent }
\newlabel{contrib:s3ql-backup-sh}{{12.4}{37}{s3ql\_backup.sh}{section.12.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {12.5}expire\_backups.py}{38}{section.12.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {12.5}expire\_backups.py}{38}{section.12.5}\protected@file@percent }
\newlabel{contrib:expire-backups-py}{{12.5}{38}{expire\_backups.py}{section.12.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {12.6}remove\_objects.py}{39}{section.12.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {12.6}remove\_objects.py}{39}{section.12.6}\protected@file@percent }
\newlabel{contrib:remove-objects-py}{{12.6}{39}{remove\_objects.py}{section.12.6}{}}
\newlabel{contrib:remove-objects}{{12.6}{39}{remove\_objects.py}{section.12.6}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {13}Tips \& Tricks}{41}{chapter.13}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {13}Tips \& Tricks}{41}{chapter.13}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{tips:tips-tricks}{{13}{41}{Tips \& Tricks}{chapter.13}{}}
\newlabel{tips::doc}{{13}{41}{Tips \& Tricks}{chapter.13}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {13.1}SSH Backend}{41}{section.13.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {13.1}SSH Backend}{41}{section.13.1}\protected@file@percent }
\newlabel{tips:ssh-backend}{{13.1}{41}{SSH Backend}{section.13.1}{}}
\newlabel{tips:ssh-tipp}{{13.1}{41}{SSH Backend}{section.13.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {13.2}Permanently mounted backup file system}{41}{section.13.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {13.2}Permanently mounted backup file system}{41}{section.13.2}\protected@file@percent }
\newlabel{tips:permanently-mounted-backup-file-system}{{13.2}{41}{Permanently mounted backup file system}{section.13.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {13.3}Improving copy performance}{41}{section.13.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {13.3}Improving copy performance}{41}{section.13.3}\protected@file@percent }
\newlabel{tips:improving-copy-performance}{{13.3}{41}{Improving copy performance}{section.13.3}{}}
\newlabel{tips:copy-performance}{{13.3}{41}{Improving copy performance}{section.13.3}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {14}Frequently Asked Questions}{43}{chapter.14}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {14}Frequently Asked Questions}{43}{chapter.14}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{faq:frequently-asked-questions}{{14}{43}{Frequently Asked Questions}{chapter.14}{}}
\newlabel{faq::doc}{{14}{43}{Frequently Asked Questions}{chapter.14}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.1}What does \IeC {\textquotedblleft }python-apsw must be linked dynamically to sqlite3\IeC {\textquotedblright } mean?}{43}{section.14.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.1}What does \IeC {\textquotedblleft }python-apsw must be linked dynamically to sqlite3\IeC {\textquotedblright } mean?}{43}{section.14.1}\protected@file@percent }
\newlabel{faq:what-does-python-apsw-must-be-linked-dynamically-to-sqlite3-mean}{{14.1}{43}{What does “python-apsw must be linked dynamically to sqlite3” mean?}{section.14.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.2}How can I improve the file system throughput?}{43}{section.14.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.2}How can I improve the file system throughput?}{43}{section.14.2}\protected@file@percent }
\newlabel{faq:how-can-i-improve-the-file-system-throughput}{{14.2}{43}{How can I improve the file system throughput?}{section.14.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.3}Why does \sphinxstyleliteralintitle {\sphinxupquote {df}} show 1 TB of free space?}{43}{section.14.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.3}Why does \sphinxstyleliteralintitle {\sphinxupquote {df}} show 1 TB of free space?}{43}{section.14.3}\protected@file@percent }
\newlabel{faq:why-does-df-show-1-tb-of-free-space}{{14.3}{43}{Why does \sphinxstyleliteralintitle {\sphinxupquote {df}} show 1 TB of free space?}{section.14.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.4}Which operating systems are supported?}{44}{section.14.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.4}Which operating systems are supported?}{44}{section.14.4}\protected@file@percent }
\newlabel{faq:which-operating-systems-are-supported}{{14.4}{44}{Which operating systems are supported?}{section.14.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.5}Is there a file size limit?}{44}{section.14.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.5}Is there a file size limit?}{44}{section.14.5}\protected@file@percent }
\newlabel{faq:is-there-a-file-size-limit}{{14.5}{44}{Is there a file size limit?}{section.14.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.6}Suppose I want to make a small change in a very large file. Will S3QL download and re-upload the entire file?}{44}{section.14.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.6}Suppose I want to make a small change in a very large file. Will S3QL download and re-upload the entire file?}{44}{section.14.6}\protected@file@percent }
\newlabel{faq:suppose-i-want-to-make-a-small-change-in-a-very-large-file-will-s3ql-download-and-re-upload-the-entire-file}{{14.6}{44}{Suppose I want to make a small change in a very large file. Will S3QL download and re-upload the entire file?}{section.14.6}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.7}I don\IeC {\textquoteright }t quite understand this de-duplication feature\IeC {\textellipsis }}{44}{section.14.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.7}I don\IeC {\textquoteright }t quite understand this de-duplication feature\IeC {\textellipsis }}{44}{section.14.7}\protected@file@percent }
\newlabel{faq:i-don-t-quite-understand-this-de-duplication-feature}{{14.7}{44}{I don’t quite understand this de-duplication feature…}{section.14.7}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.8}What does the \IeC {\textquotedblleft }Transport endpoint not connected\IeC {\textquotedblright } error mean?}{44}{section.14.8}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.8}What does the \IeC {\textquotedblleft }Transport endpoint not connected\IeC {\textquotedblright } error mean?}{44}{section.14.8}\protected@file@percent }
\newlabel{faq:what-does-the-transport-endpoint-not-connected-error-mean}{{14.8}{44}{What does the “Transport endpoint not connected” error mean?}{section.14.8}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.9}What does \IeC {\textquotedblleft }Backend reports that fs is still mounted elsewhere, aborting\IeC {\textquotedblright } mean?}{44}{section.14.9}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.9}What does \IeC {\textquotedblleft }Backend reports that fs is still mounted elsewhere, aborting\IeC {\textquotedblright } mean?}{44}{section.14.9}\protected@file@percent }
\newlabel{faq:what-does-backend-reports-that-fs-is-still-mounted-elsewhere-aborting-mean}{{14.9}{44}{What does “Backend reports that fs is still mounted elsewhere, aborting” mean?}{section.14.9}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.10}Can I access an S3QL file system on multiple computers simultaneously?}{45}{section.14.10}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.10}Can I access an S3QL file system on multiple computers simultaneously?}{45}{section.14.10}\protected@file@percent }
\newlabel{faq:can-i-access-an-s3ql-file-system-on-multiple-computers-simultaneously}{{14.10}{45}{Can I access an S3QL file system on multiple computers simultaneously?}{section.14.10}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.11}What maximum object size should I use?}{45}{section.14.11}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.11}What maximum object size should I use?}{45}{section.14.11}\protected@file@percent }
\newlabel{faq:what-maximum-object-size-should-i-use}{{14.11}{45}{What maximum object size should I use?}{section.14.11}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.12}Is there a way to make the cache persistent / access the file system offline?}{46}{section.14.12}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.12}Is there a way to make the cache persistent / access the file system offline?}{46}{section.14.12}\protected@file@percent }
\newlabel{faq:is-there-a-way-to-make-the-cache-persistent-access-the-file-system-offline}{{14.12}{46}{Is there a way to make the cache persistent / access the file system offline?}{section.14.12}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.13}I would like to use S3QL with Hubic, but\IeC {\textellipsis }}{46}{section.14.13}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.13}I would like to use S3QL with Hubic, but\IeC {\textellipsis }}{46}{section.14.13}\protected@file@percent }
\newlabel{faq:i-would-like-to-use-s3ql-with-hubic-but}{{14.13}{46}{I would like to use S3QL with Hubic, but…}{section.14.13}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {14.14}What\IeC {\textquoteright }s a reasonable metadata upload interval?}{46}{section.14.14}}
+\@writefile{toc}{\contentsline {section}{\numberline {14.14}What\IeC {\textquoteright }s a reasonable metadata upload interval?}{46}{section.14.14}\protected@file@percent }
\newlabel{faq:what-s-a-reasonable-metadata-upload-interval}{{14.14}{46}{What’s a reasonable metadata upload interval?}{section.14.14}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {15}Known Issues}{49}{chapter.15}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {15}Known Issues}{49}{chapter.15}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{issues:known-issues}{{15}{49}{Known Issues}{chapter.15}{}}
\newlabel{issues::doc}{{15}{49}{Known Issues}{chapter.15}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {16}Manpages}{51}{chapter.16}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {16}Manpages}{51}{chapter.16}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{man/index:manpages}{{16}{51}{Manpages}{chapter.16}{}}
\newlabel{man/index::doc}{{16}{51}{Manpages}{chapter.16}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.1}The \sphinxstyleliteralstrong {\sphinxupquote {mkfs.s3ql}} command}{51}{section.16.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.1}The \sphinxstyleliteralstrong {\sphinxupquote {mkfs.s3ql}} command}{51}{section.16.1}\protected@file@percent }
\newlabel{man/mkfs:the-command-command}{{16.1}{51}{The \sphinxstyleliteralstrong {\sphinxupquote {mkfs.s3ql}} command}{section.16.1}{}}
\newlabel{man/mkfs::doc}{{16.1}{51}{The \sphinxstyleliteralstrong {\sphinxupquote {mkfs.s3ql}} command}{section.16.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.1}Synopsis}{51}{subsection.16.1.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.1}Synopsis}{51}{subsection.16.1.1}\protected@file@percent }
\newlabel{man/mkfs:synopsis}{{16.1.1}{51}{Synopsis}{subsection.16.1.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.2}Description}{51}{subsection.16.1.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.2}Description}{51}{subsection.16.1.2}\protected@file@percent }
\newlabel{man/mkfs:description}{{16.1.2}{51}{Description}{subsection.16.1.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.3}Options}{51}{subsection.16.1.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.3}Options}{51}{subsection.16.1.3}\protected@file@percent }
\newlabel{man/mkfs:options}{{16.1.3}{51}{Options}{subsection.16.1.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.4}Exit Codes}{52}{subsection.16.1.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.4}Exit Codes}{52}{subsection.16.1.4}\protected@file@percent }
\newlabel{man/mkfs:exit-codes}{{16.1.4}{52}{Exit Codes}{subsection.16.1.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.5}See Also}{52}{subsection.16.1.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.1.5}See Also}{52}{subsection.16.1.5}\protected@file@percent }
\newlabel{man/mkfs:see-also}{{16.1.5}{52}{See Also}{subsection.16.1.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.2}The \sphinxstyleliteralstrong {\sphinxupquote {s3qladm}} command}{52}{section.16.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.2}The \sphinxstyleliteralstrong {\sphinxupquote {s3qladm}} command}{52}{section.16.2}\protected@file@percent }
\newlabel{man/adm:the-command-command}{{16.2}{52}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qladm}} command}{section.16.2}{}}
\newlabel{man/adm::doc}{{16.2}{52}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qladm}} command}{section.16.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.1}Synopsis}{52}{subsection.16.2.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.1}Synopsis}{52}{subsection.16.2.1}\protected@file@percent }
\newlabel{man/adm:synopsis}{{16.2.1}{52}{Synopsis}{subsection.16.2.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.2}Description}{53}{subsection.16.2.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.2}Description}{53}{subsection.16.2.2}\protected@file@percent }
\newlabel{man/adm:description}{{16.2.2}{53}{Description}{subsection.16.2.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.3}Options}{53}{subsection.16.2.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.3}Options}{53}{subsection.16.2.3}\protected@file@percent }
\newlabel{man/adm:options}{{16.2.3}{53}{Options}{subsection.16.2.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.4}Actions}{53}{subsection.16.2.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.4}Actions}{53}{subsection.16.2.4}\protected@file@percent }
\newlabel{man/adm:actions}{{16.2.4}{53}{Actions}{subsection.16.2.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.5}Exit Codes}{53}{subsection.16.2.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.5}Exit Codes}{53}{subsection.16.2.5}\protected@file@percent }
\newlabel{man/adm:exit-codes}{{16.2.5}{53}{Exit Codes}{subsection.16.2.5}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.6}See Also}{54}{subsection.16.2.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.6}See Also}{54}{subsection.16.2.6}\protected@file@percent }
\newlabel{man/adm:see-also}{{16.2.6}{54}{See Also}{subsection.16.2.6}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.3}The \sphinxstyleliteralstrong {\sphinxupquote {mount.s3ql}} command}{54}{section.16.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.3}The \sphinxstyleliteralstrong {\sphinxupquote {mount.s3ql}} command}{54}{section.16.3}\protected@file@percent }
\newlabel{man/mount:the-command-command}{{16.3}{54}{The \sphinxstyleliteralstrong {\sphinxupquote {mount.s3ql}} command}{section.16.3}{}}
\newlabel{man/mount::doc}{{16.3}{54}{The \sphinxstyleliteralstrong {\sphinxupquote {mount.s3ql}} command}{section.16.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.1}Synopsis}{54}{subsection.16.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.1}Synopsis}{54}{subsection.16.3.1}\protected@file@percent }
\newlabel{man/mount:synopsis}{{16.3.1}{54}{Synopsis}{subsection.16.3.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.2}Description}{54}{subsection.16.3.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.2}Description}{54}{subsection.16.3.2}\protected@file@percent }
\newlabel{man/mount:description}{{16.3.2}{54}{Description}{subsection.16.3.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.3}Options}{54}{subsection.16.3.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.3}Options}{54}{subsection.16.3.3}\protected@file@percent }
\newlabel{man/mount:options}{{16.3.3}{54}{Options}{subsection.16.3.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.4}Exit Codes}{55}{subsection.16.3.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.4}Exit Codes}{55}{subsection.16.3.4}\protected@file@percent }
\newlabel{man/mount:exit-codes}{{16.3.4}{55}{Exit Codes}{subsection.16.3.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.5}See Also}{56}{subsection.16.3.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.5}See Also}{56}{subsection.16.3.5}\protected@file@percent }
\newlabel{man/mount:see-also}{{16.3.5}{56}{See Also}{subsection.16.3.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.4}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlstat}} command}{56}{section.16.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.4}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlstat}} command}{56}{section.16.4}\protected@file@percent }
\newlabel{man/stat:the-command-command}{{16.4}{56}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlstat}} command}{section.16.4}{}}
\newlabel{man/stat::doc}{{16.4}{56}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlstat}} command}{section.16.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.1}Synopsis}{56}{subsection.16.4.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.1}Synopsis}{56}{subsection.16.4.1}\protected@file@percent }
\newlabel{man/stat:synopsis}{{16.4.1}{56}{Synopsis}{subsection.16.4.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.2}Description}{57}{subsection.16.4.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.2}Description}{57}{subsection.16.4.2}\protected@file@percent }
\newlabel{man/stat:description}{{16.4.2}{57}{Description}{subsection.16.4.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.3}Options}{57}{subsection.16.4.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.3}Options}{57}{subsection.16.4.3}\protected@file@percent }
\newlabel{man/stat:options}{{16.4.3}{57}{Options}{subsection.16.4.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.4}Exit Codes}{57}{subsection.16.4.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.4}Exit Codes}{57}{subsection.16.4.4}\protected@file@percent }
\newlabel{man/stat:exit-codes}{{16.4.4}{57}{Exit Codes}{subsection.16.4.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.5}See Also}{57}{subsection.16.4.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.5}See Also}{57}{subsection.16.4.5}\protected@file@percent }
\newlabel{man/stat:see-also}{{16.4.5}{57}{See Also}{subsection.16.4.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.5}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlctrl}} command}{57}{section.16.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.5}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlctrl}} command}{57}{section.16.5}\protected@file@percent }
\newlabel{man/ctrl:the-command-command}{{16.5}{57}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlctrl}} command}{section.16.5}{}}
\newlabel{man/ctrl::doc}{{16.5}{57}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlctrl}} command}{section.16.5}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.1}Synopsis}{57}{subsection.16.5.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.1}Synopsis}{57}{subsection.16.5.1}\protected@file@percent }
\newlabel{man/ctrl:synopsis}{{16.5.1}{57}{Synopsis}{subsection.16.5.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.2}Description}{58}{subsection.16.5.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.2}Description}{58}{subsection.16.5.2}\protected@file@percent }
\newlabel{man/ctrl:description}{{16.5.2}{58}{Description}{subsection.16.5.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.3}Options}{58}{subsection.16.5.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.3}Options}{58}{subsection.16.5.3}\protected@file@percent }
\newlabel{man/ctrl:options}{{16.5.3}{58}{Options}{subsection.16.5.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.4}Exit Codes}{58}{subsection.16.5.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.4}Exit Codes}{58}{subsection.16.5.4}\protected@file@percent }
\newlabel{man/ctrl:exit-codes}{{16.5.4}{58}{Exit Codes}{subsection.16.5.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.5}See Also}{59}{subsection.16.5.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.5}See Also}{59}{subsection.16.5.5}\protected@file@percent }
\newlabel{man/ctrl:see-also}{{16.5.5}{59}{See Also}{subsection.16.5.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.6}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlcp}} command}{59}{section.16.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.6}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlcp}} command}{59}{section.16.6}\protected@file@percent }
\newlabel{man/cp:the-command-command}{{16.6}{59}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlcp}} command}{section.16.6}{}}
\newlabel{man/cp::doc}{{16.6}{59}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlcp}} command}{section.16.6}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.1}Synopsis}{59}{subsection.16.6.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.1}Synopsis}{59}{subsection.16.6.1}\protected@file@percent }
\newlabel{man/cp:synopsis}{{16.6.1}{59}{Synopsis}{subsection.16.6.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.2}Description}{59}{subsection.16.6.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.2}Description}{59}{subsection.16.6.2}\protected@file@percent }
\newlabel{man/cp:description}{{16.6.2}{59}{Description}{subsection.16.6.2}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Snapshotting vs Hardlinking}{59}{subsubsection*.23}}
-\newlabel{man/cp:snapshotting-vs-hardlinking}{{16.6.2}{59}{Snapshotting vs Hardlinking}{subsubsection*.23}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.3}Options}{60}{subsection.16.6.3}}
+\@writefile{toc}{\contentsline {subsubsection}{Snapshotting vs Hardlinking}{59}{subsubsection*.28}\protected@file@percent }
+\newlabel{man/cp:snapshotting-vs-hardlinking}{{16.6.2}{59}{Snapshotting vs Hardlinking}{subsubsection*.28}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.3}Options}{60}{subsection.16.6.3}\protected@file@percent }
\newlabel{man/cp:options}{{16.6.3}{60}{Options}{subsection.16.6.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.4}Exit Codes}{60}{subsection.16.6.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.4}Exit Codes}{60}{subsection.16.6.4}\protected@file@percent }
\newlabel{man/cp:exit-codes}{{16.6.4}{60}{Exit Codes}{subsection.16.6.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.5}See Also}{60}{subsection.16.6.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.6.5}See Also}{60}{subsection.16.6.5}\protected@file@percent }
\newlabel{man/cp:see-also}{{16.6.5}{60}{See Also}{subsection.16.6.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.7}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlrm}} command}{60}{section.16.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.7}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlrm}} command}{60}{section.16.7}\protected@file@percent }
\newlabel{man/rm:the-command-command}{{16.7}{60}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlrm}} command}{section.16.7}{}}
\newlabel{man/rm::doc}{{16.7}{60}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qlrm}} command}{section.16.7}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.1}Synopsis}{60}{subsection.16.7.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.1}Synopsis}{60}{subsection.16.7.1}\protected@file@percent }
\newlabel{man/rm:synopsis}{{16.7.1}{60}{Synopsis}{subsection.16.7.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.2}Description}{60}{subsection.16.7.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.2}Description}{60}{subsection.16.7.2}\protected@file@percent }
\newlabel{man/rm:description}{{16.7.2}{60}{Description}{subsection.16.7.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.3}Options}{61}{subsection.16.7.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.3}Options}{61}{subsection.16.7.3}\protected@file@percent }
\newlabel{man/rm:options}{{16.7.3}{61}{Options}{subsection.16.7.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.4}Exit Codes}{61}{subsection.16.7.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.4}Exit Codes}{61}{subsection.16.7.4}\protected@file@percent }
\newlabel{man/rm:exit-codes}{{16.7.4}{61}{Exit Codes}{subsection.16.7.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.5}See Also}{61}{subsection.16.7.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.7.5}See Also}{61}{subsection.16.7.5}\protected@file@percent }
\newlabel{man/rm:see-also}{{16.7.5}{61}{See Also}{subsection.16.7.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.8}The \sphinxstyleliteralstrong {\sphinxupquote {s3qllock}} command}{61}{section.16.8}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.8}The \sphinxstyleliteralstrong {\sphinxupquote {s3qllock}} command}{61}{section.16.8}\protected@file@percent }
\newlabel{man/lock:the-command-command}{{16.8}{61}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qllock}} command}{section.16.8}{}}
\newlabel{man/lock::doc}{{16.8}{61}{The \sphinxstyleliteralstrong {\sphinxupquote {s3qllock}} command}{section.16.8}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.1}Synopsis}{61}{subsection.16.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.1}Synopsis}{61}{subsection.16.8.1}\protected@file@percent }
\newlabel{man/lock:synopsis}{{16.8.1}{61}{Synopsis}{subsection.16.8.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.2}Description}{61}{subsection.16.8.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.2}Description}{61}{subsection.16.8.2}\protected@file@percent }
\newlabel{man/lock:description}{{16.8.2}{61}{Description}{subsection.16.8.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.3}Rationale}{62}{subsection.16.8.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.3}Rationale}{62}{subsection.16.8.3}\protected@file@percent }
\newlabel{man/lock:rationale}{{16.8.3}{62}{Rationale}{subsection.16.8.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.4}Options}{62}{subsection.16.8.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.4}Options}{62}{subsection.16.8.4}\protected@file@percent }
\newlabel{man/lock:options}{{16.8.4}{62}{Options}{subsection.16.8.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.5}Exit Codes}{62}{subsection.16.8.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.5}Exit Codes}{62}{subsection.16.8.5}\protected@file@percent }
\newlabel{man/lock:exit-codes}{{16.8.5}{62}{Exit Codes}{subsection.16.8.5}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.6}See Also}{62}{subsection.16.8.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.8.6}See Also}{62}{subsection.16.8.6}\protected@file@percent }
\newlabel{man/lock:see-also}{{16.8.6}{62}{See Also}{subsection.16.8.6}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.9}The \sphinxstyleliteralstrong {\sphinxupquote {umount.s3ql}} command}{63}{section.16.9}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.9}The \sphinxstyleliteralstrong {\sphinxupquote {umount.s3ql}} command}{63}{section.16.9}\protected@file@percent }
\newlabel{man/umount:the-command-command}{{16.9}{63}{The \sphinxstyleliteralstrong {\sphinxupquote {umount.s3ql}} command}{section.16.9}{}}
\newlabel{man/umount::doc}{{16.9}{63}{The \sphinxstyleliteralstrong {\sphinxupquote {umount.s3ql}} command}{section.16.9}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.1}Synopsis}{63}{subsection.16.9.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.1}Synopsis}{63}{subsection.16.9.1}\protected@file@percent }
\newlabel{man/umount:synopsis}{{16.9.1}{63}{Synopsis}{subsection.16.9.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.2}Description}{63}{subsection.16.9.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.2}Description}{63}{subsection.16.9.2}\protected@file@percent }
\newlabel{man/umount:description}{{16.9.2}{63}{Description}{subsection.16.9.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.3}Options}{63}{subsection.16.9.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.3}Options}{63}{subsection.16.9.3}\protected@file@percent }
\newlabel{man/umount:options}{{16.9.3}{63}{Options}{subsection.16.9.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.4}Exit Codes}{63}{subsection.16.9.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.4}Exit Codes}{63}{subsection.16.9.4}\protected@file@percent }
\newlabel{man/umount:exit-codes}{{16.9.4}{63}{Exit Codes}{subsection.16.9.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.5}See Also}{64}{subsection.16.9.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.9.5}See Also}{64}{subsection.16.9.5}\protected@file@percent }
\newlabel{man/umount:see-also}{{16.9.5}{64}{See Also}{subsection.16.9.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.10}The \sphinxstyleliteralstrong {\sphinxupquote {fsck.s3ql}} command}{64}{section.16.10}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.10}The \sphinxstyleliteralstrong {\sphinxupquote {fsck.s3ql}} command}{64}{section.16.10}\protected@file@percent }
\newlabel{man/fsck:the-command-command}{{16.10}{64}{The \sphinxstyleliteralstrong {\sphinxupquote {fsck.s3ql}} command}{section.16.10}{}}
\newlabel{man/fsck::doc}{{16.10}{64}{The \sphinxstyleliteralstrong {\sphinxupquote {fsck.s3ql}} command}{section.16.10}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.1}Synopsis}{64}{subsection.16.10.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.1}Synopsis}{64}{subsection.16.10.1}\protected@file@percent }
\newlabel{man/fsck:synopsis}{{16.10.1}{64}{Synopsis}{subsection.16.10.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.2}Description}{64}{subsection.16.10.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.2}Description}{64}{subsection.16.10.2}\protected@file@percent }
\newlabel{man/fsck:description}{{16.10.2}{64}{Description}{subsection.16.10.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.3}Options}{64}{subsection.16.10.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.3}Options}{64}{subsection.16.10.3}\protected@file@percent }
\newlabel{man/fsck:options}{{16.10.3}{64}{Options}{subsection.16.10.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.4}Exit Codes}{65}{subsection.16.10.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.4}Exit Codes}{65}{subsection.16.10.4}\protected@file@percent }
\newlabel{man/fsck:exit-codes}{{16.10.4}{65}{Exit Codes}{subsection.16.10.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.5}See Also}{65}{subsection.16.10.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.10.5}See Also}{65}{subsection.16.10.5}\protected@file@percent }
\newlabel{man/fsck:see-also}{{16.10.5}{65}{See Also}{subsection.16.10.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.11}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{66}{section.16.11}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.11}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{66}{section.16.11}\protected@file@percent }
\newlabel{man/oauth_client:the-command-command}{{16.11}{66}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{section.16.11}{}}
\newlabel{man/oauth_client:oauth-client}{{16.11}{66}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{section.16.11}{}}
\newlabel{man/oauth_client::doc}{{16.11}{66}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{section.16.11}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.1}Synopsis}{66}{subsection.16.11.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.1}Synopsis}{66}{subsection.16.11.1}\protected@file@percent }
\newlabel{man/oauth_client:synopsis}{{16.11.1}{66}{Synopsis}{subsection.16.11.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.2}Description}{66}{subsection.16.11.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.2}Description}{66}{subsection.16.11.2}\protected@file@percent }
\newlabel{man/oauth_client:description}{{16.11.2}{66}{Description}{subsection.16.11.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.3}Options}{66}{subsection.16.11.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.3}Options}{66}{subsection.16.11.3}\protected@file@percent }
\newlabel{man/oauth_client:options}{{16.11.3}{66}{Options}{subsection.16.11.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.4}Exit Codes}{66}{subsection.16.11.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.4}Exit Codes}{66}{subsection.16.11.4}\protected@file@percent }
\newlabel{man/oauth_client:exit-codes}{{16.11.4}{66}{Exit Codes}{subsection.16.11.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.5}See Also}{66}{subsection.16.11.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.11.5}See Also}{66}{subsection.16.11.5}\protected@file@percent }
\newlabel{man/oauth_client:see-also}{{16.11.5}{66}{See Also}{subsection.16.11.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.12}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{67}{section.16.12}}
-\newlabel{man/verify:the-command-command}{{16.12}{67}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{section.16.12}{}}
-\newlabel{man/verify::doc}{{16.12}{67}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{section.16.12}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.1}Synopsis}{67}{subsection.16.12.1}}
-\newlabel{man/verify:synopsis}{{16.12.1}{67}{Synopsis}{subsection.16.12.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.2}Description}{67}{subsection.16.12.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.12}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{66}{section.16.12}\protected@file@percent }
+\newlabel{man/verify:the-command-command}{{16.12}{66}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{section.16.12}{}}
+\newlabel{man/verify::doc}{{16.12}{66}{The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{section.16.12}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.1}Synopsis}{66}{subsection.16.12.1}\protected@file@percent }
+\newlabel{man/verify:synopsis}{{16.12.1}{66}{Synopsis}{subsection.16.12.1}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.2}Description}{67}{subsection.16.12.2}\protected@file@percent }
\newlabel{man/verify:description}{{16.12.2}{67}{Description}{subsection.16.12.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.3}Options}{67}{subsection.16.12.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.3}Options}{67}{subsection.16.12.3}\protected@file@percent }
\newlabel{man/verify:options}{{16.12.3}{67}{Options}{subsection.16.12.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.4}Exit Codes}{67}{subsection.16.12.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.4}Exit Codes}{67}{subsection.16.12.4}\protected@file@percent }
\newlabel{man/verify:exit-codes}{{16.12.4}{67}{Exit Codes}{subsection.16.12.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.5}See Also}{68}{subsection.16.12.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.12.5}See Also}{68}{subsection.16.12.5}\protected@file@percent }
\newlabel{man/verify:see-also}{{16.12.5}{68}{See Also}{subsection.16.12.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.13}The \sphinxstyleliteralstrong {\sphinxupquote {pcp}} command}{68}{section.16.13}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.13}The \sphinxstyleliteralstrong {\sphinxupquote {pcp}} command}{68}{section.16.13}\protected@file@percent }
\newlabel{man/pcp:the-command-command}{{16.13}{68}{The \sphinxstyleliteralstrong {\sphinxupquote {pcp}} command}{section.16.13}{}}
\newlabel{man/pcp::doc}{{16.13}{68}{The \sphinxstyleliteralstrong {\sphinxupquote {pcp}} command}{section.16.13}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.1}Synopsis}{68}{subsection.16.13.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.1}Synopsis}{68}{subsection.16.13.1}\protected@file@percent }
\newlabel{man/pcp:synopsis}{{16.13.1}{68}{Synopsis}{subsection.16.13.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.2}Description}{68}{subsection.16.13.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.2}Description}{68}{subsection.16.13.2}\protected@file@percent }
\newlabel{man/pcp:description}{{16.13.2}{68}{Description}{subsection.16.13.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.3}Options}{69}{subsection.16.13.3}}
-\newlabel{man/pcp:options}{{16.13.3}{69}{Options}{subsection.16.13.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.4}Exit Codes}{69}{subsection.16.13.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.3}Options}{68}{subsection.16.13.3}\protected@file@percent }
+\newlabel{man/pcp:options}{{16.13.3}{68}{Options}{subsection.16.13.3}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.4}Exit Codes}{69}{subsection.16.13.4}\protected@file@percent }
\newlabel{man/pcp:exit-codes}{{16.13.4}{69}{Exit Codes}{subsection.16.13.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.5}See Also}{69}{subsection.16.13.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.13.5}See Also}{69}{subsection.16.13.5}\protected@file@percent }
\newlabel{man/pcp:see-also}{{16.13.5}{69}{See Also}{subsection.16.13.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {16.14}The \sphinxstyleliteralstrong {\sphinxupquote {expire\_backups}} command}{69}{section.16.14}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.14}The \sphinxstyleliteralstrong {\sphinxupquote {expire\_backups}} command}{69}{section.16.14}\protected@file@percent }
\newlabel{man/expire_backups:the-command-command}{{16.14}{69}{The \sphinxstyleliteralstrong {\sphinxupquote {expire\_backups}} command}{section.16.14}{}}
\newlabel{man/expire_backups::doc}{{16.14}{69}{The \sphinxstyleliteralstrong {\sphinxupquote {expire\_backups}} command}{section.16.14}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.1}Synopsis}{69}{subsection.16.14.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.1}Synopsis}{69}{subsection.16.14.1}\protected@file@percent }
\newlabel{man/expire_backups:synopsis}{{16.14.1}{69}{Synopsis}{subsection.16.14.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.2}Description}{69}{subsection.16.14.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.2}Description}{69}{subsection.16.14.2}\protected@file@percent }
\newlabel{man/expire_backups:description}{{16.14.2}{69}{Description}{subsection.16.14.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.3}Options}{70}{subsection.16.14.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.3}Options}{70}{subsection.16.14.3}\protected@file@percent }
\newlabel{man/expire_backups:options}{{16.14.3}{70}{Options}{subsection.16.14.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.4}Exit Codes}{71}{subsection.16.14.4}}
-\newlabel{man/expire_backups:exit-codes}{{16.14.4}{71}{Exit Codes}{subsection.16.14.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.5}See Also}{71}{subsection.16.14.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.4}Exit Codes}{70}{subsection.16.14.4}\protected@file@percent }
+\newlabel{man/expire_backups:exit-codes}{{16.14.4}{70}{Exit Codes}{subsection.16.14.4}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.14.5}See Also}{71}{subsection.16.14.5}\protected@file@percent }
\newlabel{man/expire_backups:see-also}{{16.14.5}{71}{See Also}{subsection.16.14.5}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {17}Further Resources / Getting Help}{73}{chapter.17}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {17}Further Resources / Getting Help}{73}{chapter.17}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{resources:further-resources-getting-help}{{17}{73}{Further Resources / Getting Help}{chapter.17}{}}
\newlabel{resources:resources}{{17}{73}{Further Resources / Getting Help}{chapter.17}{}}
\newlabel{resources::doc}{{17}{73}{Further Resources / Getting Help}{chapter.17}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {18}Implementation Details}{75}{chapter.18}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {18}Implementation Details}{75}{chapter.18}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{impl_details:implementation-details}{{18}{75}{Implementation Details}{chapter.18}{}}
\newlabel{impl_details:impl-details}{{18}{75}{Implementation Details}{chapter.18}{}}
\newlabel{impl_details::doc}{{18}{75}{Implementation Details}{chapter.18}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {18.1}Metadata Storage}{75}{section.18.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {18.1}Metadata Storage}{75}{section.18.1}\protected@file@percent }
\newlabel{impl_details:metadata-storage}{{18.1}{75}{Metadata Storage}{section.18.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {18.2}Data Storage}{75}{section.18.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {18.2}Data Storage}{75}{section.18.2}\protected@file@percent }
\newlabel{impl_details:data-storage}{{18.2}{75}{Data Storage}{section.18.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {18.3}Data De-Duplication}{76}{section.18.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {18.3}Data De-Duplication}{76}{section.18.3}\protected@file@percent }
\newlabel{impl_details:data-de-duplication}{{18.3}{76}{Data De-Duplication}{section.18.3}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {18.4}Caching}{76}{section.18.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {18.4}Caching}{76}{section.18.4}\protected@file@percent }
\newlabel{impl_details:caching}{{18.4}{76}{Caching}{section.18.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {18.5}Eventual Consistency Handling}{76}{section.18.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {18.5}Eventual Consistency Handling}{76}{section.18.5}\protected@file@percent }
\newlabel{impl_details:eventual-consistency-handling}{{18.5}{76}{Eventual Consistency Handling}{section.18.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {18.6}Encryption}{76}{section.18.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {18.6}Encryption}{76}{section.18.6}\protected@file@percent }
\newlabel{impl_details:encryption}{{18.6}{76}{Encryption}{section.18.6}{}}
diff --git a/doc/latex/manual.idx b/doc/latex/manual.idx
index 651549b..921bd1e 100644
--- a/doc/latex/manual.idx
+++ b/doc/latex/manual.idx
@@ -1,40 +1,50 @@
-\indexentry{gs\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}|hyperpage}{7}
-\indexentry{ssl-ca-path=\textless{}path\textgreater{}!gs\_backend command line option|hyperpage}{7}
-\indexentry{gs\_backend command line option!tcp-timeout|hyperpage}{8}
-\indexentry{tcp-timeout!gs\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!no-ssl|hyperpage}{8}
-\indexentry{no-ssl!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}|hyperpage}{8}
-\indexentry{ssl-ca-path=\textless{}path\textgreater{}!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!tcp-timeout|hyperpage}{8}
-\indexentry{tcp-timeout!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!sse|hyperpage}{8}
-\indexentry{sse!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!it|hyperpage}{8}
-\indexentry{it!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!ia|hyperpage}{8}
-\indexentry{ia!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!oia|hyperpage}{8}
-\indexentry{oia!s3\_backend command line option|hyperpage}{8}
-\indexentry{s3\_backend command line option!rrs|hyperpage}{8}
-\indexentry{rrs!s3\_backend command line option|hyperpage}{8}
-\indexentry{swift\_backend command line option!no-ssl|hyperpage}{9}
-\indexentry{no-ssl!swift\_backend command line option|hyperpage}{9}
-\indexentry{swift\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}|hyperpage}{9}
-\indexentry{ssl-ca-path=\textless{}path\textgreater{}!swift\_backend command line option|hyperpage}{9}
-\indexentry{swift\_backend command line option!tcp-timeout|hyperpage}{9}
-\indexentry{tcp-timeout!swift\_backend command line option|hyperpage}{9}
-\indexentry{swift\_backend command line option!disable-expect100|hyperpage}{9}
-\indexentry{disable-expect100!swift\_backend command line option|hyperpage}{9}
-\indexentry{swift\_backend command line option!no-feature-detection|hyperpage}{9}
-\indexentry{no-feature-detection!swift\_backend command line option|hyperpage}{9}
-\indexentry{s3c\_backend command line option!no-ssl|hyperpage}{10}
-\indexentry{no-ssl!s3c\_backend command line option|hyperpage}{10}
-\indexentry{s3c\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}|hyperpage}{10}
-\indexentry{ssl-ca-path=\textless{}path\textgreater{}!s3c\_backend command line option|hyperpage}{10}
-\indexentry{s3c\_backend command line option!tcp-timeout|hyperpage}{10}
-\indexentry{tcp-timeout!s3c\_backend command line option|hyperpage}{10}
-\indexentry{s3c\_backend command line option!disable-expect100|hyperpage}{10}
-\indexentry{disable-expect100!s3c\_backend command line option|hyperpage}{10}
-\indexentry{s3c\_backend command line option!dumb-copy|hyperpage}{10}
-\indexentry{dumb-copy!s3c\_backend command line option|hyperpage}{10}
+\indexentry{gs\_backend command line option@\spxentry{gs\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}|hyperpage}{7}
+\indexentry{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!gs\_backend command line option@\spxentry{gs\_backend command line option}|hyperpage}{7}
+\indexentry{gs\_backend command line option@\spxentry{gs\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}|hyperpage}{8}
+\indexentry{tcp-timeout@\spxentry{tcp-timeout}!gs\_backend command line option@\spxentry{gs\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!no-ssl@\spxentry{no-ssl}|hyperpage}{8}
+\indexentry{no-ssl@\spxentry{no-ssl}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}|hyperpage}{8}
+\indexentry{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}|hyperpage}{8}
+\indexentry{tcp-timeout@\spxentry{tcp-timeout}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!sse@\spxentry{sse}|hyperpage}{8}
+\indexentry{sse@\spxentry{sse}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!it@\spxentry{it}|hyperpage}{8}
+\indexentry{it@\spxentry{it}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!ia@\spxentry{ia}|hyperpage}{8}
+\indexentry{ia@\spxentry{ia}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!oia@\spxentry{oia}|hyperpage}{8}
+\indexentry{oia@\spxentry{oia}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{s3\_backend command line option@\spxentry{s3\_backend command line option}!rrs@\spxentry{rrs}|hyperpage}{8}
+\indexentry{rrs@\spxentry{rrs}!s3\_backend command line option@\spxentry{s3\_backend command line option}|hyperpage}{8}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!no-ssl@\spxentry{no-ssl}|hyperpage}{9}
+\indexentry{no-ssl@\spxentry{no-ssl}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{9}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}|hyperpage}{9}
+\indexentry{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{9}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}|hyperpage}{9}
+\indexentry{tcp-timeout@\spxentry{tcp-timeout}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{9}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!disable-expect100@\spxentry{disable-expect100}|hyperpage}{9}
+\indexentry{disable-expect100@\spxentry{disable-expect100}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{9}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!no-feature-detection@\spxentry{no-feature-detection}|hyperpage}{9}
+\indexentry{no-feature-detection@\spxentry{no-feature-detection}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{9}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!domain@\spxentry{domain}|hyperpage}{10}
+\indexentry{domain@\spxentry{domain}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{10}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!project-domain@\spxentry{project-domain}|hyperpage}{10}
+\indexentry{project-domain@\spxentry{project-domain}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{10}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!In simple cases, the project domain will be the same as the auth@\spxentry{In simple cases, the project domain will be the same as the auth}|hyperpage}{10}
+\indexentry{In simple cases, the project domain will be the same as the auth@\spxentry{In simple cases, the project domain will be the same as the auth}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{10}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!domain. If the {}`project-domain{}` option is not specified, it will be@\spxentry{domain. If the {}`project-domain{}` option is not specified, it will be}|hyperpage}{10}
+\indexentry{domain. If the {}`project-domain{}` option is not specified, it will be@\spxentry{domain. If the {}`project-domain{}` option is not specified, it will be}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{10}
+\indexentry{swift\_backend command line option@\spxentry{swift\_backend command line option}!assumed to be the same as the user domain.@\spxentry{assumed to be the same as the user domain.}|hyperpage}{10}
+\indexentry{assumed to be the same as the user domain.@\spxentry{assumed to be the same as the user domain.}!swift\_backend command line option@\spxentry{swift\_backend command line option}|hyperpage}{10}
+\indexentry{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!no-ssl@\spxentry{no-ssl}|hyperpage}{10}
+\indexentry{no-ssl@\spxentry{no-ssl}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}|hyperpage}{10}
+\indexentry{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}|hyperpage}{10}
+\indexentry{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}|hyperpage}{10}
+\indexentry{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}|hyperpage}{11}
+\indexentry{tcp-timeout@\spxentry{tcp-timeout}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}|hyperpage}{11}
+\indexentry{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!disable-expect100@\spxentry{disable-expect100}|hyperpage}{11}
+\indexentry{disable-expect100@\spxentry{disable-expect100}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}|hyperpage}{11}
+\indexentry{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!dumb-copy@\spxentry{dumb-copy}|hyperpage}{11}
+\indexentry{dumb-copy@\spxentry{dumb-copy}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}|hyperpage}{11}
diff --git a/doc/latex/manual.tex b/doc/latex/manual.tex
index 1a10fe3..cabba86 100644
--- a/doc/latex/manual.tex
+++ b/doc/latex/manual.tex
@@ -35,8 +35,14 @@
% Set up styles of URL: it should be placed after hyperref.
\urlstyle{same}
-\addto\captionsenglish{\renewcommand{\figurename}{Fig.}}
-\addto\captionsenglish{\renewcommand{\tablename}{Table}}
+\addto\captionsenglish{\renewcommand{\figurename}{Fig.\@ }}
+\makeatletter
+\def\fnum@figure{\figurename\thefigure{}}
+\makeatother
+\addto\captionsenglish{\renewcommand{\tablename}{Table }}
+\makeatletter
+\def\fnum@table{\tablename\thetable{}}
+\makeatother
\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}}
\addto\captionsenglish{\renewcommand{\literalblockcontinuedname}{continued from previous page}}
@@ -52,16 +58,19 @@
\title{S3QL Documentation}
-\date{Jul 17, 2019}
-\release{3.2}
+\date{Sep 08, 2019}
+\release{3.3}
\author{Nikolaus Rath}
\newcommand{\sphinxlogo}{\vbox{}}
\renewcommand{\releasename}{Release}
\makeindex
\begin{document}
-\maketitle
+\pagestyle{empty}
+\sphinxmaketitle
+\pagestyle{plain}
\sphinxtableofcontents
+\pagestyle{normal}
\phantomsection\label{\detokenize{index::doc}}
@@ -315,7 +324,6 @@ Version 1.2b1 or newer of the \sphinxhref{http://sphinx.pocoo.org/}{Sphinx} docu
With these additional dependencies installed, S3QL can be build and
tested with
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{python3 setup.py build\PYGZus{}cython}
\PYG{l}{python3 setup.py build\PYGZus{}ext \PYGZhy{}\PYGZhy{}inplace}
@@ -333,14 +341,12 @@ behave as it does for a regular release.
The HTML and PDF documentation can be generated with
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{python3 setup.py build\PYGZus{}sphinx}
\end{sphinxVerbatim}
and S3QL can be installed as usual with
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{python3 setup.py install }\PYG{g+ge}{[\PYGZhy{}\PYGZhy{}user]}
\end{sphinxVerbatim}
@@ -354,7 +360,6 @@ a good idea), you have to create additional entries in your
\sphinxcode{\sphinxupquote{\textasciitilde{}/.s3ql/authinfo2}} file that tell S3QL what server and credentials to
use for these tests. These entries have the following form:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{g+ge}{[\PYGZlt{}BACKEND\PYGZgt{}\PYGZhy{}test]}
\PYG{l}{backend\PYGZhy{}login: }\PYG{n+nv}{\PYGZlt{}user\PYGZgt{}}
@@ -372,7 +377,6 @@ testing}.
For example, to run tests that need connection to a Google Storage
server, you would add something like
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{g+ge}{[gs\PYGZhy{}test]}
\PYG{l}{backend\PYGZhy{}login: GOOGIGWLONT238MD7HZ4}
@@ -440,7 +444,6 @@ To create a Google Storage bucket, you can use e.g. the \sphinxhref{https://cons
Storage Manager}. The storage URL for accessing the bucket in S3QL is
then
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{gs://}\PYG{n+nv}{\PYGZlt{}bucketname\PYGZgt{}}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}prefix\PYGZgt{}}
\end{sphinxVerbatim}
@@ -451,7 +454,7 @@ S3QL. This allows you to store several S3QL file systems in the same
Google Storage bucket.
The Google Storage backend accepts the following backend options:
-\index{gs\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}}\index{ssl-ca-path=\textless{}path\textgreater{}!gs\_backend command line option}
+\index{gs\_backend command line option@\spxentry{gs\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}}\index{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!gs\_backend command line option@\spxentry{gs\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-gs-backend-arg-ssl-ca-path}}\pysigline{\sphinxbfcode{\sphinxupquote{ssl-ca-path}}\sphinxcode{\sphinxupquote{=\textless{}path\textgreater{}}}}
@@ -463,7 +466,7 @@ per file.
\end{fulllineitems}
-\index{gs\_backend command line option!tcp-timeout}\index{tcp-timeout!gs\_backend command line option}
+\index{gs\_backend command line option@\spxentry{gs\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}}\index{tcp-timeout@\spxentry{tcp-timeout}!gs\_backend command line option@\spxentry{gs\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-gs-backend-arg-tcp-timeout}}\pysigline{\sphinxbfcode{\sphinxupquote{tcp-timeout}}\sphinxcode{\sphinxupquote{}}}
@@ -490,7 +493,6 @@ geographically closest storage region, but not the US Standard region
The storage URL for accessing S3 buckets in S3QL has the form
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3://}\PYG{n+nv}{\PYGZlt{}region\PYGZgt{}}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}bucket\PYGZgt{}}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}prefix\PYGZgt{}}
\end{sphinxVerbatim}
@@ -499,7 +501,6 @@ The storage URL for accessing S3 buckets in S3QL has the form
object names used by S3QL. This allows you to store several S3QL file
systems in the same S3 bucket. For example, the storage URL
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3://ap\PYGZhy{}south\PYGZhy{}1/foomart.net/data/s3ql\PYGZus{}backup/}
\end{sphinxVerbatim}
@@ -514,7 +515,7 @@ the \sphinxstyleemphasis{AWS access key id} and \sphinxstyleemphasis{AWS secret
Account/Access Identifiers}.
The Amazon S3 backend accepts the following backend options:
-\index{s3\_backend command line option!no-ssl}\index{no-ssl!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!no-ssl@\spxentry{no-ssl}}\index{no-ssl@\spxentry{no-ssl}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-no-ssl}}\pysigline{\sphinxbfcode{\sphinxupquote{no-ssl}}\sphinxcode{\sphinxupquote{}}}
@@ -522,7 +523,7 @@ Disable encrypted (https) connections and use plain HTTP instead.
\end{fulllineitems}
-\index{s3\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}}\index{ssl-ca-path=\textless{}path\textgreater{}!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}}\index{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-ssl-ca-path}}\pysigline{\sphinxbfcode{\sphinxupquote{ssl-ca-path}}\sphinxcode{\sphinxupquote{=\textless{}path\textgreater{}}}}
@@ -534,7 +535,7 @@ per file.
\end{fulllineitems}
-\index{s3\_backend command line option!tcp-timeout}\index{tcp-timeout!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}}\index{tcp-timeout@\spxentry{tcp-timeout}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-tcp-timeout}}\pysigline{\sphinxbfcode{\sphinxupquote{tcp-timeout}}\sphinxcode{\sphinxupquote{}}}
@@ -544,7 +545,7 @@ TCP connection is closed and re-established (default: 20 seconds).
\end{fulllineitems}
-\index{s3\_backend command line option!sse}\index{sse!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!sse@\spxentry{sse}}\index{sse@\spxentry{sse}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-sse}}\pysigline{\sphinxbfcode{\sphinxupquote{sse}}\sphinxcode{\sphinxupquote{}}}
@@ -554,7 +555,7 @@ side encryption are probably rather small, and this option does
\end{fulllineitems}
-\index{s3\_backend command line option!it}\index{it!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!it@\spxentry{it}}\index{it@\spxentry{it}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-it}}\pysigline{\sphinxbfcode{\sphinxupquote{it}}\sphinxcode{\sphinxupquote{}}}
@@ -563,7 +564,7 @@ See \sphinxhref{https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-in
\end{fulllineitems}
-\index{s3\_backend command line option!ia}\index{ia!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!ia@\spxentry{ia}}\index{ia@\spxentry{ia}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-ia}}\pysigline{\sphinxbfcode{\sphinxupquote{ia}}\sphinxcode{\sphinxupquote{}}}
@@ -572,7 +573,7 @@ See \sphinxhref{https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-in
\end{fulllineitems}
-\index{s3\_backend command line option!oia}\index{oia!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!oia@\spxentry{oia}}\index{oia@\spxentry{oia}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-oia}}\pysigline{\sphinxbfcode{\sphinxupquote{oia}}\sphinxcode{\sphinxupquote{}}}
@@ -581,7 +582,7 @@ See \sphinxhref{https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-in
\end{fulllineitems}
-\index{s3\_backend command line option!rrs}\index{rrs!s3\_backend command line option}
+\index{s3\_backend command line option@\spxentry{s3\_backend command line option}!rrs@\spxentry{rrs}}\index{rrs@\spxentry{rrs}!s3\_backend command line option@\spxentry{s3\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3-backend-arg-rrs}}\pysigline{\sphinxbfcode{\sphinxupquote{rrs}}\sphinxcode{\sphinxupquote{}}}
@@ -608,20 +609,19 @@ There are two different storage URL for the OpenStack backend that
make use of different authentication APIs. For legacy (v1)
authentication, the storage URL is
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{swift://}\PYG{n+nv}{\PYGZlt{}hostname\PYGZgt{}}\PYG{g+ge}{[:\PYGZlt{}port\PYGZgt{}]}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}container\PYGZgt{}}\PYG{g+ge}{[/\PYGZlt{}prefix\PYGZgt{}]}
\end{sphinxVerbatim}
-for Keystone (v2) authentication, the storage URL is
+for Keystone (v2 and v3) authentication, the storage URL is
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{swiftks://}\PYG{n+nv}{\PYGZlt{}hostname\PYGZgt{}}\PYG{g+ge}{[:\PYGZlt{}port\PYGZgt{}]}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}region\PYGZgt{}}\PYG{l}{:}\PYG{n+nv}{\PYGZlt{}container\PYGZgt{}}\PYG{g+ge}{[/\PYGZlt{}prefix\PYGZgt{}]}
\end{sphinxVerbatim}
Note that when using Keystone authentication, you can (and have to)
-specify the storage region of the container as well.
+specify the storage region of the container as well. Also note that when
+using Keystone v3 authentication, the \sphinxcode{\sphinxupquote{domain}} option is required.
In both cases, \sphinxstyleemphasis{hostname} name should be the name of the
authentication server. The storage container must already exist (most
@@ -639,7 +639,7 @@ is required, the OpenStack username alone may be used as backend
login.
The OpenStack backend accepts the following backend options:
-\index{swift\_backend command line option!no-ssl}\index{no-ssl!swift\_backend command line option}
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!no-ssl@\spxentry{no-ssl}}\index{no-ssl@\spxentry{no-ssl}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-no-ssl}}\pysigline{\sphinxbfcode{\sphinxupquote{no-ssl}}\sphinxcode{\sphinxupquote{}}}
@@ -650,7 +650,7 @@ storage server is determined by the authentication server.
\end{fulllineitems}
-\index{swift\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}}\index{ssl-ca-path=\textless{}path\textgreater{}!swift\_backend command line option}
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}}\index{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-ssl-ca-path}}\pysigline{\sphinxbfcode{\sphinxupquote{ssl-ca-path}}\sphinxcode{\sphinxupquote{=\textless{}path\textgreater{}}}}
@@ -662,7 +662,7 @@ per file.
\end{fulllineitems}
-\index{swift\_backend command line option!tcp-timeout}\index{tcp-timeout!swift\_backend command line option}
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}}\index{tcp-timeout@\spxentry{tcp-timeout}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-tcp-timeout}}\pysigline{\sphinxbfcode{\sphinxupquote{tcp-timeout}}\sphinxcode{\sphinxupquote{}}}
@@ -672,7 +672,7 @@ TCP connection is closed and re-established (default: 20 seconds).
\end{fulllineitems}
-\index{swift\_backend command line option!disable-expect100}\index{disable-expect100!swift\_backend command line option}
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!disable-expect100@\spxentry{disable-expect100}}\index{disable-expect100@\spxentry{disable-expect100}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-disable-expect100}}\pysigline{\sphinxbfcode{\sphinxupquote{disable-expect100}}\sphinxcode{\sphinxupquote{}}}
@@ -685,7 +685,7 @@ than once in some circumstances.
\end{fulllineitems}
-\index{swift\_backend command line option!no-feature-detection}\index{no-feature-detection!swift\_backend command line option}
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!no-feature-detection@\spxentry{no-feature-detection}}\index{no-feature-detection@\spxentry{no-feature-detection}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-no-feature-detection}}\pysigline{\sphinxbfcode{\sphinxupquote{no-feature-detection}}\sphinxcode{\sphinxupquote{}}}
@@ -696,6 +696,26 @@ configurations.
\end{fulllineitems}
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!domain@\spxentry{domain}}\index{domain@\spxentry{domain}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
+
+\begin{fulllineitems}
+\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-domain}}\pysigline{\sphinxbfcode{\sphinxupquote{domain}}\sphinxcode{\sphinxupquote{}}}
+If this option is specified, S3QL will use the Keystone v3 API. The
+default domain for OpenStack installations is \sphinxcode{\sphinxupquote{Default}}. If this
+option is specified without setting the \sphinxcode{\sphinxupquote{project-domain}} option, this
+will be used for both the project and the user domain. Note: some
+instances of the Keystone v3 API prefer the use of UUIDs rather than
+names for tenant (called project in newer OpenStack versions), as
+well as domains.
+
+\end{fulllineitems}
+
+\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!project-domain@\spxentry{project-domain}}\index{project-domain@\spxentry{project-domain}!swift\_backend command line option@\spxentry{swift\_backend command line option}}\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!In simple cases, the project domain will be the same as the auth@\spxentry{In simple cases, the project domain will be the same as the auth}}\index{In simple cases, the project domain will be the same as the auth@\spxentry{In simple cases, the project domain will be the same as the auth}!swift\_backend command line option@\spxentry{swift\_backend command line option}}\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!domain. If the {}`project-domain{}` option is not specified, it will be@\spxentry{domain. If the {}`project-domain{}` option is not specified, it will be}}\index{domain. If the {}`project-domain{}` option is not specified, it will be@\spxentry{domain. If the {}`project-domain{}` option is not specified, it will be}!swift\_backend command line option@\spxentry{swift\_backend command line option}}\index{swift\_backend command line option@\spxentry{swift\_backend command line option}!assumed to be the same as the user domain.@\spxentry{assumed to be the same as the user domain.}}\index{assumed to be the same as the user domain.@\spxentry{assumed to be the same as the user domain.}!swift\_backend command line option@\spxentry{swift\_backend command line option}}
+
+\begin{fulllineitems}
+\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-project-domain}}\pysigline{\sphinxbfcode{\sphinxupquote{project-domain}}\sphinxcode{\sphinxupquote{}}}\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-in}}\pysigline{\sphinxbfcode{\sphinxupquote{In}}\sphinxcode{\sphinxupquote{~simple~cases}}\sphinxcode{\sphinxupquote{,~}}\sphinxbfcode{\sphinxupquote{the}}\sphinxcode{\sphinxupquote{~project~domain~will~be~the~same~as~the~auth}}}\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-it}}\pysigline{\sphinxbfcode{\sphinxupquote{domain.}}\sphinxcode{\sphinxupquote{~If~the~{}`project-domain{}`~option~is~not~specified}}\sphinxcode{\sphinxupquote{,~}}\sphinxbfcode{\sphinxupquote{it}}\sphinxcode{\sphinxupquote{~will~be}}}\phantomsection\label{\detokenize{backends:cmdoption-swift-backend-arg-assumed}}\pysigline{\sphinxbfcode{\sphinxupquote{assumed}}\sphinxcode{\sphinxupquote{~to~be~the~same~as~the~user~domain.}}}
+\end{fulllineitems}
+
\begin{sphinxadmonition}{note}{Note:}
The Swift API unfortunately lacks a number of features that S3QL
@@ -715,7 +735,6 @@ just use the OpenStack/Swift backend (see above) with
there is also a special \sphinxcode{\sphinxupquote{rackspace}} backend that uses a storage URL
of the form
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{rackspace://}\PYG{n+nv}{\PYGZlt{}region\PYGZgt{}}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}container\PYGZgt{}}\PYG{g+ge}{[/\PYGZlt{}prefix\PYGZgt{}]}
\end{sphinxVerbatim}
@@ -738,7 +757,6 @@ The Rackspace backend accepts the same backend options as the
The S3 compatible backend allows S3QL to access any storage service
that uses the same protocol as Amazon S3. The storage URL has the form
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3c://}\PYG{n+nv}{\PYGZlt{}hostname\PYGZgt{}}\PYG{l}{:}\PYG{n+nv}{\PYGZlt{}port\PYGZgt{}}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}bucketname\PYGZgt{}}\PYG{l}{/}\PYG{n+nv}{\PYGZlt{}prefix\PYGZgt{}}
\end{sphinxVerbatim}
@@ -749,7 +767,7 @@ used by S3QL. This allows you to store several S3QL file systems in
the same bucket.
The S3 compatible backend accepts the following backend options:
-\index{s3c\_backend command line option!no-ssl}\index{no-ssl!s3c\_backend command line option}
+\index{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!no-ssl@\spxentry{no-ssl}}\index{no-ssl@\spxentry{no-ssl}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3c-backend-arg-no-ssl}}\pysigline{\sphinxbfcode{\sphinxupquote{no-ssl}}\sphinxcode{\sphinxupquote{}}}
@@ -757,7 +775,7 @@ Disable encrypted (https) connections and use plain HTTP instead.
\end{fulllineitems}
-\index{s3c\_backend command line option!ssl-ca-path=\textless{}path\textgreater{}}\index{ssl-ca-path=\textless{}path\textgreater{}!s3c\_backend command line option}
+\index{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}}\index{ssl-ca-path=\textless{}path\textgreater{}@\spxentry{ssl-ca-path=\textless{}path\textgreater{}}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3c-backend-arg-ssl-ca-path}}\pysigline{\sphinxbfcode{\sphinxupquote{ssl-ca-path}}\sphinxcode{\sphinxupquote{=\textless{}path\textgreater{}}}}
@@ -769,7 +787,7 @@ per file.
\end{fulllineitems}
-\index{s3c\_backend command line option!tcp-timeout}\index{tcp-timeout!s3c\_backend command line option}
+\index{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!tcp-timeout@\spxentry{tcp-timeout}}\index{tcp-timeout@\spxentry{tcp-timeout}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3c-backend-arg-tcp-timeout}}\pysigline{\sphinxbfcode{\sphinxupquote{tcp-timeout}}\sphinxcode{\sphinxupquote{}}}
@@ -779,7 +797,7 @@ TCP connection is closed and re-established (default: 20 seconds).
\end{fulllineitems}
-\index{s3c\_backend command line option!disable-expect100}\index{disable-expect100!s3c\_backend command line option}
+\index{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!disable-expect100@\spxentry{disable-expect100}}\index{disable-expect100@\spxentry{disable-expect100}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3c-backend-arg-disable-expect100}}\pysigline{\sphinxbfcode{\sphinxupquote{disable-expect100}}\sphinxcode{\sphinxupquote{}}}
@@ -792,7 +810,7 @@ than once in some circumstances.
\end{fulllineitems}
-\index{s3c\_backend command line option!dumb-copy}\index{dumb-copy!s3c\_backend command line option}
+\index{s3c\_backend command line option@\spxentry{s3c\_backend command line option}!dumb-copy@\spxentry{dumb-copy}}\index{dumb-copy@\spxentry{dumb-copy}!s3c\_backend command line option@\spxentry{s3c\_backend command line option}}
\begin{fulllineitems}
\phantomsection\label{\detokenize{backends:cmdoption-s3c-backend-arg-dumb-copy}}\pysigline{\sphinxbfcode{\sphinxupquote{dumb-copy}}\sphinxcode{\sphinxupquote{}}}
@@ -822,7 +840,6 @@ mountpoint).
The storage URL for local storage is
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{local://}\PYG{n+nv}{\PYGZlt{}path\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1128,7 +1145,6 @@ neglected over long periods of time.
A S3QL file system is created with the \sphinxstyleliteralstrong{\sphinxupquote{mkfs.s3ql}} command. It has the
following syntax:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{mkfs.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1214,7 +1230,6 @@ file systems. The file system \sphinxstyleemphasis{must not be mounted} when usi
The syntax is
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qladm }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}action\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage\PYGZhy{}url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1267,7 +1282,6 @@ that the different actions take.
To change the passphrase of a file system, use the \sphinxcode{\sphinxupquote{passphrase}}
subcommand:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qladm passphrase }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1297,7 +1311,6 @@ file system at the same time.
To upgrade a file system from the previous to the current revision,
execute
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qladm upgrade }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1307,7 +1320,6 @@ execute
\label{\detokenize{adm:deleting-a-file-system}}
A file system can be deleted with:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qladm clear }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1323,7 +1335,6 @@ created backup copies.
The command
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qladm download\PYGZhy{}metadata }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1345,7 +1356,6 @@ for help on the mailing list first (see {\hyperref[\detokenize{resources:resourc
A S3QL file system is mounted with the \sphinxstyleliteralstrong{\sphinxupquote{mount.s3ql}}
command. It has the following syntax:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{mount.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1623,7 +1633,6 @@ data de-duplication feature of S3QL.
The syntax of \sphinxcode{\sphinxupquote{s3qlcp}} is:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlcp }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}src\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}target\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1696,14 +1705,12 @@ any backup program.
You can get more information about a mounted S3QL file system with the
\sphinxcode{\sphinxupquote{s3qlstat}} command. It has the following syntax:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlstat }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}
\end{sphinxVerbatim}
This will print out something like this
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{Directory entries: 1488068}
\PYG{l}{Inodes: 1482991}
@@ -1738,7 +1745,6 @@ below).
For example, to make the directory tree beneath the directory
\sphinxcode{\sphinxupquote{2010-04-21}} immutable, execute
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qllock 2010\PYGZhy{}04\PYGZhy{}21}
\end{sphinxVerbatim}
@@ -1782,7 +1788,6 @@ using e.g. \sphinxcode{\sphinxupquote{rm -r}}, the main reason for its existence
allows you to delete immutable trees as well. The syntax is rather
simple:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlrm }\PYG{n+nv}{\PYGZlt{}directory\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1796,7 +1801,6 @@ be removed entirely and immediately.
The \sphinxcode{\sphinxupquote{s3qlctrl}} can be used to control a mounted S3QL file system. Its
syntax is
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlctrl }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}action\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}\PYG{l}{ ...}
\end{sphinxVerbatim}
@@ -1831,7 +1835,6 @@ Trigger a metadata upload.
\label{\detokenize{umount:unmounting}}\label{\detokenize{umount::doc}}
To unmount an S3QL file system, use the command:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{umount.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}
\end{sphinxVerbatim}
@@ -1915,7 +1918,6 @@ again.
The \sphinxstyleliteralstrong{\sphinxupquote{fsck.s3ql}} command has the following syntax:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{fsck.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -2004,7 +2006,6 @@ affected files into the \sphinxcode{\sphinxupquote{lost+found}} directory.
The \sphinxstyleliteralstrong{\sphinxupquote{s3ql\_verify}} command has the following syntax:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3ql\PYGZus{}verify }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -2098,7 +2099,6 @@ When reading the authinfo file, S3QL considers every applicable
section in order and uses the last value that it found for each entry.
For example, consider the following authentication file:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{g+ge}{[s3]}
\PYG{l}{storage\PYGZhy{}url: s3://}
@@ -2169,7 +2169,6 @@ To recursively copy the directory \sphinxcode{\sphinxupquote{/mnt/home-backup}}
\sphinxcode{\sphinxupquote{/home/joe}} using 8 parallel processes and preserving permissions,
you would execute
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{pcp.py \PYGZhy{}a \PYGZhy{}\PYGZhy{}processes=8 /mnt/home\PYGZhy{}backup/ /home/joe}
\end{sphinxVerbatim}
@@ -2267,7 +2266,6 @@ stored in directories of the form \sphinxcode{\sphinxupquote{year-month-day\_hou
directory. So for the above backup strategy, the correct invocation
would be:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{expire\PYGZus{}backups.py 1 3 7 14 31}
\end{sphinxVerbatim}
@@ -2310,14 +2308,12 @@ By combining S3QL’s local backend with \sphinxhref{http://fuse.sourceforge.net
S3QL file system on arbitrary SSH servers: first mount the remote
target directory into the local filesystem,
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{sshfs user@my.server.com:/mnt/s3ql /mnt/sshfs}
\end{sphinxVerbatim}
and then give the mountpoint to S3QL as a local destination:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{mount.s3ql local:///mnt/sshfs/myfsdata /mnt/s3ql}
\end{sphinxVerbatim}
@@ -2381,7 +2377,6 @@ first instance handles all filenames starting with a-f, the second the
filenames from g-l and the third covers the rest. The \sphinxcode{\sphinxupquote{+ */}} rule
ensures that every instance looks into all directories.
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{c}{\PYGZsh{}!/bin/bash}
@@ -2422,7 +2417,6 @@ packages shipped with Debian/Ubuntu. You can reinstall the package
(after removing the apsw PPA from \sphinxcode{\sphinxupquote{/etc/apt/sources.list}} and
\sphinxcode{\sphinxupquote{/etc/apt/sources.list.d/*}} with:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{c}{\PYGZsh{} dpkg \PYGZhy{}\PYGZhy{}purge \PYGZhy{}\PYGZhy{}force\PYGZhy{}depends python\PYGZhy{}apsw}
\PYG{c}{\PYGZsh{} apt\PYGZhy{}get install python\PYGZhy{}apsw}
@@ -2823,7 +2817,6 @@ here in the User’s Guide.
\subsection{Synopsis}
\label{\detokenize{man/mkfs:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{mkfs.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -2946,7 +2939,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/adm:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qladm }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}action\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3092,7 +3084,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/mount:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{mount.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mount point\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3284,7 +3275,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/stat:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlstat }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3362,7 +3352,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/ctrl:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlctrl }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}action\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}\PYG{l}{ ...}
\end{sphinxVerbatim}
@@ -3401,7 +3390,6 @@ Changes the cache size of the file system. This action requires an
additional argument that specifies the new cache size in KiB, so the
complete command line is:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlctrl }\PYG{g+ge}{[options]}\PYG{l}{ cachesize }\PYG{n+nv}{\PYGZlt{}mountpoint\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}new\PYGZhy{}cache\PYGZhy{}size\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3410,7 +3398,6 @@ complete command line is:
Change the amount of information that is logged into
\sphinxcode{\sphinxupquote{\textasciitilde{}/.s3ql/mount.log}} file. The complete syntax is:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
s3qlctrl [options] log \PYGZlt{}mountpoint\PYGZgt{} \PYGZlt{}level\PYGZgt{} [\PYGZlt{}module\PYGZgt{} [\PYGZlt{}module\PYGZgt{} ...]]
\end{sphinxVerbatim}
@@ -3487,7 +3474,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/cp:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlcp }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}source\PYGZhy{}dir\PYGZgt{}}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}dest\PYGZhy{}dir\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3617,7 +3603,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/rm:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qlrm }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}directory\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3699,7 +3684,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/lock:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3qllock }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}directory\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3811,7 +3795,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/umount:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{umount.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}mount point\PYGZgt{}}
\end{sphinxVerbatim}
@@ -3898,7 +3881,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/fsck:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{fsck.s3ql }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -4061,7 +4043,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/oauth_client:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3ql\PYGZus{}oauth\PYGZus{}client }\PYG{g+ge}{[options]}
\end{sphinxVerbatim}
@@ -4084,30 +4065,6 @@ backend.
\subsection{Options}
\label{\detokenize{man/oauth_client:options}}
The \sphinxstyleliteralstrong{\sphinxupquote{s3ql\_oauth\_client}} command accepts the following options:
-\begin{quote}
-\begin{optionlist}{3cm}
-\item [-{-}log \textless{}target\textgreater{}]
-Destination for log messages. Specify \sphinxcode{\sphinxupquote{none}} for
-standard output or \sphinxcode{\sphinxupquote{syslog}} for the system logging
-daemon. Anything else will be interpreted as a file
-name. Log files will be rotated when they reach 1 MiB,
-and at most 5 old log files will be kept. Default:
-\sphinxcode{\sphinxupquote{None}}
-\item [-{-}debug-modules \textless{}modules\textgreater{}]
-Activate debugging output from specified modules (use
-commas to separate multiple modules). Debug messages
-will be written to the target specified by the
-\sphinxcode{\sphinxupquote{-{-}log}} option.
-\item [-{-}debug]
-Activate debugging output from all S3QL modules. Debug
-messages will be written to the target specified by
-the \sphinxcode{\sphinxupquote{-{-}log}} option.
-\item [-{-}quiet]
-be really quiet
-\item [-{-}version]
-just print program version and exit
-\end{optionlist}
-\end{quote}
\subsection{Exit Codes}
@@ -4141,7 +4098,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/verify:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{s3ql\PYGZus{}verify }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}storage url\PYGZgt{}}
\end{sphinxVerbatim}
@@ -4286,7 +4242,6 @@ system, common locations are \sphinxcode{\sphinxupquote{/usr/share/doc/s3ql}} or
\subsection{Synopsis}
\label{\detokenize{man/pcp:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{pcp }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}source\PYGZgt{}}\PYG{l}{ }\PYG{g+ge}{[\PYGZlt{}source\PYGZgt{} ...]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}destination\PYGZgt{}}
\end{sphinxVerbatim}
@@ -4364,7 +4319,6 @@ Invalid command line argument or configuration file key.
\subsection{Synopsis}
\label{\detokenize{man/expire_backups:synopsis}}
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{expire\PYGZus{}backups }\PYG{g+ge}{[options]}\PYG{l}{ }\PYG{n+nv}{\PYGZlt{}age\PYGZgt{}}\PYG{l}{ }\PYG{g+ge}{[\PYGZlt{}age\PYGZgt{} ...]}
\end{sphinxVerbatim}
@@ -4427,7 +4381,6 @@ stored in directories of the form \sphinxcode{\sphinxupquote{year-month-day\_hou
directory. So for the above backup strategy, the correct invocation
would be:
-\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
\PYG{l}{expire\PYGZus{}backups.py 1 3 7 14 31}
\end{sphinxVerbatim}
diff --git a/doc/latex/manual.toc b/doc/latex/manual.toc
index b748f6e..fa190f7 100644
--- a/doc/latex/manual.toc
+++ b/doc/latex/manual.toc
@@ -1,173 +1,173 @@
-\select@language {english}
-\contentsline {chapter}{\numberline {1}S3QL}{1}{chapter.1}
-\contentsline {section}{\numberline {1.1}Features}{1}{section.1.1}
-\contentsline {section}{\numberline {1.2}Development Status}{2}{section.1.2}
-\contentsline {section}{\numberline {1.3}Supported Platforms}{2}{section.1.3}
-\contentsline {section}{\numberline {1.4}Contributing}{2}{section.1.4}
-\contentsline {chapter}{\numberline {2}Installation}{3}{chapter.2}
-\contentsline {section}{\numberline {2.1}Dependencies}{3}{section.2.1}
-\contentsline {section}{\numberline {2.2}Installing S3QL}{4}{section.2.2}
-\contentsline {section}{\numberline {2.3}Development Version}{4}{section.2.3}
-\contentsline {section}{\numberline {2.4}Running tests requiring remote servers}{4}{section.2.4}
-\contentsline {chapter}{\numberline {3}Storage Backends}{7}{chapter.3}
-\contentsline {section}{\numberline {3.1}Google Storage}{7}{section.3.1}
-\contentsline {section}{\numberline {3.2}Amazon S3}{8}{section.3.2}
-\contentsline {section}{\numberline {3.3}OpenStack/Swift}{9}{section.3.3}
-\contentsline {section}{\numberline {3.4}Rackspace CloudFiles}{10}{section.3.4}
-\contentsline {section}{\numberline {3.5}S3 compatible}{10}{section.3.5}
-\contentsline {section}{\numberline {3.6}Local}{11}{section.3.6}
-\contentsline {chapter}{\numberline {4}Important Rules to Avoid Losing Data}{13}{chapter.4}
-\contentsline {section}{\numberline {4.1}Rules in a Nutshell}{13}{section.4.1}
-\contentsline {section}{\numberline {4.2}Consistency Window List}{14}{section.4.2}
-\contentsline {section}{\numberline {4.3}Data Consistency}{14}{section.4.3}
-\contentsline {section}{\numberline {4.4}Data Durability}{15}{section.4.4}
-\contentsline {chapter}{\numberline {5}File System Creation}{17}{chapter.5}
-\contentsline {chapter}{\numberline {6}Managing File Systems}{19}{chapter.6}
-\contentsline {section}{\numberline {6.1}Changing the Passphrase}{19}{section.6.1}
-\contentsline {section}{\numberline {6.2}Upgrading the file system}{20}{section.6.2}
-\contentsline {section}{\numberline {6.3}Deleting a file system}{20}{section.6.3}
-\contentsline {section}{\numberline {6.4}Restoring Metadata Backups}{20}{section.6.4}
-\contentsline {chapter}{\numberline {7}Mounting}{21}{chapter.7}
-\contentsline {section}{\numberline {7.1}Permission Checking}{22}{section.7.1}
-\contentsline {section}{\numberline {7.2}Compression Algorithms}{22}{section.7.2}
-\contentsline {section}{\numberline {7.3}Notes about Caching}{23}{section.7.3}
-\contentsline {subsection}{\numberline {7.3.1}Maximum Number of Cache Entries}{23}{subsection.7.3.1}
-\contentsline {subsection}{\numberline {7.3.2}Cache Flushing and Expiration}{23}{subsection.7.3.2}
-\contentsline {section}{\numberline {7.4}NFS Support}{23}{section.7.4}
-\contentsline {section}{\numberline {7.5}Failure Modes}{23}{section.7.5}
-\contentsline {section}{\numberline {7.6}Automatic Mounting}{24}{section.7.6}
-\contentsline {chapter}{\numberline {8}Advanced S3QL Features}{25}{chapter.8}
-\contentsline {section}{\numberline {8.1}Snapshotting and Copy-on-Write}{25}{section.8.1}
-\contentsline {subsection}{\numberline {8.1.1}Snapshotting vs Hardlinking}{25}{subsection.8.1.1}
-\contentsline {section}{\numberline {8.2}Getting Statistics}{26}{section.8.2}
-\contentsline {section}{\numberline {8.3}Immutable Trees}{26}{section.8.3}
-\contentsline {section}{\numberline {8.4}Fast Recursive Removal}{27}{section.8.4}
-\contentsline {section}{\numberline {8.5}Runtime Configuration}{27}{section.8.5}
-\contentsline {chapter}{\numberline {9}Unmounting}{29}{chapter.9}
-\contentsline {chapter}{\numberline {10}Checking for Errors}{31}{chapter.10}
-\contentsline {section}{\numberline {10.1}Checking and repairing internal file system errors}{31}{section.10.1}
-\contentsline {section}{\numberline {10.2}Detecting and handling backend data corruption}{32}{section.10.2}
-\contentsline {chapter}{\numberline {11}Storing Backend Information and Credentials}{35}{chapter.11}
-\contentsline {chapter}{\numberline {12}Contributed Programs}{37}{chapter.12}
-\contentsline {section}{\numberline {12.1}benchmark.py}{37}{section.12.1}
-\contentsline {section}{\numberline {12.2}clone\_fs.py}{37}{section.12.2}
-\contentsline {section}{\numberline {12.3}pcp.py}{37}{section.12.3}
-\contentsline {section}{\numberline {12.4}s3ql\_backup.sh}{37}{section.12.4}
-\contentsline {section}{\numberline {12.5}expire\_backups.py}{38}{section.12.5}
-\contentsline {section}{\numberline {12.6}remove\_objects.py}{39}{section.12.6}
-\contentsline {chapter}{\numberline {13}Tips \& Tricks}{41}{chapter.13}
-\contentsline {section}{\numberline {13.1}SSH Backend}{41}{section.13.1}
-\contentsline {section}{\numberline {13.2}Permanently mounted backup file system}{41}{section.13.2}
-\contentsline {section}{\numberline {13.3}Improving copy performance}{41}{section.13.3}
-\contentsline {chapter}{\numberline {14}Frequently Asked Questions}{43}{chapter.14}
-\contentsline {section}{\numberline {14.1}What does \IeC {\textquotedblleft }python-apsw must be linked dynamically to sqlite3\IeC {\textquotedblright } mean?}{43}{section.14.1}
-\contentsline {section}{\numberline {14.2}How can I improve the file system throughput?}{43}{section.14.2}
-\contentsline {section}{\numberline {14.3}Why does \sphinxstyleliteralintitle {\sphinxupquote {df}} show 1 TB of free space?}{43}{section.14.3}
-\contentsline {section}{\numberline {14.4}Which operating systems are supported?}{44}{section.14.4}
-\contentsline {section}{\numberline {14.5}Is there a file size limit?}{44}{section.14.5}
-\contentsline {section}{\numberline {14.6}Suppose I want to make a small change in a very large file. Will S3QL download and re-upload the entire file?}{44}{section.14.6}
-\contentsline {section}{\numberline {14.7}I don\IeC {\textquoteright }t quite understand this de-duplication feature\IeC {\textellipsis }}{44}{section.14.7}
-\contentsline {section}{\numberline {14.8}What does the \IeC {\textquotedblleft }Transport endpoint not connected\IeC {\textquotedblright } error mean?}{44}{section.14.8}
-\contentsline {section}{\numberline {14.9}What does \IeC {\textquotedblleft }Backend reports that fs is still mounted elsewhere, aborting\IeC {\textquotedblright } mean?}{44}{section.14.9}
-\contentsline {section}{\numberline {14.10}Can I access an S3QL file system on multiple computers simultaneously?}{45}{section.14.10}
-\contentsline {section}{\numberline {14.11}What maximum object size should I use?}{45}{section.14.11}
-\contentsline {section}{\numberline {14.12}Is there a way to make the cache persistent / access the file system offline?}{46}{section.14.12}
-\contentsline {section}{\numberline {14.13}I would like to use S3QL with Hubic, but\IeC {\textellipsis }}{46}{section.14.13}
-\contentsline {section}{\numberline {14.14}What\IeC {\textquoteright }s a reasonable metadata upload interval?}{46}{section.14.14}
-\contentsline {chapter}{\numberline {15}Known Issues}{49}{chapter.15}
-\contentsline {chapter}{\numberline {16}Manpages}{51}{chapter.16}
-\contentsline {section}{\numberline {16.1}The \sphinxstyleliteralstrong {\sphinxupquote {mkfs.s3ql}} command}{51}{section.16.1}
-\contentsline {subsection}{\numberline {16.1.1}Synopsis}{51}{subsection.16.1.1}
-\contentsline {subsection}{\numberline {16.1.2}Description}{51}{subsection.16.1.2}
-\contentsline {subsection}{\numberline {16.1.3}Options}{51}{subsection.16.1.3}
-\contentsline {subsection}{\numberline {16.1.4}Exit Codes}{52}{subsection.16.1.4}
-\contentsline {subsection}{\numberline {16.1.5}See Also}{52}{subsection.16.1.5}
-\contentsline {section}{\numberline {16.2}The \sphinxstyleliteralstrong {\sphinxupquote {s3qladm}} command}{52}{section.16.2}
-\contentsline {subsection}{\numberline {16.2.1}Synopsis}{52}{subsection.16.2.1}
-\contentsline {subsection}{\numberline {16.2.2}Description}{53}{subsection.16.2.2}
-\contentsline {subsection}{\numberline {16.2.3}Options}{53}{subsection.16.2.3}
-\contentsline {subsection}{\numberline {16.2.4}Actions}{53}{subsection.16.2.4}
-\contentsline {subsection}{\numberline {16.2.5}Exit Codes}{53}{subsection.16.2.5}
-\contentsline {subsection}{\numberline {16.2.6}See Also}{54}{subsection.16.2.6}
-\contentsline {section}{\numberline {16.3}The \sphinxstyleliteralstrong {\sphinxupquote {mount.s3ql}} command}{54}{section.16.3}
-\contentsline {subsection}{\numberline {16.3.1}Synopsis}{54}{subsection.16.3.1}
-\contentsline {subsection}{\numberline {16.3.2}Description}{54}{subsection.16.3.2}
-\contentsline {subsection}{\numberline {16.3.3}Options}{54}{subsection.16.3.3}
-\contentsline {subsection}{\numberline {16.3.4}Exit Codes}{55}{subsection.16.3.4}
-\contentsline {subsection}{\numberline {16.3.5}See Also}{56}{subsection.16.3.5}
-\contentsline {section}{\numberline {16.4}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlstat}} command}{56}{section.16.4}
-\contentsline {subsection}{\numberline {16.4.1}Synopsis}{56}{subsection.16.4.1}
-\contentsline {subsection}{\numberline {16.4.2}Description}{57}{subsection.16.4.2}
-\contentsline {subsection}{\numberline {16.4.3}Options}{57}{subsection.16.4.3}
-\contentsline {subsection}{\numberline {16.4.4}Exit Codes}{57}{subsection.16.4.4}
-\contentsline {subsection}{\numberline {16.4.5}See Also}{57}{subsection.16.4.5}
-\contentsline {section}{\numberline {16.5}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlctrl}} command}{57}{section.16.5}
-\contentsline {subsection}{\numberline {16.5.1}Synopsis}{57}{subsection.16.5.1}
-\contentsline {subsection}{\numberline {16.5.2}Description}{58}{subsection.16.5.2}
-\contentsline {subsection}{\numberline {16.5.3}Options}{58}{subsection.16.5.3}
-\contentsline {subsection}{\numberline {16.5.4}Exit Codes}{58}{subsection.16.5.4}
-\contentsline {subsection}{\numberline {16.5.5}See Also}{59}{subsection.16.5.5}
-\contentsline {section}{\numberline {16.6}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlcp}} command}{59}{section.16.6}
-\contentsline {subsection}{\numberline {16.6.1}Synopsis}{59}{subsection.16.6.1}
-\contentsline {subsection}{\numberline {16.6.2}Description}{59}{subsection.16.6.2}
-\contentsline {subsubsection}{Snapshotting vs Hardlinking}{59}{subsubsection*.23}
-\contentsline {subsection}{\numberline {16.6.3}Options}{60}{subsection.16.6.3}
-\contentsline {subsection}{\numberline {16.6.4}Exit Codes}{60}{subsection.16.6.4}
-\contentsline {subsection}{\numberline {16.6.5}See Also}{60}{subsection.16.6.5}
-\contentsline {section}{\numberline {16.7}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlrm}} command}{60}{section.16.7}
-\contentsline {subsection}{\numberline {16.7.1}Synopsis}{60}{subsection.16.7.1}
-\contentsline {subsection}{\numberline {16.7.2}Description}{60}{subsection.16.7.2}
-\contentsline {subsection}{\numberline {16.7.3}Options}{61}{subsection.16.7.3}
-\contentsline {subsection}{\numberline {16.7.4}Exit Codes}{61}{subsection.16.7.4}
-\contentsline {subsection}{\numberline {16.7.5}See Also}{61}{subsection.16.7.5}
-\contentsline {section}{\numberline {16.8}The \sphinxstyleliteralstrong {\sphinxupquote {s3qllock}} command}{61}{section.16.8}
-\contentsline {subsection}{\numberline {16.8.1}Synopsis}{61}{subsection.16.8.1}
-\contentsline {subsection}{\numberline {16.8.2}Description}{61}{subsection.16.8.2}
-\contentsline {subsection}{\numberline {16.8.3}Rationale}{62}{subsection.16.8.3}
-\contentsline {subsection}{\numberline {16.8.4}Options}{62}{subsection.16.8.4}
-\contentsline {subsection}{\numberline {16.8.5}Exit Codes}{62}{subsection.16.8.5}
-\contentsline {subsection}{\numberline {16.8.6}See Also}{62}{subsection.16.8.6}
-\contentsline {section}{\numberline {16.9}The \sphinxstyleliteralstrong {\sphinxupquote {umount.s3ql}} command}{63}{section.16.9}
-\contentsline {subsection}{\numberline {16.9.1}Synopsis}{63}{subsection.16.9.1}
-\contentsline {subsection}{\numberline {16.9.2}Description}{63}{subsection.16.9.2}
-\contentsline {subsection}{\numberline {16.9.3}Options}{63}{subsection.16.9.3}
-\contentsline {subsection}{\numberline {16.9.4}Exit Codes}{63}{subsection.16.9.4}
-\contentsline {subsection}{\numberline {16.9.5}See Also}{64}{subsection.16.9.5}
-\contentsline {section}{\numberline {16.10}The \sphinxstyleliteralstrong {\sphinxupquote {fsck.s3ql}} command}{64}{section.16.10}
-\contentsline {subsection}{\numberline {16.10.1}Synopsis}{64}{subsection.16.10.1}
-\contentsline {subsection}{\numberline {16.10.2}Description}{64}{subsection.16.10.2}
-\contentsline {subsection}{\numberline {16.10.3}Options}{64}{subsection.16.10.3}
-\contentsline {subsection}{\numberline {16.10.4}Exit Codes}{65}{subsection.16.10.4}
-\contentsline {subsection}{\numberline {16.10.5}See Also}{65}{subsection.16.10.5}
-\contentsline {section}{\numberline {16.11}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{66}{section.16.11}
-\contentsline {subsection}{\numberline {16.11.1}Synopsis}{66}{subsection.16.11.1}
-\contentsline {subsection}{\numberline {16.11.2}Description}{66}{subsection.16.11.2}
-\contentsline {subsection}{\numberline {16.11.3}Options}{66}{subsection.16.11.3}
-\contentsline {subsection}{\numberline {16.11.4}Exit Codes}{66}{subsection.16.11.4}
-\contentsline {subsection}{\numberline {16.11.5}See Also}{66}{subsection.16.11.5}
-\contentsline {section}{\numberline {16.12}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{67}{section.16.12}
-\contentsline {subsection}{\numberline {16.12.1}Synopsis}{67}{subsection.16.12.1}
-\contentsline {subsection}{\numberline {16.12.2}Description}{67}{subsection.16.12.2}
-\contentsline {subsection}{\numberline {16.12.3}Options}{67}{subsection.16.12.3}
-\contentsline {subsection}{\numberline {16.12.4}Exit Codes}{67}{subsection.16.12.4}
-\contentsline {subsection}{\numberline {16.12.5}See Also}{68}{subsection.16.12.5}
-\contentsline {section}{\numberline {16.13}The \sphinxstyleliteralstrong {\sphinxupquote {pcp}} command}{68}{section.16.13}
-\contentsline {subsection}{\numberline {16.13.1}Synopsis}{68}{subsection.16.13.1}
-\contentsline {subsection}{\numberline {16.13.2}Description}{68}{subsection.16.13.2}
-\contentsline {subsection}{\numberline {16.13.3}Options}{69}{subsection.16.13.3}
-\contentsline {subsection}{\numberline {16.13.4}Exit Codes}{69}{subsection.16.13.4}
-\contentsline {subsection}{\numberline {16.13.5}See Also}{69}{subsection.16.13.5}
-\contentsline {section}{\numberline {16.14}The \sphinxstyleliteralstrong {\sphinxupquote {expire\_backups}} command}{69}{section.16.14}
-\contentsline {subsection}{\numberline {16.14.1}Synopsis}{69}{subsection.16.14.1}
-\contentsline {subsection}{\numberline {16.14.2}Description}{69}{subsection.16.14.2}
-\contentsline {subsection}{\numberline {16.14.3}Options}{70}{subsection.16.14.3}
-\contentsline {subsection}{\numberline {16.14.4}Exit Codes}{71}{subsection.16.14.4}
-\contentsline {subsection}{\numberline {16.14.5}See Also}{71}{subsection.16.14.5}
-\contentsline {chapter}{\numberline {17}Further Resources / Getting Help}{73}{chapter.17}
-\contentsline {chapter}{\numberline {18}Implementation Details}{75}{chapter.18}
-\contentsline {section}{\numberline {18.1}Metadata Storage}{75}{section.18.1}
-\contentsline {section}{\numberline {18.2}Data Storage}{75}{section.18.2}
-\contentsline {section}{\numberline {18.3}Data De-Duplication}{76}{section.18.3}
-\contentsline {section}{\numberline {18.4}Caching}{76}{section.18.4}
-\contentsline {section}{\numberline {18.5}Eventual Consistency Handling}{76}{section.18.5}
-\contentsline {section}{\numberline {18.6}Encryption}{76}{section.18.6}
+\babel@toc {english}{}
+\contentsline {chapter}{\numberline {1}S3QL}{1}{chapter.1}%
+\contentsline {section}{\numberline {1.1}Features}{1}{section.1.1}%
+\contentsline {section}{\numberline {1.2}Development Status}{2}{section.1.2}%
+\contentsline {section}{\numberline {1.3}Supported Platforms}{2}{section.1.3}%
+\contentsline {section}{\numberline {1.4}Contributing}{2}{section.1.4}%
+\contentsline {chapter}{\numberline {2}Installation}{3}{chapter.2}%
+\contentsline {section}{\numberline {2.1}Dependencies}{3}{section.2.1}%
+\contentsline {section}{\numberline {2.2}Installing S3QL}{4}{section.2.2}%
+\contentsline {section}{\numberline {2.3}Development Version}{4}{section.2.3}%
+\contentsline {section}{\numberline {2.4}Running tests requiring remote servers}{4}{section.2.4}%
+\contentsline {chapter}{\numberline {3}Storage Backends}{7}{chapter.3}%
+\contentsline {section}{\numberline {3.1}Google Storage}{7}{section.3.1}%
+\contentsline {section}{\numberline {3.2}Amazon S3}{8}{section.3.2}%
+\contentsline {section}{\numberline {3.3}OpenStack/Swift}{9}{section.3.3}%
+\contentsline {section}{\numberline {3.4}Rackspace CloudFiles}{10}{section.3.4}%
+\contentsline {section}{\numberline {3.5}S3 compatible}{10}{section.3.5}%
+\contentsline {section}{\numberline {3.6}Local}{11}{section.3.6}%
+\contentsline {chapter}{\numberline {4}Important Rules to Avoid Losing Data}{13}{chapter.4}%
+\contentsline {section}{\numberline {4.1}Rules in a Nutshell}{13}{section.4.1}%
+\contentsline {section}{\numberline {4.2}Consistency Window List}{14}{section.4.2}%
+\contentsline {section}{\numberline {4.3}Data Consistency}{14}{section.4.3}%
+\contentsline {section}{\numberline {4.4}Data Durability}{15}{section.4.4}%
+\contentsline {chapter}{\numberline {5}File System Creation}{17}{chapter.5}%
+\contentsline {chapter}{\numberline {6}Managing File Systems}{19}{chapter.6}%
+\contentsline {section}{\numberline {6.1}Changing the Passphrase}{19}{section.6.1}%
+\contentsline {section}{\numberline {6.2}Upgrading the file system}{20}{section.6.2}%
+\contentsline {section}{\numberline {6.3}Deleting a file system}{20}{section.6.3}%
+\contentsline {section}{\numberline {6.4}Restoring Metadata Backups}{20}{section.6.4}%
+\contentsline {chapter}{\numberline {7}Mounting}{21}{chapter.7}%
+\contentsline {section}{\numberline {7.1}Permission Checking}{22}{section.7.1}%
+\contentsline {section}{\numberline {7.2}Compression Algorithms}{22}{section.7.2}%
+\contentsline {section}{\numberline {7.3}Notes about Caching}{23}{section.7.3}%
+\contentsline {subsection}{\numberline {7.3.1}Maximum Number of Cache Entries}{23}{subsection.7.3.1}%
+\contentsline {subsection}{\numberline {7.3.2}Cache Flushing and Expiration}{23}{subsection.7.3.2}%
+\contentsline {section}{\numberline {7.4}NFS Support}{23}{section.7.4}%
+\contentsline {section}{\numberline {7.5}Failure Modes}{23}{section.7.5}%
+\contentsline {section}{\numberline {7.6}Automatic Mounting}{24}{section.7.6}%
+\contentsline {chapter}{\numberline {8}Advanced S3QL Features}{25}{chapter.8}%
+\contentsline {section}{\numberline {8.1}Snapshotting and Copy-on-Write}{25}{section.8.1}%
+\contentsline {subsection}{\numberline {8.1.1}Snapshotting vs Hardlinking}{25}{subsection.8.1.1}%
+\contentsline {section}{\numberline {8.2}Getting Statistics}{26}{section.8.2}%
+\contentsline {section}{\numberline {8.3}Immutable Trees}{26}{section.8.3}%
+\contentsline {section}{\numberline {8.4}Fast Recursive Removal}{27}{section.8.4}%
+\contentsline {section}{\numberline {8.5}Runtime Configuration}{27}{section.8.5}%
+\contentsline {chapter}{\numberline {9}Unmounting}{29}{chapter.9}%
+\contentsline {chapter}{\numberline {10}Checking for Errors}{31}{chapter.10}%
+\contentsline {section}{\numberline {10.1}Checking and repairing internal file system errors}{31}{section.10.1}%
+\contentsline {section}{\numberline {10.2}Detecting and handling backend data corruption}{32}{section.10.2}%
+\contentsline {chapter}{\numberline {11}Storing Backend Information and Credentials}{35}{chapter.11}%
+\contentsline {chapter}{\numberline {12}Contributed Programs}{37}{chapter.12}%
+\contentsline {section}{\numberline {12.1}benchmark.py}{37}{section.12.1}%
+\contentsline {section}{\numberline {12.2}clone\_fs.py}{37}{section.12.2}%
+\contentsline {section}{\numberline {12.3}pcp.py}{37}{section.12.3}%
+\contentsline {section}{\numberline {12.4}s3ql\_backup.sh}{37}{section.12.4}%
+\contentsline {section}{\numberline {12.5}expire\_backups.py}{38}{section.12.5}%
+\contentsline {section}{\numberline {12.6}remove\_objects.py}{39}{section.12.6}%
+\contentsline {chapter}{\numberline {13}Tips \& Tricks}{41}{chapter.13}%
+\contentsline {section}{\numberline {13.1}SSH Backend}{41}{section.13.1}%
+\contentsline {section}{\numberline {13.2}Permanently mounted backup file system}{41}{section.13.2}%
+\contentsline {section}{\numberline {13.3}Improving copy performance}{41}{section.13.3}%
+\contentsline {chapter}{\numberline {14}Frequently Asked Questions}{43}{chapter.14}%
+\contentsline {section}{\numberline {14.1}What does \IeC {\textquotedblleft }python-apsw must be linked dynamically to sqlite3\IeC {\textquotedblright } mean?}{43}{section.14.1}%
+\contentsline {section}{\numberline {14.2}How can I improve the file system throughput?}{43}{section.14.2}%
+\contentsline {section}{\numberline {14.3}Why does \sphinxstyleliteralintitle {\sphinxupquote {df}} show 1 TB of free space?}{43}{section.14.3}%
+\contentsline {section}{\numberline {14.4}Which operating systems are supported?}{44}{section.14.4}%
+\contentsline {section}{\numberline {14.5}Is there a file size limit?}{44}{section.14.5}%
+\contentsline {section}{\numberline {14.6}Suppose I want to make a small change in a very large file. Will S3QL download and re-upload the entire file?}{44}{section.14.6}%
+\contentsline {section}{\numberline {14.7}I don\IeC {\textquoteright }t quite understand this de-duplication feature\IeC {\textellipsis }}{44}{section.14.7}%
+\contentsline {section}{\numberline {14.8}What does the \IeC {\textquotedblleft }Transport endpoint not connected\IeC {\textquotedblright } error mean?}{44}{section.14.8}%
+\contentsline {section}{\numberline {14.9}What does \IeC {\textquotedblleft }Backend reports that fs is still mounted elsewhere, aborting\IeC {\textquotedblright } mean?}{44}{section.14.9}%
+\contentsline {section}{\numberline {14.10}Can I access an S3QL file system on multiple computers simultaneously?}{45}{section.14.10}%
+\contentsline {section}{\numberline {14.11}What maximum object size should I use?}{45}{section.14.11}%
+\contentsline {section}{\numberline {14.12}Is there a way to make the cache persistent / access the file system offline?}{46}{section.14.12}%
+\contentsline {section}{\numberline {14.13}I would like to use S3QL with Hubic, but\IeC {\textellipsis }}{46}{section.14.13}%
+\contentsline {section}{\numberline {14.14}What\IeC {\textquoteright }s a reasonable metadata upload interval?}{46}{section.14.14}%
+\contentsline {chapter}{\numberline {15}Known Issues}{49}{chapter.15}%
+\contentsline {chapter}{\numberline {16}Manpages}{51}{chapter.16}%
+\contentsline {section}{\numberline {16.1}The \sphinxstyleliteralstrong {\sphinxupquote {mkfs.s3ql}} command}{51}{section.16.1}%
+\contentsline {subsection}{\numberline {16.1.1}Synopsis}{51}{subsection.16.1.1}%
+\contentsline {subsection}{\numberline {16.1.2}Description}{51}{subsection.16.1.2}%
+\contentsline {subsection}{\numberline {16.1.3}Options}{51}{subsection.16.1.3}%
+\contentsline {subsection}{\numberline {16.1.4}Exit Codes}{52}{subsection.16.1.4}%
+\contentsline {subsection}{\numberline {16.1.5}See Also}{52}{subsection.16.1.5}%
+\contentsline {section}{\numberline {16.2}The \sphinxstyleliteralstrong {\sphinxupquote {s3qladm}} command}{52}{section.16.2}%
+\contentsline {subsection}{\numberline {16.2.1}Synopsis}{52}{subsection.16.2.1}%
+\contentsline {subsection}{\numberline {16.2.2}Description}{53}{subsection.16.2.2}%
+\contentsline {subsection}{\numberline {16.2.3}Options}{53}{subsection.16.2.3}%
+\contentsline {subsection}{\numberline {16.2.4}Actions}{53}{subsection.16.2.4}%
+\contentsline {subsection}{\numberline {16.2.5}Exit Codes}{53}{subsection.16.2.5}%
+\contentsline {subsection}{\numberline {16.2.6}See Also}{54}{subsection.16.2.6}%
+\contentsline {section}{\numberline {16.3}The \sphinxstyleliteralstrong {\sphinxupquote {mount.s3ql}} command}{54}{section.16.3}%
+\contentsline {subsection}{\numberline {16.3.1}Synopsis}{54}{subsection.16.3.1}%
+\contentsline {subsection}{\numberline {16.3.2}Description}{54}{subsection.16.3.2}%
+\contentsline {subsection}{\numberline {16.3.3}Options}{54}{subsection.16.3.3}%
+\contentsline {subsection}{\numberline {16.3.4}Exit Codes}{55}{subsection.16.3.4}%
+\contentsline {subsection}{\numberline {16.3.5}See Also}{56}{subsection.16.3.5}%
+\contentsline {section}{\numberline {16.4}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlstat}} command}{56}{section.16.4}%
+\contentsline {subsection}{\numberline {16.4.1}Synopsis}{56}{subsection.16.4.1}%
+\contentsline {subsection}{\numberline {16.4.2}Description}{57}{subsection.16.4.2}%
+\contentsline {subsection}{\numberline {16.4.3}Options}{57}{subsection.16.4.3}%
+\contentsline {subsection}{\numberline {16.4.4}Exit Codes}{57}{subsection.16.4.4}%
+\contentsline {subsection}{\numberline {16.4.5}See Also}{57}{subsection.16.4.5}%
+\contentsline {section}{\numberline {16.5}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlctrl}} command}{57}{section.16.5}%
+\contentsline {subsection}{\numberline {16.5.1}Synopsis}{57}{subsection.16.5.1}%
+\contentsline {subsection}{\numberline {16.5.2}Description}{58}{subsection.16.5.2}%
+\contentsline {subsection}{\numberline {16.5.3}Options}{58}{subsection.16.5.3}%
+\contentsline {subsection}{\numberline {16.5.4}Exit Codes}{58}{subsection.16.5.4}%
+\contentsline {subsection}{\numberline {16.5.5}See Also}{59}{subsection.16.5.5}%
+\contentsline {section}{\numberline {16.6}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlcp}} command}{59}{section.16.6}%
+\contentsline {subsection}{\numberline {16.6.1}Synopsis}{59}{subsection.16.6.1}%
+\contentsline {subsection}{\numberline {16.6.2}Description}{59}{subsection.16.6.2}%
+\contentsline {subsubsection}{Snapshotting vs Hardlinking}{59}{subsubsection*.28}%
+\contentsline {subsection}{\numberline {16.6.3}Options}{60}{subsection.16.6.3}%
+\contentsline {subsection}{\numberline {16.6.4}Exit Codes}{60}{subsection.16.6.4}%
+\contentsline {subsection}{\numberline {16.6.5}See Also}{60}{subsection.16.6.5}%
+\contentsline {section}{\numberline {16.7}The \sphinxstyleliteralstrong {\sphinxupquote {s3qlrm}} command}{60}{section.16.7}%
+\contentsline {subsection}{\numberline {16.7.1}Synopsis}{60}{subsection.16.7.1}%
+\contentsline {subsection}{\numberline {16.7.2}Description}{60}{subsection.16.7.2}%
+\contentsline {subsection}{\numberline {16.7.3}Options}{61}{subsection.16.7.3}%
+\contentsline {subsection}{\numberline {16.7.4}Exit Codes}{61}{subsection.16.7.4}%
+\contentsline {subsection}{\numberline {16.7.5}See Also}{61}{subsection.16.7.5}%
+\contentsline {section}{\numberline {16.8}The \sphinxstyleliteralstrong {\sphinxupquote {s3qllock}} command}{61}{section.16.8}%
+\contentsline {subsection}{\numberline {16.8.1}Synopsis}{61}{subsection.16.8.1}%
+\contentsline {subsection}{\numberline {16.8.2}Description}{61}{subsection.16.8.2}%
+\contentsline {subsection}{\numberline {16.8.3}Rationale}{62}{subsection.16.8.3}%
+\contentsline {subsection}{\numberline {16.8.4}Options}{62}{subsection.16.8.4}%
+\contentsline {subsection}{\numberline {16.8.5}Exit Codes}{62}{subsection.16.8.5}%
+\contentsline {subsection}{\numberline {16.8.6}See Also}{62}{subsection.16.8.6}%
+\contentsline {section}{\numberline {16.9}The \sphinxstyleliteralstrong {\sphinxupquote {umount.s3ql}} command}{63}{section.16.9}%
+\contentsline {subsection}{\numberline {16.9.1}Synopsis}{63}{subsection.16.9.1}%
+\contentsline {subsection}{\numberline {16.9.2}Description}{63}{subsection.16.9.2}%
+\contentsline {subsection}{\numberline {16.9.3}Options}{63}{subsection.16.9.3}%
+\contentsline {subsection}{\numberline {16.9.4}Exit Codes}{63}{subsection.16.9.4}%
+\contentsline {subsection}{\numberline {16.9.5}See Also}{64}{subsection.16.9.5}%
+\contentsline {section}{\numberline {16.10}The \sphinxstyleliteralstrong {\sphinxupquote {fsck.s3ql}} command}{64}{section.16.10}%
+\contentsline {subsection}{\numberline {16.10.1}Synopsis}{64}{subsection.16.10.1}%
+\contentsline {subsection}{\numberline {16.10.2}Description}{64}{subsection.16.10.2}%
+\contentsline {subsection}{\numberline {16.10.3}Options}{64}{subsection.16.10.3}%
+\contentsline {subsection}{\numberline {16.10.4}Exit Codes}{65}{subsection.16.10.4}%
+\contentsline {subsection}{\numberline {16.10.5}See Also}{65}{subsection.16.10.5}%
+\contentsline {section}{\numberline {16.11}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_oauth\_client}} command}{66}{section.16.11}%
+\contentsline {subsection}{\numberline {16.11.1}Synopsis}{66}{subsection.16.11.1}%
+\contentsline {subsection}{\numberline {16.11.2}Description}{66}{subsection.16.11.2}%
+\contentsline {subsection}{\numberline {16.11.3}Options}{66}{subsection.16.11.3}%
+\contentsline {subsection}{\numberline {16.11.4}Exit Codes}{66}{subsection.16.11.4}%
+\contentsline {subsection}{\numberline {16.11.5}See Also}{66}{subsection.16.11.5}%
+\contentsline {section}{\numberline {16.12}The \sphinxstyleliteralstrong {\sphinxupquote {s3ql\_verify}} command}{66}{section.16.12}%
+\contentsline {subsection}{\numberline {16.12.1}Synopsis}{66}{subsection.16.12.1}%
+\contentsline {subsection}{\numberline {16.12.2}Description}{67}{subsection.16.12.2}%
+\contentsline {subsection}{\numberline {16.12.3}Options}{67}{subsection.16.12.3}%
+\contentsline {subsection}{\numberline {16.12.4}Exit Codes}{67}{subsection.16.12.4}%
+\contentsline {subsection}{\numberline {16.12.5}See Also}{68}{subsection.16.12.5}%
+\contentsline {section}{\numberline {16.13}The \sphinxstyleliteralstrong {\sphinxupquote {pcp}} command}{68}{section.16.13}%
+\contentsline {subsection}{\numberline {16.13.1}Synopsis}{68}{subsection.16.13.1}%
+\contentsline {subsection}{\numberline {16.13.2}Description}{68}{subsection.16.13.2}%
+\contentsline {subsection}{\numberline {16.13.3}Options}{68}{subsection.16.13.3}%
+\contentsline {subsection}{\numberline {16.13.4}Exit Codes}{69}{subsection.16.13.4}%
+\contentsline {subsection}{\numberline {16.13.5}See Also}{69}{subsection.16.13.5}%
+\contentsline {section}{\numberline {16.14}The \sphinxstyleliteralstrong {\sphinxupquote {expire\_backups}} command}{69}{section.16.14}%
+\contentsline {subsection}{\numberline {16.14.1}Synopsis}{69}{subsection.16.14.1}%
+\contentsline {subsection}{\numberline {16.14.2}Description}{69}{subsection.16.14.2}%
+\contentsline {subsection}{\numberline {16.14.3}Options}{70}{subsection.16.14.3}%
+\contentsline {subsection}{\numberline {16.14.4}Exit Codes}{70}{subsection.16.14.4}%
+\contentsline {subsection}{\numberline {16.14.5}See Also}{71}{subsection.16.14.5}%
+\contentsline {chapter}{\numberline {17}Further Resources / Getting Help}{73}{chapter.17}%
+\contentsline {chapter}{\numberline {18}Implementation Details}{75}{chapter.18}%
+\contentsline {section}{\numberline {18.1}Metadata Storage}{75}{section.18.1}%
+\contentsline {section}{\numberline {18.2}Data Storage}{75}{section.18.2}%
+\contentsline {section}{\numberline {18.3}Data De-Duplication}{76}{section.18.3}%
+\contentsline {section}{\numberline {18.4}Caching}{76}{section.18.4}%
+\contentsline {section}{\numberline {18.5}Eventual Consistency Handling}{76}{section.18.5}%
+\contentsline {section}{\numberline {18.6}Encryption}{76}{section.18.6}%
diff --git a/doc/latex/python.ist b/doc/latex/python.ist
index 7a1c06f..70536a6 100644
--- a/doc/latex/python.ist
+++ b/doc/latex/python.ist
@@ -4,6 +4,9 @@ heading_prefix " \\bigletter "
preamble "\\begin{sphinxtheindex}
\\let\\bigletter\\sphinxstyleindexlettergroup
+\\let\\spxpagem \\sphinxstyleindexpagemain
+\\let\\spxentry \\sphinxstyleindexentry
+\\let\\spxextra \\sphinxstyleindexextra
"
diff --git a/doc/latex/sphinx.sty b/doc/latex/sphinx.sty
index fc75bf3..de6664c 100644
--- a/doc/latex/sphinx.sty
+++ b/doc/latex/sphinx.sty
@@ -6,7 +6,7 @@
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{sphinx}[2018/07/18 v1.8 LaTeX package (Sphinx markup)]
+\ProvidesPackage{sphinx}[2019/01/12 v1.8.4 LaTeX package (Sphinx markup)]
% provides \ltx@ifundefined
% (many packages load ltxcmds: graphicx does for pdftex and lualatex but
@@ -82,11 +82,26 @@
% User interface to set-up whitespace before and after tables:
\newcommand*\sphinxtablepre {0pt}%
\newcommand*\sphinxtablepost{\medskipamount}%
+% Space from caption baseline to top of table or frame of literal-block
\newcommand*\sphinxbelowcaptionspace{.5\sphinxbaselineskip}%
% as one can not use \baselineskip from inside longtable (it is zero there)
% we need \sphinxbaselineskip, which defaults to \baselineskip
\def\sphinxbaselineskip{\baselineskip}%
-% These commands are inserted by the table templates
+% The following is to ensure that, whether tabular(y) or longtable:
+% - if a caption is on top of table:
+% a) the space between its last baseline and the top rule of table is
+% exactly \sphinxbelowcaptionspace
+% b) the space from last baseline of previous text to first baseline of
+% caption is exactly \parskip+\baselineskip+ height of a strut.
+% c) the caption text will wrap at width \LTcapwidth (4in)
+% - make sure this works also if "caption" package is loaded by user
+% (with its width or margin option taking place of \LTcapwidth role)
+% TODO: obtain same for caption of literal block: a) & c) DONE, b) TO BE DONE
+%
+% To modify space below such top caption, adjust \sphinxbelowcaptionspace
+% To add or remove space above such top caption, adjust \sphinxtablepre:
+% notice that \abovecaptionskip, \belowcaptionskip, \LTpre are **ignored**
+% A. Table with longtable
\def\sphinxatlongtablestart
{\par
\vskip\parskip
@@ -95,48 +110,76 @@
\LTpre\z@skip\LTpost\z@skip % set to zero longtable's own skips
\edef\sphinxbaselineskip{\dimexpr\the\dimexpr\baselineskip\relax\relax}%
}%
-\def\sphinxatlongtableend{\prevdepth\z@\vskip\sphinxtablepost\relax}%
+% Compatibility with caption package
+\def\sphinxthelongtablecaptionisattop{%
+ \spx@ifcaptionpackage{\noalign{\vskip-\belowcaptionskip}}{}%
+}%
+% Achieves exactly \sphinxbelowcaptionspace below longtable caption
\def\sphinxlongtablecapskipadjust
- {\dimexpr-\dp\strutbox-\sphinxbaselineskip+\sphinxbelowcaptionspace\relax}%
-% Now for tables not using longtable
-\def\sphinxattablestart
- {\par
- \vskip\dimexpr\sphinxtablepre\relax
- }%
+ {\dimexpr-\dp\strutbox
+ -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}%
+ +\sphinxbelowcaptionspace\relax}%
+\def\sphinxatlongtableend{\prevdepth\z@\vskip\sphinxtablepost\relax}%
+% B. Table with tabular or tabulary
+\def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}%
\let\sphinxattableend\sphinxatlongtableend
-% longtable's wraps captions to a maximal width of \LTcapwidth
-% so we do the same for all tables
+% This is used by tabular and tabulary templates
\newcommand*\sphinxcapstartof[1]{%
\vskip\parskip
\vbox{}% force baselineskip for good positioning by capstart of hyperanchor
+ % hyperref puts the anchor 6pt above this baseline; in case of caption
+ % this baseline will be \ht\strutbox above first baseline of caption
\def\@captype{#1}%
\capstart
-% move back vertically to compensate space inserted by next paragraph
+% move back vertically, as tabular (or its caption) will compensate
\vskip-\baselineskip\vskip-\parskip
}%
-% use \LTcapwidth (default is 4in) to wrap caption (if line width is bigger)
-\newcommand\sphinxcaption[2][\LTcapwidth]{%
+\def\sphinxthecaptionisattop{% locate it after \sphinxcapstartof
+ \spx@ifcaptionpackage
+ {\caption@setposition{t}%
+ \vskip\baselineskip\vskip\parskip % undo those from \sphinxcapstartof
+ \vskip-\belowcaptionskip % anticipate caption package skip
+ % caption package uses a \vbox, not a \vtop, so "single line" case
+ % gives different result from "multi-line" without this:
+ \nointerlineskip
+ }%
+ {}%
+}%
+\def\sphinxthecaptionisatbottom{% (not finalized; for template usage)
+ \spx@ifcaptionpackage{\caption@setposition{b}}{}%
+}%
+% The aim of \sphinxcaption is to apply to tabular(y) the maximal width
+% of caption as done by longtable
+\def\sphinxtablecapwidth{\LTcapwidth}%
+\newcommand\sphinxcaption{\@dblarg\spx@caption}%
+\long\def\spx@caption[#1]#2{%
\noindent\hb@xt@\linewidth{\hss
- \vtop{\@tempdima\dimexpr#1\relax
+ \vtop{\@tempdima\dimexpr\sphinxtablecapwidth\relax
% don't exceed linewidth for the caption width
\ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi
-% longtable ignores \abovecaptionskip/\belowcaptionskip, so add hooks here
-% to uniformize control of caption distance to tables
- \abovecaptionskip\sphinxabovecaptionskip
- \belowcaptionskip\sphinxbelowcaptionskip
- \caption[{#2}]%
+% longtable ignores \abovecaptionskip/\belowcaptionskip, so do the same here
+ \abovecaptionskip\sphinxabovecaptionskip % \z@skip
+ \belowcaptionskip\sphinxbelowcaptionskip % \z@skip
+ \caption[{#1}]%
{\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}%
}\hss}%
\par\prevdepth\dp\strutbox
}%
-\def\spx@abovecaptionskip{\abovecaptionskip}
-\newcommand*\sphinxabovecaptionskip{\z@skip}
-\newcommand*\sphinxbelowcaptionskip{\z@skip}
-
-\newcommand\sphinxaftercaption
-{% this default definition serves with a caption *above* a table, to make sure
- % its last baseline is \sphinxbelowcaptionspace above table top
- \nobreak
+\def\sphinxabovecaptionskip{\z@skip}% Do not use! Flagged for removal
+\def\sphinxbelowcaptionskip{\z@skip}% Do not use! Flagged for removal
+% This wrapper of \abovecaptionskip is used in sphinxVerbatim for top
+% caption, and with another value in sphinxVerbatimintable
+% TODO: To unify space above caption of a code-block with the one above
+% caption of a table/longtable, \abovecaptionskip must not be used
+% This auxiliary will get renamed and receive a different meaning
+% in future.
+\def\spx@abovecaptionskip{\abovecaptionskip}%
+% Achieve \sphinxbelowcaptionspace below a caption located above a tabular
+% or a tabulary
+\newcommand\sphinxaftertopcaption
+{%
+ \spx@ifcaptionpackage
+ {\par\prevdepth\dp\strutbox\nobreak\vskip-\abovecaptionskip}{\nobreak}%
\vskip\dimexpr\sphinxbelowcaptionspace\relax
\vskip-\baselineskip\vskip-\parskip
}%
@@ -165,6 +208,9 @@
% For highlighted code.
\RequirePackage{fancyvrb}
\define@key{FV}{hllines}{\def\sphinx@verbatim@checkifhl##1{\in@{, ##1,}{#1}}}
+% sphinxVerbatim must be usable by third party without requiring hllines set-up
+\def\sphinxresetverbatimhllines{\def\sphinx@verbatim@checkifhl##1{\in@false}}
+\sphinxresetverbatimhllines
% For hyperlinked footnotes in tables; also for gathering footnotes from
% topic and warning blocks. Also to allow code-blocks in footnotes.
\RequirePackage{footnotehyper-sphinx}
@@ -174,7 +220,13 @@
% For floating figures in the text. Better to load after float.
\RequirePackage{wrapfig}
% Separate paragraphs by space by default.
-\RequirePackage{parskip}
+\IfFileExists{parskip-2001-04-09.sty}% since September 2018 TeXLive update
+% new parskip.sty, but let it rollback to old one.
+% hopefully TeX installation not broken and LaTeX kernel not too old
+ {\RequirePackage{parskip}[=v1]}
+% standard one from 1989. Admittedly \section of article/book gives possibly
+% anomalous spacing, but we can't require September 2018 release for some time.
+ {\RequirePackage{parskip}}
% For parsed-literal blocks.
\RequirePackage{alltt}
% Display "real" single quotes in literal blocks.
@@ -499,15 +551,31 @@
\sloppy
\hbadness = 5000 % don't print trivial gripes
-\pagestyle{empty} % start this way
-
+% Use \pagestyle{normal} as the primary pagestyle for text.
% Redefine the 'normal' header/footer style when using "fancyhdr" package:
-% Note: this presupposes "twoside". If "oneside" class option, there will be warnings.
-\ltx@ifundefined{fancyhf}{}{
- % Use \pagestyle{normal} as the primary pagestyle for text.
- \fancypagestyle{normal}{
+\@ifpackageloaded{fancyhdr}{%
+ \ltx@ifundefined{c@chapter}
+ {% no \chapter, "howto" (non-Japanese) docclass
+ \fancypagestyle{plain}{
+ \fancyhf{}
+ \fancyfoot[C]{{\py@HeaderFamily\thepage}}
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}
+ }
+ % Same as 'plain', this way we can use it in template
+ % FIXME: shouldn't this have a running header with Name and Release like 'manual'?
+ \fancypagestyle{normal}{
+ \fancyhf{}
+ \fancyfoot[C]{{\py@HeaderFamily\thepage}}
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}
+ }
+ }%
+ {% classes with \chapter command
+ \fancypagestyle{normal}{
\fancyhf{}
-% (for \py@HeaderFamily cf "TITLES")
+ % FIXME: this presupposes "twoside".
+ % If "oneside" class option, there are warnings in LaTeX log.
\fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
\fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
\fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
@@ -517,17 +585,24 @@
% define chaptermark with \@chappos when \@chappos is available for Japanese
\ltx@ifundefined{@chappos}{}
{\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}}
- }
+ }
% Update the plain style so we get the page number & footer line,
% but not a chapter or section title. This is to keep the first
- % page of a chapter and the blank page between chapters `clean.'
- \fancypagestyle{plain}{
+ % page of a chapter `clean.'
+ \fancypagestyle{plain}{
\fancyhf{}
\fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.4pt}
+ }
+ }
+ }
+ {% no fancyhdr: memoir class
+ % Provide default for 'normal' style simply as an alias of 'plain' style
+ % This way we can use \pagestyle{normal} in LaTeX template
+ \def\ps@normal{\ps@plain}
+ % Users of memoir class are invited to redefine 'normal' style in preamble
}
-}
% geometry
\ifx\kanjiskip\@undefined
@@ -647,10 +722,38 @@
\setbox\spx@image@box\box\voidb@x % clear memory
\includegraphics[#1,width=\linewidth]{#2}%
\else
+ \setbox\spx@image@box\box\voidb@x % clear memory
\includegraphics[#1]{#2}%
\fi
\fi
}
+% \sphinxsafeincludegraphics resizes images larger than the line width,
+% or taller than about the text height (whether or not height/width options
+% were used). This is requested to avoid a crash with \MakeFramed as used by
+% sphinxShadowBox (topic/contents) and sphinxheavybox (admonitions), and also
+% by sphinxVerbatim (but a priori no image inclusion there).
+\newdimen\spx@image@maxheight
+% default maximal setting will get reduced by sphinxShadowBox/sphinxheavybox
+\AtBeginDocument{\spx@image@maxheight\textheight}
+\newcommand*{\sphinxsafeincludegraphics}[2][]{%
+ \gdef\spx@includegraphics@options{#1}%
+ \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}%
+ \in@false
+ \ifdim \wd\spx@image@box>\linewidth
+ \g@addto@macro\spx@includegraphics@options{,width=\linewidth}%
+ \in@true
+ \fi
+ % no rotation, no need to worry about depth
+ \ifdim \ht\spx@image@box>\spx@image@maxheight
+ \g@addto@macro\spx@includegraphics@options{,height=\spx@image@maxheight}%
+ \in@true
+ \fi
+ \ifin@
+ \g@addto@macro\spx@includegraphics@options{,keepaspectratio}%
+ \fi
+ \setbox\spx@image@box\box\voidb@x % clear memory
+ \expandafter\includegraphics\expandafter[\spx@includegraphics@options]{#2}%
+}%
%% FIGURE IN TABLE
@@ -660,8 +763,22 @@
\sphinxsetvskipsforfigintablecaption
\begin{minipage}{#1}%
}{\end{minipage}}
-% store original \caption macro for use with figures in longtable and tabulary
-\AtBeginDocument{\let\spx@originalcaption\caption}
+% store the original \caption macro for usage with figures inside longtable
+% and tabulary cells. Make sure we get the final \caption in presence of
+% caption package, whether the latter was loaded before or after sphinx.
+\AtBeginDocument{%
+ \let\spx@originalcaption\caption
+ \@ifpackageloaded{caption}
+ {\let\spx@ifcaptionpackage\@firstoftwo
+ \caption@AtBeginDocument*{\let\spx@originalcaption\caption}%
+% in presence of caption package, drop our own \sphinxcaption whose aim was to
+% ensure same width of caption to all kinds of tables (tabular(y), longtable),
+% because caption package has its own width (or margin) option
+ \def\sphinxcaption{\caption}%
+ }%
+ {\let\spx@ifcaptionpackage\@secondoftwo}%
+}
+% tabulary expands twice contents, we need to prevent double counter stepping
\newcommand*\sphinxfigcaption
{\ifx\equation$%$% this is trick to identify tabulary first pass
\firstchoice@false\else\firstchoice@true\fi
@@ -1026,17 +1143,28 @@
\vskip\spx@abovecaptionskip
\def\sphinxVerbatim@Before
{\sphinxVerbatim@Title\nointerlineskip
- \kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace\relax}%
+ \kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace
+ % if no frame (code-blocks inside table cells), remove
+ % the "verbatimsep" whitespace from the top (better visually)
+ \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi
+ % caption package adds \abovecaptionskip vspace, remove it
+ \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax}%
\else
\vskip\sphinxverbatimsmallskipamount
\def\sphinxVerbatim@After
- {\nointerlineskip\kern\dp\strutbox\sphinxVerbatim@Title}%
+ {\nointerlineskip\kern\dimexpr\dp\strutbox
+ \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi
+ \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax
+ \sphinxVerbatim@Title}%
\fi
\def\@captype{literalblock}%
\capstart
% \sphinxVerbatimTitle must reset color
\setbox\sphinxVerbatim@TitleBox
\hbox{\begin{minipage}{\linewidth}%
+ % caption package may detect wrongly if top or bottom, so we help it
+ \spx@ifcaptionpackage
+ {\caption@setposition{\spx@opt@literalblockcappos}}{}%
\sphinxVerbatimTitle
\end{minipage}}%
\fi
@@ -1245,6 +1373,12 @@
% could nest if LaTeX writer authorized it
\newenvironment{sphinxShadowBox}
{\def\FrameCommand {\spx@ShadowFBox }%
+ \advance\spx@image@maxheight
+ -\dimexpr2\sphinxshadowrule
+ +2\sphinxshadowsep
+ +\sphinxshadowsize
+ +\baselineskip\relax
+ \let\sphinxincludegraphics\sphinxsafeincludegraphics
% configure framed.sty not to add extra vertical spacing
\ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}%
% the \trivlist will add the vertical spacing on top and bottom which is
@@ -1327,6 +1461,11 @@
\newenvironment{sphinxheavybox}{\par
\setlength{\FrameRule}{\spx@notice@border}%
\setlength{\FrameSep}{\dimexpr.6\baselineskip-\FrameRule\relax}
+ \advance\spx@image@maxheight
+ -\dimexpr2\FrameRule
+ +2\FrameSep
+ +\baselineskip\relax % will happen again if nested, needed indeed!
+ \let\sphinxincludegraphics\sphinxsafeincludegraphics
% configure framed.sty's parameters to obtain same vertical spacing
% as for "light" boxes. We need for this to manually insert parskip glue and
% revert a skip done by framed before the frame.
@@ -1600,8 +1739,11 @@
% additional customizable styling
\def\sphinxstyleindexentry #1{\texttt{#1}}
-\def\sphinxstyleindexextra #1{ \emph{(#1)}}
+\def\sphinxstyleindexextra #1{ (\emph{#1})}
\def\sphinxstyleindexpageref #1{, \pageref{#1}}
+\def\sphinxstyleindexpagemain#1{\textbf{#1}}
+\protected\def\spxentry#1{#1}% will get \let to \sphinxstyleindexentry in index
+\protected\def\spxextra#1{#1}% will get \let to \sphinxstyleindexextra in index
\def\sphinxstyleindexlettergroup #1%
{{\Large\sffamily#1}\nopagebreak\vspace{1mm}}
\def\sphinxstyleindexlettergroupDefault #1%
diff --git a/doc/latex/sphinx.xdy b/doc/latex/sphinx.xdy
index 17b0656..0d02ef3 100644
--- a/doc/latex/sphinx.xdy
+++ b/doc/latex/sphinx.xdy
@@ -3,11 +3,12 @@
;; Unfortunately xindy is out-of-the-box hyperref-incompatible. This
;; configuration is a workaround, which requires to pass option
;; hyperindex=false to hyperref.
-;; textit and emph not currently used by Sphinx LaTeX writer.
-(define-attributes (("textbf" "textit" "emph" "default")))
+;; textit and emph not currently used, spxpagem replaces former textbf
+(define-attributes (("textbf" "textit" "emph" "spxpagem" "default")))
(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf")
(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit")
(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph")
+(markup-locref :open "\spxpagem{\hyperpage{" :close "}}" :attr "spxpagem")
(markup-locref :open "\hyperpage{" :close "}" :attr "default")
(require "numeric-sort.xdy")
@@ -193,6 +194,9 @@
(markup-index :open "\begin{sphinxtheindex}
\let\lettergroup\sphinxstyleindexlettergroup
\let\lettergroupDefault\sphinxstyleindexlettergroupDefault
+\let\spxpagem\sphinxstyleindexpagemain
+\let\spxentry\sphinxstyleindexentry
+\let\spxextra\sphinxstyleindexextra
"
:close "
diff --git a/doc/latex/sphinxhighlight.sty b/doc/latex/sphinxhighlight.sty
index 464a9ad..d62d880 100644
--- a/doc/latex/sphinxhighlight.sty
+++ b/doc/latex/sphinxhighlight.sty
@@ -13,73 +13,73 @@
\PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-\expandafter\def\csname PYG@tok@ss\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.67,0.40,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@mi\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.87}{##1}}}
-\expandafter\def\csname PYG@tok@nn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
-\expandafter\def\csname PYG@tok@m\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
-\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.80}{##1}}}
-\expandafter\def\csname PYG@tok@mb\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
-\expandafter\def\csname PYG@tok@sa\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@kc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@si\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{0.93,0.93,0.93}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@w\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
+\expandafter\def\csname PYG@tok@c\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@cp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.33,0.47,0.60}{##1}}}
\expandafter\def\csname PYG@tok@cs\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.80,0.00,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@nl\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.60,0.47,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@fm\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.40,0.73}{##1}}}
-\expandafter\def\csname PYG@tok@nv\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.60,0.40,0.20}{##1}}}
-\expandafter\def\csname PYG@tok@nc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.73,0.00,0.40}{##1}}}
-\expandafter\def\csname PYG@tok@gs\endcsname{\let\PYG@bf=\textbf}
-\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@go\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@s\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@k\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
\expandafter\def\csname PYG@tok@kp\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.20,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@bp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@cp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.33,0.47,0.60}{##1}}}
-\expandafter\def\csname PYG@tok@nt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.47,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@gp\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
-\expandafter\def\csname PYG@tok@cpf\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@mf\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
-\expandafter\def\csname PYG@tok@sr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.00}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,1.00}{\strut ##1}}}
\expandafter\def\csname PYG@tok@kt\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.60}{##1}}}
-\expandafter\def\csname PYG@tok@gt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
+\expandafter\def\csname PYG@tok@o\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}}
\expandafter\def\csname PYG@tok@ow\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
\expandafter\def\csname PYG@tok@nf\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.40,0.73}{##1}}}
-\expandafter\def\csname PYG@tok@sb\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@c\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@nc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.73,0.00,0.40}{##1}}}
+\expandafter\def\csname PYG@tok@nn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
+\expandafter\def\csname PYG@tok@ne\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@nv\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.60,0.40,0.20}{##1}}}
+\expandafter\def\csname PYG@tok@vi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.73}{##1}}}
+\expandafter\def\csname PYG@tok@vc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.40,0.60}{##1}}}
+\expandafter\def\csname PYG@tok@vg\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.87,0.47,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@no\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.20,0.40}{##1}}}
+\expandafter\def\csname PYG@tok@nl\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.60,0.47,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@ni\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.80}{##1}}}
+\expandafter\def\csname PYG@tok@nt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.47,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@nd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
+\expandafter\def\csname PYG@tok@s\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
\expandafter\def\csname PYG@tok@sc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
-\expandafter\def\csname PYG@tok@mo\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.27,0.00,0.93}{##1}}}
-\expandafter\def\csname PYG@tok@k\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@s2\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@gi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
\expandafter\def\csname PYG@tok@sd\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.87,0.27,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@mh\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.33,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@cm\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@w\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
+\expandafter\def\csname PYG@tok@si\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{0.93,0.93,0.93}{\strut ##1}}}
\expandafter\def\csname PYG@tok@se\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@sr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.00}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,1.00}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@ss\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.67,0.40,0.00}{##1}}}
\expandafter\def\csname PYG@tok@sx\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.87,0.13,0.00}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@kn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@vi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.73}{##1}}}
+\expandafter\def\csname PYG@tok@m\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
+\expandafter\def\csname PYG@tok@mi\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.87}{##1}}}
+\expandafter\def\csname PYG@tok@mf\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
+\expandafter\def\csname PYG@tok@mh\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.33,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@mo\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.27,0.00,0.93}{##1}}}
+\expandafter\def\csname PYG@tok@gh\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
\expandafter\def\csname PYG@tok@gu\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
-\expandafter\def\csname PYG@tok@gr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
\expandafter\def\csname PYG@tok@gd\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@ni\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@vg\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.87,0.47,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@ne\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@il\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.87}{##1}}}
+\expandafter\def\csname PYG@tok@gi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@gr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
\expandafter\def\csname PYG@tok@ge\endcsname{\let\PYG@it=\textit}
+\expandafter\def\csname PYG@tok@gs\endcsname{\let\PYG@bf=\textbf}
+\expandafter\def\csname PYG@tok@gp\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
+\expandafter\def\csname PYG@tok@go\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@gt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
+\expandafter\def\csname PYG@tok@err\endcsname{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.67,0.67}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@kc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
\expandafter\def\csname PYG@tok@kd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
+\expandafter\def\csname PYG@tok@kn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
\expandafter\def\csname PYG@tok@kr\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@nd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
-\expandafter\def\csname PYG@tok@sh\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@o\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}}
-\expandafter\def\csname PYG@tok@no\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.20,0.40}{##1}}}
-\expandafter\def\csname PYG@tok@c1\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@vc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.40,0.60}{##1}}}
-\expandafter\def\csname PYG@tok@dl\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@bp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
+\expandafter\def\csname PYG@tok@fm\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.40,0.73}{##1}}}
\expandafter\def\csname PYG@tok@vm\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.60,0.40,0.20}{##1}}}
-\expandafter\def\csname PYG@tok@ch\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@gh\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
+\expandafter\def\csname PYG@tok@sa\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@sb\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@dl\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@s2\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@sh\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
\expandafter\def\csname PYG@tok@s1\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@err\endcsname{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.67,0.67}{\strut ##1}}}
+\expandafter\def\csname PYG@tok@mb\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
+\expandafter\def\csname PYG@tok@il\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.87}{##1}}}
+\expandafter\def\csname PYG@tok@ch\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@cm\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@cpf\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
+\expandafter\def\csname PYG@tok@c1\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
\def\PYGZbs{\char`\\}
\def\PYGZus{\char`\_}
diff --git a/doc/latex/sphinxhowto.cls b/doc/latex/sphinxhowto.cls
index 8b0530a..6e48585 100644
--- a/doc/latex/sphinxhowto.cls
+++ b/doc/latex/sphinxhowto.cls
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{sphinxhowto}[2017/03/26 v1.6 Document class (Sphinx HOWTO)]
+\ProvidesClass{sphinxhowto}[2018/12/22 v1.8.3 Document class (Sphinx howto)]
% 'oneside' option overriding the 'twoside' default
\newif\if@oneside
@@ -30,7 +30,7 @@
% Change the title page to look a bit better, and fit in with the fncychap
% ``Bjarne'' style a bit better.
%
-\renewcommand{\maketitle}{%
+\newcommand{\sphinxmaketitle}{%
\noindent\rule{\textwidth}{1pt}\par
\begingroup % for PDF information dictionary
\def\endgraf{ }\def\and{\& }%
@@ -66,12 +66,7 @@
\vspace{12pt}
}
-\@ifundefined{fancyhf}{
- \pagestyle{plain}}{
- \pagestyle{normal}} % start this way; change for
-\pagenumbering{arabic} % ToC & chapters
-
-\thispagestyle{empty}
+\pagenumbering{arabic}
% Fix the bibliography environment to add an entry to the Table of
% Contents.
diff --git a/doc/latex/sphinxmanual.cls b/doc/latex/sphinxmanual.cls
index 94c71d7..1ab80d2 100644
--- a/doc/latex/sphinxmanual.cls
+++ b/doc/latex/sphinxmanual.cls
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{sphinxmanual}[2017/03/26 v1.6 Document class (Sphinx manual)]
+\ProvidesClass{sphinxmanual}[2018/12/22 v1.8.3 Document class (Sphinx manual)]
% chapters starting at odd pages (overridden by 'openany' document option)
\PassOptionsToClass{openright}{\sphinxdocclass}
@@ -33,7 +33,7 @@
% Change the title page to look a bit better, and fit in with the fncychap
% ``Bjarne'' style a bit better.
%
-\renewcommand{\maketitle}{%
+\newcommand{\sphinxmaketitle}{%
\let\spx@tempa\relax
\ifHy@pageanchor\def\spx@tempa{\Hy@pageanchortrue}\fi
\hypersetup{pageanchor=false}% avoid duplicate destination warnings
@@ -69,13 +69,14 @@
\setcounter{footnote}{0}%
\let\thanks\relax\let\maketitle\relax
%\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
+ \clearpage
+ \ifdefined\sphinxbackoftitlepage\sphinxbackoftitlepage\fi
\if@openright\cleardoublepage\else\clearpage\fi
\spx@tempa
}
\newcommand{\sphinxtableofcontents}{%
\pagenumbering{roman}%
- \pagestyle{plain}%
\begingroup
\parskip \z@skip
\tableofcontents
@@ -83,7 +84,6 @@
% before resetting page counter, let's do the right thing.
\if@openright\cleardoublepage\else\clearpage\fi
\pagenumbering{arabic}%
- \ifdefined\fancyhf\pagestyle{normal}\fi
}
% This is needed to get the width of the section # area wide enough in the
diff --git a/doc/man/fsck.s3ql.1 b/doc/man/fsck.s3ql.1
index 4feb324..103270e 100644
--- a/doc/man/fsck.s3ql.1
+++ b/doc/man/fsck.s3ql.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "FSCK.S3QL" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "FSCK.S3QL" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
fsck.s3ql \- Check an S3QL file system for errors
.
diff --git a/doc/man/mkfs.s3ql.1 b/doc/man/mkfs.s3ql.1
index 3543995..4be0546 100644
--- a/doc/man/mkfs.s3ql.1
+++ b/doc/man/mkfs.s3ql.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "MKFS.S3QL" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "MKFS.S3QL" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
mkfs.s3ql \- Create an S3QL file system
.
diff --git a/doc/man/mount.s3ql.1 b/doc/man/mount.s3ql.1
index a16185f..96d86bb 100644
--- a/doc/man/mount.s3ql.1
+++ b/doc/man/mount.s3ql.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "MOUNT.S3QL" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "MOUNT.S3QL" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
mount.s3ql \- Mount an S3QL file system
.
diff --git a/doc/man/s3ql_oauth_client.1 b/doc/man/s3ql_oauth_client.1
index f05f33e..c5cd0aa 100644
--- a/doc/man/s3ql_oauth_client.1
+++ b/doc/man/s3ql_oauth_client.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QL_OAUTH_CLIENT" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QL_OAUTH_CLIENT" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3ql_oauth_client \- Obtain Google Storage OAuth2 tokens
.
@@ -48,7 +48,7 @@ sure to consult the full documentation (rather than just the man pages
which only briefly document the available userspace commands).
.sp
The \fBs3ql_oauth_client\fP command may be used to obtain OAuth2 authentication
-tokens for use with Google Storage. It requests "user code" from
+tokens for use with Google Storage. It requests “user code” from
Google which has to be pasted into the browser to complete the
authentication process interactively. Once authentication in the
browser has been completed, \fBs3ql_oauth_client\fP displays the OAuth2 refresh
@@ -60,37 +60,6 @@ backend.
.SH OPTIONS
.sp
The \fBs3ql_oauth_client\fP command accepts the following options:
-.INDENT 0.0
-.INDENT 3.5
-.INDENT 0.0
-.TP
-.BI \-\-log \ <target>
-Destination for log messages. Specify \fBnone\fP for
-standard output or \fBsyslog\fP for the system logging
-daemon. Anything else will be interpreted as a file
-name. Log files will be rotated when they reach 1 MiB,
-and at most 5 old log files will be kept. Default:
-\fBNone\fP
-.TP
-.BI \-\-debug\-modules \ <modules>
-Activate debugging output from specified modules (use
-commas to separate multiple modules). Debug messages
-will be written to the target specified by the
-\fB\-\-log\fP option.
-.TP
-.B \-\-debug
-Activate debugging output from all S3QL modules. Debug
-messages will be written to the target specified by
-the \fB\-\-log\fP option.
-.TP
-.B \-\-quiet
-be really quiet
-.TP
-.B \-\-version
-just print program version and exit
-.UNINDENT
-.UNINDENT
-.UNINDENT
.SH EXIT CODES
.sp
\fBs3ql_oauth_client\fP may terminate with the following exit codes:
diff --git a/doc/man/s3ql_verify.1 b/doc/man/s3ql_verify.1
index c15975a..fcd269c 100644
--- a/doc/man/s3ql_verify.1
+++ b/doc/man/s3ql_verify.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QL_VERIFY" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QL_VERIFY" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3ql_verify \- Verify data in an S3QL file system
.
diff --git a/doc/man/s3qladm.1 b/doc/man/s3qladm.1
index 505d6f5..0eb143d 100644
--- a/doc/man/s3qladm.1
+++ b/doc/man/s3qladm.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QLADM" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QLADM" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3qladm \- Manage S3QL file systems
.
diff --git a/doc/man/s3qlcp.1 b/doc/man/s3qlcp.1
index 19e8776..adfc58a 100644
--- a/doc/man/s3qlcp.1
+++ b/doc/man/s3qlcp.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QLCP" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QLCP" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3qlcp \- Copy-on-write replication on S3QL file systems
.
diff --git a/doc/man/s3qlctrl.1 b/doc/man/s3qlctrl.1
index 55a4903..e31e1b2 100644
--- a/doc/man/s3qlctrl.1
+++ b/doc/man/s3qlctrl.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QLCTRL" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QLCTRL" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3qlctrl \- Control a mounted S3QL file system
.
diff --git a/doc/man/s3qllock.1 b/doc/man/s3qllock.1
index 004c365..3645ec6 100644
--- a/doc/man/s3qllock.1
+++ b/doc/man/s3qllock.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QLLOCK" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QLLOCK" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3qllock \- Make trees on an S3QL file system immutable
.
diff --git a/doc/man/s3qlrm.1 b/doc/man/s3qlrm.1
index 2f3d95f..f37a255 100644
--- a/doc/man/s3qlrm.1
+++ b/doc/man/s3qlrm.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QLRM" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QLRM" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3qlrm \- Fast tree removal on S3QL file systems
.
diff --git a/doc/man/s3qlstat.1 b/doc/man/s3qlstat.1
index 42a3c46..59bfa22 100644
--- a/doc/man/s3qlstat.1
+++ b/doc/man/s3qlstat.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "S3QLSTAT" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "S3QLSTAT" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
s3qlstat \- Gather S3QL file system statistics
.
diff --git a/doc/man/umount.s3ql.1 b/doc/man/umount.s3ql.1
index fc1d713..bf5469a 100644
--- a/doc/man/umount.s3ql.1
+++ b/doc/man/umount.s3ql.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "UMOUNT.S3QL" "1" "Jul 17, 2019" "3.2" "S3QL"
+.TH "UMOUNT.S3QL" "1" "Sep 08, 2019" "3.3" "S3QL"
.SH NAME
umount.s3ql \- Unmount an S3QL file system
.
diff --git a/doc/manual.pdf b/doc/manual.pdf
index 4d1351b..1bb8ac4 100644
--- a/doc/manual.pdf
+++ b/doc/manual.pdf
Binary files differ
diff --git a/rst/backends.rst b/rst/backends.rst
index a8ad9f1..75b621a 100644
--- a/rst/backends.rst
+++ b/rst/backends.rst
@@ -195,12 +195,13 @@ authentication, the storage URL is ::
swift://<hostname>[:<port>]/<container>[/<prefix>]
-for Keystone (v2) authentication, the storage URL is ::
+for Keystone (v2 and v3) authentication, the storage URL is ::
swiftks://<hostname>[:<port>]/<region>:<container>[/<prefix>]
Note that when using Keystone authentication, you can (and have to)
-specify the storage region of the container as well.
+specify the storage region of the container as well. Also note that when
+using Keystone v3 authentication, the `domain` option is required.
In both cases, *hostname* name should be the name of the
authentication server. The storage container must already exist (most
@@ -256,6 +257,21 @@ The OpenStack backend accepts the following backend options:
use the least common denominator of supported Swift versions and
configurations.
+.. option:: domain
+
+ If this option is specified, S3QL will use the Keystone v3 API. The
+ default domain for OpenStack installations is `Default`. If this
+ option is specified without setting the `project-domain` option, this
+ will be used for both the project and the user domain. Note: some
+ instances of the Keystone v3 API prefer the use of UUIDs rather than
+ names for tenant (called project in newer OpenStack versions), as
+ well as domains.
+
+.. option:: project-domain
+ In simple cases, the project domain will be the same as the auth
+ domain. If the `project-domain` option is not specified, it will be
+ assumed to be the same as the user domain.
+
.. __: http://tools.ietf.org/html/rfc2616#section-8.2.3
.. _OpenStack: http://www.openstack.org/
.. _Swift: http://openstack.org/projects/storage/
diff --git a/rst/man/ctrl.rst b/rst/man/ctrl.rst
index 9d3249a..dcba678 100644
--- a/rst/man/ctrl.rst
+++ b/rst/man/ctrl.rst
@@ -68,7 +68,7 @@ Options
The |command| command also accepts the following options, no matter
what specific action is being invoked:
-.. pipeinclude:: python ../../bin/s3qlctrl --help
+.. pipeinclude:: ../../bin/s3qlctrl --help
:start-after: show this help message and exit
diff --git a/src/s3ql.egg-info/PKG-INFO b/src/s3ql.egg-info/PKG-INFO
index 2c96bfe..32738ed 100644
--- a/src/s3ql.egg-info/PKG-INFO
+++ b/src/s3ql.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: s3ql
-Version: 3.2
+Version: 3.3
Summary: a full-featured file system for online data storage
Home-page: https://bitbucket.org/nikratio/s3ql/
Author: Nikolaus Rath
diff --git a/src/s3ql.egg-info/SOURCES.txt b/src/s3ql.egg-info/SOURCES.txt
index 0932003..c67d486 100644
--- a/src/s3ql.egg-info/SOURCES.txt
+++ b/src/s3ql.egg-info/SOURCES.txt
@@ -108,6 +108,7 @@ doc/html/_static/down.png
doc/html/_static/file.png
doc/html/_static/jquery-3.2.1.js
doc/html/_static/jquery.js
+doc/html/_static/language_data.js
doc/html/_static/minus.png
doc/html/_static/navigation.png
doc/html/_static/plus.png
diff --git a/src/s3ql.egg-info/requires.txt b/src/s3ql.egg-info/requires.txt
index a4f4c64..d59d57b 100644
--- a/src/s3ql.egg-info/requires.txt
+++ b/src/s3ql.egg-info/requires.txt
@@ -1,8 +1,8 @@
apsw>=3.7.0
cryptography
-requests
defusedxml
dugong<4.0,>=3.4
-llfuse<2.0,>=1.0
google-auth
google-auth-oauthlib
+llfuse<2.0,>=1.0
+requests
diff --git a/src/s3ql/__init__.py b/src/s3ql/__init__.py
index aa3a338..c461d99 100644
--- a/src/s3ql/__init__.py
+++ b/src/s3ql/__init__.py
@@ -38,7 +38,7 @@ assert logging.LOG_ONCE # prevent warnings about unused module
from llfuse import ROOT_INODE
-VERSION = '3.2'
+VERSION = '3.3'
RELEASE = '%s' % VERSION
# TODO: On next revision bump, remove upgrade code from backend/comprenc.py and
diff --git a/src/s3ql/backends/swift.py b/src/s3ql/backends/swift.py
index 2e3c274..98ac4cd 100644
--- a/src/s3ql/backends/swift.py
+++ b/src/s3ql/backends/swift.py
@@ -39,7 +39,8 @@ class Backend(AbstractBackend, metaclass=ABCDocstMeta):
hdr_prefix = 'X-Object-'
known_options = {'no-ssl', 'ssl-ca-path', 'tcp-timeout',
- 'disable-expect100', 'no-feature-detection'}
+ 'disable-expect100', 'no-feature-detection',
+ 'domain', 'project_domain'}
_add_meta_headers = s3c.Backend._add_meta_headers
_extractmeta = s3c.Backend._extractmeta
diff --git a/src/s3ql/backends/swiftks.py b/src/s3ql/backends/swiftks.py
index e3dc79d..c43dd1d 100644
--- a/src/s3ql/backends/swiftks.py
+++ b/src/s3ql/backends/swiftks.py
@@ -76,18 +76,60 @@ class Backend(swift.Backend):
tenant = None
user = self.login
- auth_body = { 'auth':
+ domain = self.options.get('domain', None)
+ if domain:
+ if not tenant:
+ raise ValueError("Tenant is required when Keystone v3 is used")
+
+ # In simple cases where there's only one domain, the project domain
+ # will be the same as the authentication domain, but this option
+ # allows for them to be different
+ project_domain = self.options.get('project-domain', domain)
+
+ auth_body = {
+ 'auth': {
+ 'identity': {
+ 'methods': ['password'],
+ 'password': {
+ 'user': {
+ 'name': user,
+ 'domain': {
+ 'id': domain
+ },
+ 'password': self.password
+ }
+ }
+ },
+ 'scope': {
+ 'project': {
+ 'id': tenant,
+ 'domain': {
+ 'id': project_domain
+ }
+ }
+ }
+ }
+ }
+
+ auth_url_path = '/v3/auth/tokens'
+
+ else:
+ # If a domain is not specified, assume v2
+ auth_body = { 'auth':
{ 'passwordCredentials':
{ 'username': user,
'password': self.password } }}
- if tenant:
- auth_body['auth']['tenantName'] = tenant
+
+ auth_url_path = '/v2.0/tokens'
+
+ if tenant:
+ auth_body['auth']['tenantName'] = tenant
with HTTPConnection(self.hostname, port=self.port, proxy=self.proxy,
ssl_context=ssl_context) as conn:
conn.timeout = int(self.options.get('tcp-timeout', 20))
- conn.send_request('POST', '/v2.0/tokens', headers=headers,
+ conn.send_request('POST', auth_url_path, headers=headers,
body=json.dumps(auth_body).encode('utf-8'))
resp = conn.read_response()
@@ -98,10 +140,16 @@ class Backend(swift.Backend):
raise HTTPError(resp.status, resp.reason, resp.headers)
cat = json.loads(conn.read().decode('utf-8'))
- self.auth_token = cat['access']['token']['id']
+
+ if self.options.get('domain', None):
+ self.auth_token = resp.headers['X-Subject-Token']
+ service_catalog = cat['token']['catalog']
+ else:
+ self.auth_token = cat['access']['token']['id']
+ service_catalog = cat['access']['serviceCatalog']
avail_regions = []
- for service in cat['access']['serviceCatalog']:
+ for service in service_catalog:
if service['type'] != 'object-store':
continue
@@ -110,7 +158,17 @@ class Backend(swift.Backend):
avail_regions.append(endpoint['region'])
continue
- o = urlsplit(endpoint['publicURL'])
+ if 'publicURL' in endpoint:
+ # The publicURL nomenclature is found in v2 catalogs
+ o = urlsplit(endpoint['publicURL'])
+ else:
+ # Whereas v3 catalogs do 'interface' == 'public' and
+ # 'url' for the URL itself
+ if endpoint['interface'] != 'public':
+ continue
+
+ o = urlsplit(endpoint['url'])
+
self.auth_prefix = urllib.parse.unquote(o.path)
if o.scheme == 'https':
ssl_context = self.ssl_context
diff --git a/src/s3ql/deltadump.c b/src/s3ql/deltadump.c
index a91fa01..9eea56f 100644
--- a/src/s3ql/deltadump.c
+++ b/src/s3ql/deltadump.c
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.28.5 */
+/* Generated by Cython 0.29.2 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
@@ -7,7 +7,8 @@
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_5"
+#define CYTHON_ABI "0_29_2"
+#define CYTHON_HEX_VERSION 0x001D02F0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
@@ -78,6 +79,10 @@
#define CYTHON_PEP489_MULTI_PHASE_INIT 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
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -115,6 +120,10 @@
#define CYTHON_PEP489_MULTI_PHASE_INIT 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
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -168,11 +177,17 @@
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -182,6 +197,9 @@
#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
@@ -308,6 +326,9 @@
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 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
@@ -321,15 +342,40 @@
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#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);\
+ }\
+ }
+#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
#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_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -437,8 +483,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#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
@@ -601,6 +647,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(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 <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -659,6 +708,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#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))
@@ -739,7 +789,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
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));
+ __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);
@@ -919,6 +969,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, 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
+ 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
/* PyCFunctionFastCall.proto */
@@ -975,7 +1037,28 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ 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);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+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
+
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1114,6 +1197,7 @@ typedef struct {
PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
@@ -1159,6 +1243,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_size_t(size_t value, Py_ssiz
/* CIntToPyUnicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+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)
@@ -1189,13 +1278,8 @@ static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject *
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
@@ -1204,6 +1288,17 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
#endif
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
@@ -1273,21 +1368,6 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -1355,10 +1435,10 @@ static const char __pyx_k_d[] = "d";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_j[] = "j";
static const char __pyx_k_x[] = "x";
-static const char __pyx_k__3[] = ", - ";
-static const char __pyx_k__5[] = ", ";
-static const char __pyx_k__6[] = " ";
-static const char __pyx_k__8[] = " != ";
+static const char __pyx_k__2[] = ", - ";
+static const char __pyx_k__4[] = ", ";
+static const char __pyx_k__5[] = " ";
+static const char __pyx_k__7[] = " != ";
static const char __pyx_k_cm[] = "cm";
static const char __pyx_k_db[] = "db";
static const char __pyx_k_fh[] = "fh";
@@ -1366,9 +1446,9 @@ static const char __pyx_k_fp[] = "fp";
static const char __pyx_k_os[] = "os";
static const char __pyx_k_rc[] = "rc";
static const char __pyx_k_vs[] = " vs ";
-static const char __pyx_k__12[] = " = ";
-static const char __pyx_k__13[] = " (";
-static const char __pyx_k__14[] = "?";
+static const char __pyx_k__10[] = " = ";
+static const char __pyx_k__11[] = " (";
+static const char __pyx_k__12[] = "?";
static const char __pyx_k_buf[] = "buf";
static const char __pyx_k_cmd[] = "cmd";
static const char __pyx_k_idx[] = "idx";
@@ -1499,13 +1579,13 @@ static PyObject *__pyx_kp_u_SQLite_code_used_by_APSW_was_com;
static PyObject *__pyx_kp_u_SQLite_version_mismatch_between;
static PyObject *__pyx_kp_u_VALUES;
static PyObject *__pyx_n_s_ValueError;
+static PyObject *__pyx_kp_u__10;
+static PyObject *__pyx_kp_u__11;
static PyObject *__pyx_kp_u__12;
-static PyObject *__pyx_kp_u__13;
-static PyObject *__pyx_kp_u__14;
-static PyObject *__pyx_kp_u__3;
+static PyObject *__pyx_kp_u__2;
+static PyObject *__pyx_kp_u__4;
static PyObject *__pyx_kp_u__5;
-static PyObject *__pyx_kp_u__6;
-static PyObject *__pyx_kp_u__8;
+static PyObject *__pyx_kp_u__7;
static PyObject *__pyx_n_s_apsw;
static PyObject *__pyx_kp_u_apsw_sqlite_compile_options_s_s3;
static PyObject *__pyx_n_s_apsw_sqlite_options;
@@ -1611,20 +1691,17 @@ static PyObject *__pyx_tp_new_4s3ql_9deltadump___pyx_scope_struct_1_load_table(P
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_4096;
static PyObject *__pyx_int_5000;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__7;
+static PyObject *__pyx_tuple__3;
+static PyObject *__pyx_tuple__6;
+static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_tuple__10;
-static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__15;
+static PyObject *__pyx_tuple__13;
+static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__19;
-static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_codeobj__18;
-static PyObject *__pyx_codeobj__20;
-static PyObject *__pyx_codeobj__22;
+static PyObject *__pyx_tuple__18;
+static PyObject *__pyx_codeobj__15;
+static PyObject *__pyx_codeobj__17;
+static PyObject *__pyx_codeobj__19;
/* Late includes */
/* "s3ql/deltadump.pyx":112
@@ -2195,7 +2272,6 @@ static int __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(int __pyx_v_rc, int __pyx_v_
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
__Pyx_RefNannySetupContext("SQLITE_CHECK_RC", 0);
/* "s3ql/deltadump.pyx":184
@@ -2215,7 +2291,7 @@ static int __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(int __pyx_v_rc, int __pyx_v_
* raise type(exc)(PyUnicode_FromString(sqlite3_errmsg(db)))
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_apsw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_apsw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exceptionfor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -2232,41 +2308,11 @@ static int __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(int __pyx_v_rc, int __pyx_v_
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 185, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_exc = __pyx_t_2;
__pyx_t_2 = 0;
@@ -2281,52 +2327,22 @@ static int __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(int __pyx_v_rc, int __pyx_v_
__pyx_t_4 = PyUnicode_FromString(sqlite3_errmsg(__pyx_v_db)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_exc)));
- __pyx_t_6 = ((PyObject *)Py_TYPE(__pyx_v_exc)); __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_3 = ((PyObject *)Py_TYPE(__pyx_v_exc)); __pyx_t_5 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(0, 186, __pyx_L1_error)
@@ -2364,7 +2380,6 @@ static int __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(int __pyx_v_rc, int __pyx_v_
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("s3ql.deltadump.SQLITE_CHECK_RC", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
@@ -2498,7 +2513,7 @@ static int __pyx_f_4s3ql_9deltadump_prep_columns(PyObject *__pyx_v_columns, int
__pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_BLOB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_BLOB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -2509,7 +2524,7 @@ static int __pyx_f_4s3ql_9deltadump_prep_columns(PyObject *__pyx_v_columns, int
__pyx_t_7 = __pyx_t_9;
goto __pyx_L6_bool_binop_done;
}
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_INTEGER); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INTEGER); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_8, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -2528,7 +2543,7 @@ static int __pyx_f_4s3ql_9deltadump_prep_columns(PyObject *__pyx_v_columns, int
* col_types[i] = columns[i][1]
*
*/
- __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Invalid_type_for_column_d, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Invalid_type_for_column_d, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -2716,12 +2731,9 @@ static FILE *__pyx_f_4s3ql_9deltadump_dup_to_fp(PyObject *__pyx_v_fh, const char
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 227, __pyx_L1_error)
@@ -2874,7 +2886,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* s3ql_sqlite_version = PyUnicode_FromString(sqlite3_libversion())
* log.debug('apsw sqlite version: %s, '
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_apsw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_apsw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sqlitelibversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -2889,12 +2901,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_apsw_sqlite_version = __pyx_t_1;
@@ -2919,7 +2928,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* 's3ql sqlite version: %s',
* apsw_sqlite_version,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3073,7 +3082,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* s3ql_sqlite_options = set()
* for idx in itertools.count(0):
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_apsw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_apsw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile_options); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3103,44 +3112,56 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* buf = sqlite3_compileoption_get(idx)
* if buf is NULL:
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_itertools); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_itertools); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_int_0) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_0);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_7 = 0;
+ __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 263, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (likely(!__pyx_t_9)) {
- if (likely(PyList_CheckExact(__pyx_t_2))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
+ if (likely(PyList_CheckExact(__pyx_t_5))) {
+ if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 263, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
+ if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 263, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
- __pyx_t_1 = __pyx_t_9(__pyx_t_2);
+ __pyx_t_1 = __pyx_t_9(__pyx_t_5);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -3213,7 +3234,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
*/
}
__pyx_L5_break:;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* "s3ql/deltadump.pyx":269
* s3ql_sqlite_options.add(PyUnicode_FromString(buf))
@@ -3222,10 +3243,10 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* 's3ql sqlite compile options: %s',
* apsw_sqlite_options,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "s3ql/deltadump.pyx":272
@@ -3237,30 +3258,30 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
*/
__pyx_t_1 = NULL;
__pyx_t_4 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+ if (CYTHON_UNPACK_METHODS && 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_5);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
+ if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_u_apsw_sqlite_compile_options_s_s3, __pyx_v_apsw_sqlite_options, __pyx_v_s3ql_sqlite_options};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GOTREF(__pyx_t_5);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_u_apsw_sqlite_compile_options_s_s3, __pyx_v_apsw_sqlite_options, __pyx_v_s3ql_sqlite_options};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GOTREF(__pyx_t_5);
} else
#endif
{
@@ -3278,12 +3299,12 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
__Pyx_INCREF(__pyx_v_s3ql_sqlite_options);
__Pyx_GIVEREF(__pyx_v_s3ql_sqlite_options);
PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_v_s3ql_sqlite_options);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* "s3ql/deltadump.pyx":273
* apsw_sqlite_options,
@@ -3292,9 +3313,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* raise RuntimeError('SQLite code used by APSW was compiled with different '
* 'options than SQLite code available to S3QL! '
*/
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_apsw_sqlite_options, __pyx_v_s3ql_sqlite_options, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error)
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 273, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_apsw_sqlite_options, __pyx_v_s3ql_sqlite_options, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 273, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 273, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(__pyx_t_6)) {
/* "s3ql/deltadump.pyx":274
@@ -3304,14 +3325,14 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* 'options than SQLite code available to S3QL! '
* 'Differing settings: + %s, - %s' %
*/
- __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 274, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = 0;
__pyx_t_8 = 127;
__Pyx_INCREF(__pyx_kp_u_SQLite_code_used_by_APSW_was_com);
__pyx_t_7 += 119;
__Pyx_GIVEREF(__pyx_kp_u_SQLite_code_used_by_APSW_was_com);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_SQLite_code_used_by_APSW_was_com);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_SQLite_code_used_by_APSW_was_com);
/* "s3ql/deltadump.pyx":277
* 'options than SQLite code available to S3QL! '
@@ -3320,20 +3341,20 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* s3ql_sqlite_options - apsw_sqlite_options))
*
*/
- __pyx_t_5 = PyNumber_Subtract(__pyx_v_apsw_sqlite_options, __pyx_v_s3ql_sqlite_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Subtract(__pyx_v_apsw_sqlite_options, __pyx_v_s3ql_sqlite_options); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_8;
__pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
__pyx_t_3 = 0;
- __Pyx_INCREF(__pyx_kp_u__3);
+ __Pyx_INCREF(__pyx_kp_u__2);
__pyx_t_7 += 4;
- __Pyx_GIVEREF(__pyx_kp_u__3);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__3);
+ __Pyx_GIVEREF(__pyx_kp_u__2);
+ PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__2);
/* "s3ql/deltadump.pyx":278
* 'Differing settings: + %s, - %s' %
@@ -3344,14 +3365,14 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
*/
__pyx_t_3 = PyNumber_Subtract(__pyx_v_s3ql_sqlite_options, __pyx_v_apsw_sqlite_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_3), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_3), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_8;
- __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_8;
+ __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_2);
+ __pyx_t_2 = 0;
/* "s3ql/deltadump.pyx":274
* s3ql_sqlite_options)
@@ -3360,14 +3381,14 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
* 'options than SQLite code available to S3QL! '
* 'Differing settings: + %s, - %s' %
*/
- __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 274, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_RuntimeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_5, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+ __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_RuntimeError, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 274, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 274, __pyx_L1_error)
/* "s3ql/deltadump.pyx":273
@@ -3419,7 +3440,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_check_sqlite(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_pw_4s3ql_9deltadump_3dump_table(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4s3ql_9deltadump_2dump_table[] = "dump_table(table, order, columns, db, fh)\nDump *columns* of *table* into *fh*\n\n *order* specifies the order in which the rows are written and must be a\n string that can be inserted after the \"ORDER BY\" clause in an SQL SELECT\n statement.\n\n *db* is an `s3ql.Connection` instance for the database.\n\n *columns* must a list of 3-tuples, one for each column that should be\n stored. The first element of the tuple must contain the column name and the\n second element the type of data stored in the column (`INTEGER`\n or `BLOB`). Times will be converted to nanosecond integers.\n\n For integers and seconds, the third tuple element specifies the expected\n change of the values between rows. For blobs it can be either zero\n (indicating variable length columns) or an integer specifying the length of\n the column values in bytes.\n\n This function will open a separate connection to the database, so\n the *db* connection should not be in EXCLUSIVE locking mode.\n (Using a separate connection avoids the requirement on the *apsw*\n and *deltadump* modules be linked against against binary\n compatible SQLite libraries).\n ";
-static PyMethodDef __pyx_mdef_4s3ql_9deltadump_3dump_table = {"dump_table", (PyCFunction)__pyx_pw_4s3ql_9deltadump_3dump_table, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4s3ql_9deltadump_2dump_table};
+static PyMethodDef __pyx_mdef_4s3ql_9deltadump_3dump_table = {"dump_table", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4s3ql_9deltadump_3dump_table, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4s3ql_9deltadump_2dump_table};
static PyObject *__pyx_pw_4s3ql_9deltadump_3dump_table(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_table = 0;
PyObject *__pyx_v_order = 0;
@@ -3923,7 +3944,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*
* with ExitStack() as cm:
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __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;
@@ -3946,7 +3967,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
* log.debug('Opening connection to %s', db.file)
*/
/*with:*/ {
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ExitStack); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ExitStack); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -3958,12 +3979,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 321, __pyx_L1_error)
@@ -3980,12 +3998,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error)
- }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __pyx_t_3;
@@ -4010,7 +4025,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
* dbfile_b = db.file.encode(sys.getfilesystemencoding(), 'surrogateescape')
* SQLITE_CHECK_RC(sqlite3_open_v2(dbfile_b, &sqlite3_db,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L8_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(0, 323, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -4078,7 +4093,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 324, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 324, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -4093,12 +4108,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (__pyx_t_1) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L8_error)
- }
+ __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = NULL;
@@ -4190,41 +4202,11 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 328, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4256,53 +4238,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 335, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_1lambda1, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 335, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_1lambda1, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_1)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4325,53 +4277,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 339, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_2lambda2, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_2lambda2, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_6)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4396,41 +4318,11 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4454,53 +4346,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 344, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_4lambda4, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 344, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_4lambda4, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_1)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 344, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4527,23 +4389,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
if (likely(PyList_CheckExact(__pyx_t_11))) {
if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_11)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 347, __pyx_L16_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 347, __pyx_L16_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_11, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L16_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L16_error)
+ __Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 347, __pyx_L16_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 347, __pyx_L16_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_11, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L16_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L16_error)
+ __Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
- __pyx_t_3 = __pyx_t_16(__pyx_t_11);
- if (unlikely(!__pyx_t_3)) {
+ __pyx_t_1 = __pyx_t_16(__pyx_t_11);
+ if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
@@ -4551,14 +4413,14 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
}
break;
}
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GOTREF(__pyx_t_1);
}
- __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_x, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_7genexpr__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L16_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 347, __pyx_L16_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_x, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_7genexpr__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L16_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 347, __pyx_L16_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_x); __pyx_7genexpr__pyx_v_x = 0;
@@ -4594,7 +4456,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
* SQLITE_CHECK_RC(sqlite3_prepare_v2(sqlite3_db, query, -1, &stmt, NULL),
* SQLITE_OK, sqlite3_db)
*/
- __pyx_t_11 = PyUnicode_Join(__pyx_kp_u__5, __pyx_v_col_names); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 349, __pyx_L8_error)
+ __pyx_t_11 = PyUnicode_Join(__pyx_kp_u__4, __pyx_v_col_names); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 349, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_17 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_17) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_17;
__pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
@@ -4623,10 +4485,10 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_t_11);
__pyx_t_11 = 0;
- __Pyx_INCREF(__pyx_kp_u__6);
+ __Pyx_INCREF(__pyx_kp_u__5);
__pyx_t_14 += 1;
- __Pyx_GIVEREF(__pyx_kp_u__6);
- PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_kp_u__6);
+ __Pyx_GIVEREF(__pyx_kp_u__5);
+ PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_kp_u__5);
/* "s3ql/deltadump.pyx":348
* # Prepare statement
@@ -4679,53 +4541,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 352, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_5lambda5, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10dump_table_5lambda5, 0, __pyx_n_s_dump_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_6)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4738,7 +4570,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_db, __pyx_n_s_get_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 355, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_SELECT_COUNT_rowid_FROM_s, __pyx_v_table); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L8_error)
+ __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_SELECT_COUNT_rowid_FROM_s, __pyx_v_table); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -4750,41 +4582,11 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 355, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_19 = __Pyx_PyInt_As_int64_t(__pyx_t_4); if (unlikely((__pyx_t_19 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4797,63 +4599,63 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
* write_integer(row_count, fp)
*
*/
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 356, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_log); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 356, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_row_count); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 356, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = NULL;
+ __pyx_t_3 = NULL;
__pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && 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);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
__pyx_t_10 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_u_dump_table_s_writing_d_rows, __pyx_v_table, __pyx_t_11};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_kp_u_dump_table_s_writing_d_rows, __pyx_v_table, __pyx_t_11};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L8_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_u_dump_table_s_writing_d_rows, __pyx_v_table, __pyx_t_11};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_kp_u_dump_table_s_writing_d_rows, __pyx_v_table, __pyx_t_11};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L8_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
{
- __pyx_t_3 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
+ __pyx_t_6 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_kp_u_dump_table_s_writing_d_rows);
__Pyx_GIVEREF(__pyx_kp_u_dump_table_s_writing_d_rows);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_10, __pyx_kp_u_dump_table_s_writing_d_rows);
+ PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_kp_u_dump_table_s_writing_d_rows);
__Pyx_INCREF(__pyx_v_table);
__Pyx_GIVEREF(__pyx_v_table);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_10, __pyx_v_table);
+ PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_v_table);
__Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_10, __pyx_t_11);
+ PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_10, __pyx_t_11);
__pyx_t_11 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L8_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "s3ql/deltadump.pyx":357
@@ -4949,7 +4751,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*
* if col_types[i] == _INTEGER:
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L8_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -5066,13 +4868,13 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 380, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 380, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 380, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 380, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(__pyx_t_2)) {
/* "s3ql/deltadump.pyx":382
@@ -5082,10 +4884,10 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
* # Safe to cast now
* len_ = <size_t> rc
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 382, __pyx_L8_error)
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 382, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
/* "s3ql/deltadump.pyx":381
* rc = sqlite3_column_bytes(stmt, i)
@@ -5099,17 +4901,17 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_INCREF(__pyx_kp_u_Can_not_dump_BLOB_of_size_d_max);
__Pyx_GIVEREF(__pyx_kp_u_Can_not_dump_BLOB_of_size_d_max);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Can_not_dump_BLOB_of_size_d_max);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_6);
- __pyx_t_3 = 0;
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
__pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 381, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 381, __pyx_L8_error)
/* "s3ql/deltadump.pyx":380
@@ -5185,48 +4987,48 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
*
* if len_ != 0:
*/
- __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 389, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__pyx_t_14 = 0;
__pyx_t_17 = 127;
__Pyx_INCREF(__pyx_kp_u_Length);
__pyx_t_14 += 7;
__Pyx_GIVEREF(__pyx_kp_u_Length);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_Length);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Length);
__pyx_t_4 = __Pyx_PyUnicode_From_size_t(__pyx_v_len_, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 389, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
__pyx_t_4 = 0;
- __Pyx_INCREF(__pyx_kp_u__8);
+ __Pyx_INCREF(__pyx_kp_u__7);
__pyx_t_14 += 4;
- __Pyx_GIVEREF(__pyx_kp_u__8);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__8);
+ __Pyx_GIVEREF(__pyx_kp_u__7);
+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__7);
__pyx_t_4 = __Pyx_PyUnicode_From_int((__pyx_cur_scope->__pyx_v_col_args[__pyx_v_i]), 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 389, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4);
__pyx_t_4 = 0;
__Pyx_INCREF(__pyx_kp_u_in_column);
__pyx_t_14 += 11;
__Pyx_GIVEREF(__pyx_kp_u_in_column);
- PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_kp_u_in_column);
+ PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_in_column);
__pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 389, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_6, 6, __pyx_t_14, __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 389, __pyx_L8_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 6, __pyx_t_14, __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 389, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 389, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 389, __pyx_L8_error)
/* "s3ql/deltadump.pyx":388
@@ -5293,18 +5095,18 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L13_try_end;
__pyx_L8_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/*except:*/ {
__Pyx_AddTraceback("s3ql.deltadump.dump_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 321, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_6);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 321, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = PyTuple_Pack(3, __pyx_t_6, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 321, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_11 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 321, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -5316,16 +5118,16 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
if (__pyx_t_2 < 0) __PYX_ERR(0, 321, __pyx_L10_except_error)
__pyx_t_24 = ((!(__pyx_t_2 != 0)) != 0);
if (__pyx_t_24) {
- __Pyx_GIVEREF(__pyx_t_6);
+ __Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_4);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_4, __pyx_t_3);
- __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
+ __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(0, 321, __pyx_L10_except_error)
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __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;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
@@ -5345,7 +5147,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_5) {
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__9, NULL);
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__8, NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
@@ -5404,7 +5206,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_2dump_table(CYTHON_UNUSED PyObject *_
/* Python wrapper */
static PyObject *__pyx_pw_4s3ql_9deltadump_5load_table(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4s3ql_9deltadump_4load_table[] = "load_table(table, columns, db, fh, trx_rows=5000)\nLoad *columns* of *table* from *fh*\n\n *db* is an `s3ql.Connection` instance for the database.\n\n *columns* must be the same list of 3-tuples that was passed to\n `dump_table` when creating the dump stored in *fh*.\n\n This function will open a separate connection to the database, so\n the *db* connection should not be in EXCLUSIVE locking mode.\n (Using a separate connection avoids the requirement on the *apsw*\n and *deltadump* modules be linked against against binary\n compatible SQLite libraries).\n\n When writing into the table, a new transaction will be started\n every *trx_rows* rows.\n ";
-static PyMethodDef __pyx_mdef_4s3ql_9deltadump_5load_table = {"load_table", (PyCFunction)__pyx_pw_4s3ql_9deltadump_5load_table, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4s3ql_9deltadump_4load_table};
+static PyMethodDef __pyx_mdef_4s3ql_9deltadump_5load_table = {"load_table", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4s3ql_9deltadump_5load_table, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4s3ql_9deltadump_4load_table};
static PyObject *__pyx_pw_4s3ql_9deltadump_5load_table(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_table = 0;
PyObject *__pyx_v_columns = 0;
@@ -6124,28 +5926,27 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
PyObject *__pyx_t_11 = NULL;
const char *__pyx_t_12;
Py_ssize_t __pyx_t_13;
- PyObject *__pyx_t_14 = NULL;
- Py_ssize_t __pyx_t_15;
- Py_UCS4 __pyx_t_16;
- char *__pyx_t_17;
- int __pyx_t_18;
- char const *__pyx_t_19;
+ Py_ssize_t __pyx_t_14;
+ Py_UCS4 __pyx_t_15;
+ char *__pyx_t_16;
+ 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;
- PyObject *__pyx_t_25 = NULL;
- int __pyx_t_26;
- FILE *__pyx_t_27;
- void *__pyx_t_28;
- PyObject *(*__pyx_t_29)(PyObject *);
- size_t __pyx_t_30;
+ int __pyx_t_25;
+ FILE *__pyx_t_26;
+ void *__pyx_t_27;
+ PyObject *(*__pyx_t_28)(PyObject *);
+ size_t __pyx_t_29;
+ int64_t __pyx_t_30;
int64_t __pyx_t_31;
- int64_t __pyx_t_32;
+ int __pyx_t_32;
int __pyx_t_33;
int __pyx_t_34;
- int __pyx_t_35;
__Pyx_RefNannySetupContext("load_table", 0);
__pyx_cur_scope = (struct __pyx_obj_4s3ql_9deltadump___pyx_scope_struct_1_load_table *)__pyx_tp_new_4s3ql_9deltadump___pyx_scope_struct_1_load_table(__pyx_ptype_4s3ql_9deltadump___pyx_scope_struct_1_load_table, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
@@ -6176,7 +5977,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*
* with ExitStack() as cm:
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __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;
@@ -6199,7 +6000,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* log.debug('Opening connection to %s', db.file)
*/
/*with:*/ {
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ExitStack); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ExitStack); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -6211,12 +6012,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 427, __pyx_L1_error)
@@ -6233,12 +6031,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L4_error)
- }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __pyx_t_3;
@@ -6263,7 +6058,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* dbfile_b = db.file.encode(sys.getfilesystemencoding(), 'surrogateescape')
* SQLITE_CHECK_RC(sqlite3_open_v2(dbfile_b, &sqlite3_db,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L8_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(0, 429, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -6331,7 +6126,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 430, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 430, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -6346,12 +6141,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (__pyx_t_1) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L8_error)
- }
+ __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = NULL;
@@ -6443,41 +6235,11 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 434, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6497,7 +6259,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* val = db.get_val('PRAGMA %s' % pragma)
* cmd = ('PRAGMA %s = %s' % (pragma, val)).encode('utf-8')
*/
- __pyx_t_4 = __pyx_tuple__11; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0;
+ __pyx_t_4 = __pyx_tuple__9; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0;
for (;;) {
if (__pyx_t_13 >= 2) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
@@ -6516,56 +6278,26 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cmd = ('PRAGMA %s = %s' % (pragma, val)).encode('utf-8')
* SQLITE_CHECK_RC(sqlite3_prepare_v2(sqlite3_db, cmd, -1, &stmt, NULL),
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_db, __pyx_n_s_get_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 441, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_PRAGMA_s, __pyx_v_pragma); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L8_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_db, __pyx_n_s_get_val); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_PRAGMA_s, __pyx_v_pragma); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_11);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 441, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_11 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_11);
__pyx_t_11 = 0;
@@ -6578,36 +6310,36 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 442, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_15 = 0;
- __pyx_t_16 = 127;
+ __pyx_t_14 = 0;
+ __pyx_t_15 = 127;
__Pyx_INCREF(__pyx_kp_u_PRAGMA);
- __pyx_t_15 += 7;
+ __pyx_t_14 += 7;
__Pyx_GIVEREF(__pyx_kp_u_PRAGMA);
PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_kp_u_PRAGMA);
- __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_pragma); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_16;
- __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6);
- __pyx_t_6 = 0;
- __Pyx_INCREF(__pyx_kp_u__12);
- __pyx_t_15 += 3;
- __Pyx_GIVEREF(__pyx_kp_u__12);
- PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_kp_u__12);
- __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_val), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_16;
- __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_11, 4, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_pragma); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_15;
+ __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __Pyx_INCREF(__pyx_kp_u__10);
+ __pyx_t_14 += 3;
+ __Pyx_GIVEREF(__pyx_kp_u__10);
+ PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_kp_u__10);
+ __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_val), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_15;
+ __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_11, 4, __pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyUnicode_AsUTF8String(((PyObject*)__pyx_t_6)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 442, __pyx_L8_error)
+ __pyx_t_11 = PyUnicode_AsUTF8String(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 442, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_11);
__pyx_t_11 = 0;
@@ -6618,7 +6350,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_OK, sqlite3_db)
* try:
*/
- __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_v_cmd); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L8_error)
+ __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_cmd); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L8_error)
/* "s3ql/deltadump.pyx":444
* cmd = ('PRAGMA %s = %s' % (pragma, val)).encode('utf-8')
@@ -6627,7 +6359,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* try:
* rc = sqlite3_step(stmt)
*/
- __pyx_t_10 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_17, -1, (&__pyx_cur_scope->__pyx_v_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 443, __pyx_L8_error)
+ __pyx_t_10 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_16, -1, (&__pyx_cur_scope->__pyx_v_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 443, __pyx_L8_error)
/* "s3ql/deltadump.pyx":445
* SQLITE_CHECK_RC(sqlite3_prepare_v2(sqlite3_db, cmd, -1, &stmt, NULL),
@@ -6701,48 +6433,47 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
+ __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_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
+ 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_XGOTREF(__pyx_t_25);
- __pyx_t_10 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
+ __pyx_t_10 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
- __pyx_t_26 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_finalize(__pyx_cur_scope->__pyx_v_stmt), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_26 == ((int)-1))) __PYX_ERR(0, 451, __pyx_L25_error)
+ __pyx_t_25 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_finalize(__pyx_cur_scope->__pyx_v_stmt), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 451, __pyx_L25_error)
}
if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
+ __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_XGIVEREF(__pyx_t_22);
- __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
- __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
- __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
+ __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_10; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
goto __pyx_L8_error;
__pyx_L25_error:;
if (PY_MAJOR_VERSION >= 3) {
+ __Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
- __Pyx_XGIVEREF(__pyx_t_25);
- __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
+ __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
}
+ __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
- __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
- __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
+ __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
goto __pyx_L8_error;
}
__pyx_L20:;
@@ -6765,8 +6496,8 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: fclose(fp))
*
*/
- __pyx_t_27 = __pyx_f_4s3ql_9deltadump_dup_to_fp(__pyx_v_fh, ((const char *)"rb")); if (unlikely(__pyx_t_27 == ((FILE *)NULL))) __PYX_ERR(0, 454, __pyx_L8_error)
- __pyx_cur_scope->__pyx_v_fp = __pyx_t_27;
+ __pyx_t_26 = __pyx_f_4s3ql_9deltadump_dup_to_fp(__pyx_v_fh, ((const char *)"rb")); if (unlikely(__pyx_t_26 == ((FILE *)NULL))) __PYX_ERR(0, 454, __pyx_L8_error)
+ __pyx_cur_scope->__pyx_v_fp = __pyx_t_26;
/* "s3ql/deltadump.pyx":455
* # Get FILE* for buffered reading from *fh*
@@ -6777,53 +6508,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 455, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_1lambda7, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 455, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_14 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_1lambda7, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_14)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_14) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6834,8 +6535,8 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: free(col_args))
* cm.callback(lambda: free(col_types))
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_prep_columns(__pyx_v_columns, (&__pyx_cur_scope->__pyx_v_col_types), (&__pyx_cur_scope->__pyx_v_col_args)); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 458, __pyx_L8_error)
- __pyx_v_col_count = __pyx_t_18;
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_prep_columns(__pyx_v_columns, (&__pyx_cur_scope->__pyx_v_col_types), (&__pyx_cur_scope->__pyx_v_col_args)); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 458, __pyx_L8_error)
+ __pyx_v_col_count = __pyx_t_17;
/* "s3ql/deltadump.pyx":459
* # Allocate col_args and col_types
@@ -6848,51 +6549,21 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_2lambda8, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = NULL;
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_6)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 459, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6905,53 +6576,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 460, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_14 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_3lambda9, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 460, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_1 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_3lambda9, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_1)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 460, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_14);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_14);
- __pyx_t_14 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6963,8 +6604,8 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*
*/
__pyx_t_13 = PyObject_Length(__pyx_v_columns); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 463, __pyx_L8_error)
- __pyx_t_28 = __pyx_f_4s3ql_9deltadump_calloc(((size_t)__pyx_t_13), (sizeof(int64_t))); if (unlikely(__pyx_t_28 == ((void *)NULL))) __PYX_ERR(0, 463, __pyx_L8_error)
- __pyx_cur_scope->__pyx_v_int64_prev = ((int64_t *)__pyx_t_28);
+ __pyx_t_27 = __pyx_f_4s3ql_9deltadump_calloc(((size_t)__pyx_t_13), (sizeof(int64_t))); if (unlikely(__pyx_t_27 == ((void *)NULL))) __PYX_ERR(0, 463, __pyx_L8_error)
+ __pyx_cur_scope->__pyx_v_int64_prev = ((int64_t *)__pyx_t_27);
/* "s3ql/deltadump.pyx":464
* # Allocate int64_prev
@@ -6975,53 +6616,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 464, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_4lambda10, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 464, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_14 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_4lambda10, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_14)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_14) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7037,14 +6648,14 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_GOTREF(__pyx_t_4);
if (likely(PyList_CheckExact(__pyx_v_columns)) || PyTuple_CheckExact(__pyx_v_columns)) {
__pyx_t_11 = __pyx_v_columns; __Pyx_INCREF(__pyx_t_11); __pyx_t_13 = 0;
- __pyx_t_29 = NULL;
+ __pyx_t_28 = NULL;
} else {
__pyx_t_13 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_v_columns); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 467, __pyx_L28_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_29 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 467, __pyx_L28_error)
+ __pyx_t_28 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 467, __pyx_L28_error)
}
for (;;) {
- if (likely(!__pyx_t_29)) {
+ if (likely(!__pyx_t_28)) {
if (likely(PyList_CheckExact(__pyx_t_11))) {
if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_11)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
@@ -7063,7 +6674,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
#endif
}
} else {
- __pyx_t_1 = __pyx_t_29(__pyx_t_11);
+ __pyx_t_1 = __pyx_t_28(__pyx_t_11);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -7102,7 +6713,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__pyx_t_4 = PyTuple_New(7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 468, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_13 = 0;
- __pyx_t_16 = 127;
+ __pyx_t_15 = 127;
__Pyx_INCREF(__pyx_kp_u_INSERT_INTO);
__pyx_t_13 += 12;
__Pyx_GIVEREF(__pyx_kp_u_INSERT_INTO);
@@ -7117,18 +6728,18 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_table), __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 469, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_16;
+ __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_15;
__pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11);
__pyx_t_11 = 0;
- __Pyx_INCREF(__pyx_kp_u__13);
+ __Pyx_INCREF(__pyx_kp_u__11);
__pyx_t_13 += 2;
- __Pyx_GIVEREF(__pyx_kp_u__13);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__13);
- __pyx_t_11 = PyUnicode_Join(__pyx_kp_u__5, __pyx_v_col_names); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 469, __pyx_L8_error)
+ __Pyx_GIVEREF(__pyx_kp_u__11);
+ PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__11);
+ __pyx_t_11 = PyUnicode_Join(__pyx_kp_u__4, __pyx_v_col_names); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 469, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_16;
+ __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_15;
__pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_11);
@@ -7147,13 +6758,13 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_col_count); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 470, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = PyNumber_Multiply(__pyx_kp_u__14, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 470, __pyx_L8_error)
+ __pyx_t_1 = PyNumber_Multiply(__pyx_kp_u__12, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 470, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyUnicode_Join(__pyx_kp_u__5, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 470, __pyx_L8_error)
+ __pyx_t_11 = PyUnicode_Join(__pyx_kp_u__4, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 470, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_16;
+ __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_15;
__pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_t_11);
@@ -7170,7 +6781,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* % (table, ', '.join(col_names),
* ', '.join('?' * col_count))).encode('utf-8')
*/
- __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_4, 7, __pyx_t_13, __pyx_t_16); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 468, __pyx_L8_error)
+ __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_4, 7, __pyx_t_13, __pyx_t_15); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 468, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7194,7 +6805,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_OK, sqlite3_db)
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_finalize(stmt),
*/
- __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_v_query); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 471, __pyx_L8_error)
+ __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_query); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 471, __pyx_L8_error)
/* "s3ql/deltadump.pyx":472
* ', '.join('?' * col_count))).encode('utf-8')
@@ -7203,7 +6814,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_finalize(stmt),
* SQLITE_OK, sqlite3_db))
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_17, -1, (&__pyx_cur_scope->__pyx_v_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 471, __pyx_L8_error)
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_16, -1, (&__pyx_cur_scope->__pyx_v_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 471, __pyx_L8_error)
/* "s3ql/deltadump.pyx":473
* SQLITE_CHECK_RC(sqlite3_prepare_v2(sqlite3_db, query, -1, &stmt, NULL),
@@ -7216,51 +6827,21 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_5lambda11, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = NULL;
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_6)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 473, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7281,7 +6862,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_OK, sqlite3_db)
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_finalize(begin_stmt),
*/
- __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_v_query); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L8_error)
+ __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_query); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L8_error)
/* "s3ql/deltadump.pyx":479
* query = b'BEGIN TRANSACTION'
@@ -7290,7 +6871,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_finalize(begin_stmt),
* SQLITE_OK, sqlite3_db))
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_17, -1, (&__pyx_cur_scope->__pyx_v_begin_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 478, __pyx_L8_error)
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_16, -1, (&__pyx_cur_scope->__pyx_v_begin_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 478, __pyx_L8_error)
/* "s3ql/deltadump.pyx":480
* SQLITE_CHECK_RC(sqlite3_prepare_v2(sqlite3_db, query, -1, &begin_stmt, NULL),
@@ -7301,53 +6882,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 480, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_14 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_6lambda12, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 480, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_1 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_6lambda12, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 480, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_1)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 480, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_14);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_14);
- __pyx_t_14 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7368,7 +6919,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_OK, sqlite3_db)
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_finalize(commit_stmt),
*/
- __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_v_query); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 485, __pyx_L8_error)
+ __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_query); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 485, __pyx_L8_error)
/* "s3ql/deltadump.pyx":486
* query = b'COMMIT TRANSACTION'
@@ -7377,7 +6928,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_finalize(commit_stmt),
* SQLITE_OK, sqlite3_db))
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_17, -1, (&__pyx_cur_scope->__pyx_v_commit_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 485, __pyx_L8_error)
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_prepare_v2(__pyx_cur_scope->__pyx_v_sqlite3_db, __pyx_t_16, -1, (&__pyx_cur_scope->__pyx_v_commit_stmt), NULL), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 485, __pyx_L8_error)
/* "s3ql/deltadump.pyx":487
* SQLITE_CHECK_RC(sqlite3_prepare_v2(sqlite3_db, query, -1, &commit_stmt, NULL),
@@ -7388,53 +6939,23 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 487, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_7lambda13, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 487, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_14 = NULL;
+ __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_7lambda13, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 487, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_14)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_14) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 487, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7445,12 +6966,12 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: free(buf))
* read_integer(&row_count, fp)
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_30 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_30 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 490, __pyx_L8_error)
+ __pyx_t_29 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_29 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 490, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_28 = __pyx_f_4s3ql_9deltadump_calloc(__pyx_t_30, 1); if (unlikely(__pyx_t_28 == ((void *)NULL))) __PYX_ERR(0, 490, __pyx_L8_error)
- __pyx_cur_scope->__pyx_v_buf = __pyx_t_28;
+ __pyx_t_27 = __pyx_f_4s3ql_9deltadump_calloc(__pyx_t_29, 1); if (unlikely(__pyx_t_27 == ((void *)NULL))) __PYX_ERR(0, 490, __pyx_L8_error)
+ __pyx_cur_scope->__pyx_v_buf = __pyx_t_27;
/* "s3ql/deltadump.pyx":491
*
@@ -7463,51 +6984,21 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_8lambda14, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = NULL;
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_6)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 491, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7518,7 +7009,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* log.debug('load_table(%s): reading %d rows', table, row_count)
*
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_read_integer((&__pyx_v_row_count), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 492, __pyx_L8_error)
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_read_integer((&__pyx_v_row_count), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 492, __pyx_L8_error)
/* "s3ql/deltadump.pyx":493
* cm.callback(lambda: free(buf))
@@ -7527,63 +7018,63 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*
* # Start transaction
*/
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 493, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_log); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 493, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_debug); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 493, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_row_count); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 493, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = NULL;
- __pyx_t_18 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
+ __pyx_t_17 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_14, function);
- __pyx_t_18 = 1;
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ __pyx_t_17 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_14)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_u_load_table_s_reading_d_rows, __pyx_v_table, __pyx_t_11};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_18, 3+__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_kp_u_load_table_s_reading_d_rows, __pyx_v_table, __pyx_t_11};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L8_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) {
- PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_kp_u_load_table_s_reading_d_rows, __pyx_v_table, __pyx_t_11};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_18, 3+__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_kp_u_load_table_s_reading_d_rows, __pyx_v_table, __pyx_t_11};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L8_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
{
- __pyx_t_6 = PyTuple_New(3+__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 493, __pyx_L8_error)
+ __pyx_t_6 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 493, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_kp_u_load_table_s_reading_d_rows);
__Pyx_GIVEREF(__pyx_kp_u_load_table_s_reading_d_rows);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_18, __pyx_kp_u_load_table_s_reading_d_rows);
+ PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_17, __pyx_kp_u_load_table_s_reading_d_rows);
__Pyx_INCREF(__pyx_v_table);
__Pyx_GIVEREF(__pyx_v_table);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_18, __pyx_v_table);
+ PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_17, __pyx_v_table);
__Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_18, __pyx_t_11);
+ PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_17, __pyx_t_11);
__pyx_t_11 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L8_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "s3ql/deltadump.pyx":496
@@ -7593,7 +7084,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* cm.callback(lambda: SQLITE_CHECK_RC(sqlite3_step(commit_stmt),
* SQLITE_DONE, sqlite3_db))
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_step(__pyx_cur_scope->__pyx_v_begin_stmt), SQLITE_DONE, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 496, __pyx_L8_error)
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_step(__pyx_cur_scope->__pyx_v_begin_stmt), SQLITE_DONE, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 496, __pyx_L8_error)
/* "s3ql/deltadump.pyx":497
* # Start transaction
@@ -7602,56 +7093,26 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_DONE, sqlite3_db))
* SQLITE_CHECK_RC(sqlite3_reset(begin_stmt), SQLITE_OK, sqlite3_db)
*/
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 497, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cm, __pyx_n_s_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4s3ql_9deltadump_10load_table_9lambda15, 0, __pyx_n_s_load_table_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_s3ql_deltadump, __pyx_d, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 497, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_11 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_14);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_14, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_11) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_14)) {
- PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) {
- PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11); __pyx_t_11 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_4 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_11, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "s3ql/deltadump.pyx":499
@@ -7661,7 +7122,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*
* # Iterate through rows
*/
- __pyx_t_18 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_reset(__pyx_cur_scope->__pyx_v_begin_stmt), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 499, __pyx_L8_error)
+ __pyx_t_17 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_reset(__pyx_cur_scope->__pyx_v_begin_stmt), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 499, __pyx_L8_error)
/* "s3ql/deltadump.pyx":502
*
@@ -7670,10 +7131,10 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* for j in range(col_count):
* if col_types[j] == _INTEGER:
*/
- __pyx_t_31 = __pyx_v_row_count;
- __pyx_t_32 = __pyx_t_31;
- for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_32; __pyx_t_18+=1) {
- __pyx_v_i = __pyx_t_18;
+ __pyx_t_30 = __pyx_v_row_count;
+ __pyx_t_31 = __pyx_t_30;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_31; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
/* "s3ql/deltadump.pyx":503
* # Iterate through rows
@@ -7683,9 +7144,9 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* read_integer(&int64, fp)
*/
__pyx_t_10 = __pyx_v_col_count;
- __pyx_t_26 = __pyx_t_10;
- for (__pyx_t_33 = 0; __pyx_t_33 < __pyx_t_26; __pyx_t_33+=1) {
- __pyx_v_j = __pyx_t_33;
+ __pyx_t_25 = __pyx_t_10;
+ for (__pyx_t_32 = 0; __pyx_t_32 < __pyx_t_25; __pyx_t_32+=1) {
+ __pyx_v_j = __pyx_t_32;
/* "s3ql/deltadump.pyx":504
* for i in range(row_count):
@@ -7704,7 +7165,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* int64 += col_args[j] + int64_prev[j]
* int64_prev[j] = int64
*/
- __pyx_t_34 = __pyx_f_4s3ql_9deltadump_read_integer((&__pyx_v_int64), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 505, __pyx_L8_error)
+ __pyx_t_33 = __pyx_f_4s3ql_9deltadump_read_integer((&__pyx_v_int64), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_33 == ((int)-1))) __PYX_ERR(0, 505, __pyx_L8_error)
/* "s3ql/deltadump.pyx":506
* if col_types[j] == _INTEGER:
@@ -7731,7 +7192,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_OK, sqlite3_db)
*
*/
- __pyx_t_34 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_bind_int64(__pyx_cur_scope->__pyx_v_stmt, (__pyx_v_j + 1), __pyx_v_int64), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 508, __pyx_L8_error)
+ __pyx_t_33 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_bind_int64(__pyx_cur_scope->__pyx_v_stmt, (__pyx_v_j + 1), __pyx_v_int64), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_33 == ((int)-1))) __PYX_ERR(0, 508, __pyx_L8_error)
/* "s3ql/deltadump.pyx":504
* for i in range(row_count):
@@ -7770,7 +7231,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* tmp = int64_prev[j] + int64
* if tmp < 0 or tmp > INT_MAX:
*/
- __pyx_t_34 = __pyx_f_4s3ql_9deltadump_read_integer((&__pyx_v_int64), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 513, __pyx_L8_error)
+ __pyx_t_33 = __pyx_f_4s3ql_9deltadump_read_integer((&__pyx_v_int64), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_33 == ((int)-1))) __PYX_ERR(0, 513, __pyx_L8_error)
/* "s3ql/deltadump.pyx":514
* if col_args[j] == 0:
@@ -7788,14 +7249,14 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* raise RuntimeError('Corrupted input')
* len_ = <int> tmp
*/
- __pyx_t_35 = ((__pyx_v_tmp < 0) != 0);
- if (!__pyx_t_35) {
+ __pyx_t_34 = ((__pyx_v_tmp < 0) != 0);
+ if (!__pyx_t_34) {
} else {
- __pyx_t_2 = __pyx_t_35;
+ __pyx_t_2 = __pyx_t_34;
goto __pyx_L39_bool_binop_done;
}
- __pyx_t_35 = ((__pyx_v_tmp > INT_MAX) != 0);
- __pyx_t_2 = __pyx_t_35;
+ __pyx_t_34 = ((__pyx_v_tmp > INT_MAX) != 0);
+ __pyx_t_2 = __pyx_t_34;
__pyx_L39_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
@@ -7806,7 +7267,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* len_ = <int> tmp
* int64_prev[j] = tmp
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 516, __pyx_L8_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 516, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7870,13 +7331,13 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*/
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_len_); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 522, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L8_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 522, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 522, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 522, __pyx_L8_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_t_2)) {
/* "s3ql/deltadump.pyx":523
@@ -7886,26 +7347,26 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*
* if len_ > 0:
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_len_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L8_error)
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_len_); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 523, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_MAX_BLOB_SIZE); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 523, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
__pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 523, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_kp_u_BLOB_too_large_to_read_d_vs_d);
__Pyx_GIVEREF(__pyx_kp_u_BLOB_too_large_to_read_d_vs_d);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_BLOB_too_large_to_read_d_vs_d);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_14);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_14);
+ PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
+ __pyx_t_6 = 0;
__pyx_t_1 = 0;
- __pyx_t_14 = 0;
- __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 523, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_14, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 523, __pyx_L8_error)
/* "s3ql/deltadump.pyx":522
@@ -7934,7 +7395,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
*
* SQLITE_CHECK_RC(sqlite3_bind_blob(stmt, j + 1, buf, len_, SQLITE_TRANSIENT),
*/
- __pyx_t_34 = __pyx_f_4s3ql_9deltadump_fread(__pyx_cur_scope->__pyx_v_buf, ((unsigned int)__pyx_v_len_), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 526, __pyx_L8_error)
+ __pyx_t_33 = __pyx_f_4s3ql_9deltadump_fread(__pyx_cur_scope->__pyx_v_buf, ((unsigned int)__pyx_v_len_), __pyx_cur_scope->__pyx_v_fp); if (unlikely(__pyx_t_33 == ((int)-1))) __PYX_ERR(0, 526, __pyx_L8_error)
/* "s3ql/deltadump.pyx":525
* raise RuntimeError('BLOB too large to read (%d vs %d)', len_, MAX_BLOB_SIZE)
@@ -7952,7 +7413,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* SQLITE_OK, sqlite3_db)
*
*/
- __pyx_t_34 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_bind_blob(__pyx_cur_scope->__pyx_v_stmt, (__pyx_v_j + 1), __pyx_cur_scope->__pyx_v_buf, __pyx_v_len_, SQLITE_TRANSIENT), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 528, __pyx_L8_error)
+ __pyx_t_33 = __pyx_f_4s3ql_9deltadump_SQLITE_CHECK_RC(sqlite3_bind_blob(__pyx_cur_scope->__pyx_v_stmt, (__pyx_v_j + 1), __pyx_cur_scope->__pyx_v_buf, __pyx_v_len_, SQLITE_TRANSIENT), SQLITE_OK, __pyx_cur_scope->__pyx_v_sqlite3_db); if (unlikely(__pyx_t_33 == ((int)-1))) __PYX_ERR(0, 528, __pyx_L8_error)
/* "s3ql/deltadump.pyx":511
* SQLITE_OK, sqlite3_db)
@@ -7990,16 +7451,16 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
* # This isn't 100% ok -- if we have an exception in step(begin_stmt),
* # we the cleanup handler will execute the commit statement again
*/
- __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 535, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_4 = PyNumber_Remainder(__pyx_t_14, __pyx_v_trx_rows); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 535, __pyx_L8_error)
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyNumber_Remainder(__pyx_t_1, __pyx_v_trx_rows); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 535, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 535, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 535, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 535, __pyx_L8_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
/* "s3ql/deltadump.pyx":539
@@ -8064,37 +7525,36 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/*except:*/ {
__Pyx_AddTraceback("s3ql.deltadump.load_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(0, 427, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 427, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyTuple_Pack(3, __pyx_t_14, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 427, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL);
+ __pyx_t_11 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 427, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 427, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_25);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_25);
- __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 427, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_24);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_24);
+ __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
if (__pyx_t_2 < 0) __PYX_ERR(0, 427, __pyx_L10_except_error)
- __pyx_t_35 = ((!(__pyx_t_2 != 0)) != 0);
- if (__pyx_t_35) {
- __Pyx_GIVEREF(__pyx_t_14);
+ __pyx_t_34 = ((!(__pyx_t_2 != 0)) != 0);
+ if (__pyx_t_34) {
+ __Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_4);
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_ErrRestoreWithState(__pyx_t_14, __pyx_t_4, __pyx_t_1);
- __pyx_t_14 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0;
+ __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(0, 427, __pyx_L10_except_error)
}
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __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;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
@@ -8114,7 +7574,7 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_5) {
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__16, NULL);
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__8, NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 427, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
@@ -8148,7 +7608,6 @@ static PyObject *__pyx_pf_4s3ql_9deltadump_4load_table(CYTHON_UNUSED PyObject *_
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("s3ql.deltadump.load_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -9058,6 +8517,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#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
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
@@ -9090,13 +8558,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_u_SQLite_version_mismatch_between, __pyx_k_SQLite_version_mismatch_between, sizeof(__pyx_k_SQLite_version_mismatch_between), 0, 1, 0, 0},
{&__pyx_kp_u_VALUES, __pyx_k_VALUES, sizeof(__pyx_k_VALUES), 0, 1, 0, 0},
{&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
+ {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0},
+ {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0},
{&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0},
- {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0},
- {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0},
- {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
+ {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0},
+ {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0},
{&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0},
- {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0},
- {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0},
+ {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0},
{&__pyx_n_s_apsw, __pyx_k_apsw, sizeof(__pyx_k_apsw), 0, 0, 1, 1},
{&__pyx_kp_u_apsw_sqlite_compile_options_s_s3, __pyx_k_apsw_sqlite_compile_options_s_s3, sizeof(__pyx_k_apsw_sqlite_compile_options_s_s3), 0, 1, 0, 0},
{&__pyx_n_s_apsw_sqlite_options, __pyx_k_apsw_sqlite_options, sizeof(__pyx_k_apsw_sqlite_options), 0, 0, 1, 1},
@@ -9180,7 +8648,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_OSError = __Pyx_GetBuiltinName(__pyx_n_s_OSError); if (!__pyx_builtin_OSError) __PYX_ERR(0, 136, __pyx_L1_error)
__pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(0, 116, __pyx_L1_error)
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 206, __pyx_L1_error)
@@ -9191,21 +8659,10 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "s3ql/deltadump.pyx":263
- * apsw_sqlite_options = set(apsw.compile_options)
- * s3ql_sqlite_options = set()
- * for idx in itertools.count(0): # <<<<<<<<<<<<<<
- * buf = sqlite3_compileoption_get(idx)
- * if buf is NULL:
- */
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
-
/* "s3ql/deltadump.pyx":319
*
* if db.file == ':memory:':
@@ -9213,9 +8670,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* with ExitStack() as cm:
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Can_t_access_in_memory_databases); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 319, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_Can_t_access_in_memory_databases); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 319, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "s3ql/deltadump.pyx":368
* for i in range(col_count):
@@ -9224,9 +8681,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if col_types[i] == _INTEGER:
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Can_t_dump_NULL_values); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Can_t_dump_NULL_values); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "s3ql/deltadump.pyx":321
* raise ValueError("Can't access in-memory databases")
@@ -9235,20 +8692,9 @@ static int __Pyx_InitCachedConstants(void) {
* # Get SQLite connection
* log.debug('Opening connection to %s', db.file)
*/
- __pyx_tuple__9 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 321, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
-
- /* "s3ql/deltadump.pyx":425
- *
- * if db.file == ':memory:':
- * raise ValueError("Can't access in-memory databases") # <<<<<<<<<<<<<<
- *
- * with ExitStack() as cm:
- */
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Can_t_access_in_memory_databases); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
+ __pyx_tuple__8 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "s3ql/deltadump.pyx":440
*
@@ -9257,9 +8703,9 @@ static int __Pyx_InitCachedConstants(void) {
* val = db.get_val('PRAGMA %s' % pragma)
* cmd = ('PRAGMA %s = %s' % (pragma, val)).encode('utf-8')
*/
- __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_u_synchronous, __pyx_n_u_foreign_keys); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 440, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_u_synchronous, __pyx_n_u_foreign_keys); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 440, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "s3ql/deltadump.pyx":516
* tmp = int64_prev[j] + int64
@@ -9268,20 +8714,9 @@ static int __Pyx_InitCachedConstants(void) {
* len_ = <int> tmp
* int64_prev[j] = tmp
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_Corrupted_input); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 516, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
-
- /* "s3ql/deltadump.pyx":427
- * raise ValueError("Can't access in-memory databases")
- *
- * with ExitStack() as cm: # <<<<<<<<<<<<<<
- * # Get SQLite connection
- * log.debug('Opening connection to %s', db.file)
- */
- __pyx_tuple__16 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 427, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_Corrupted_input); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 516, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "s3ql/deltadump.pyx":237
* return fp
@@ -9290,10 +8725,10 @@ static int __Pyx_InitCachedConstants(void) {
* '''Check if deltadump and apsw module use compatible SQLite code.
*
*/
- __pyx_tuple__17 = PyTuple_Pack(6, __pyx_n_s_buf, __pyx_n_s_apsw_sqlite_version, __pyx_n_s_s3ql_sqlite_version, __pyx_n_s_apsw_sqlite_options, __pyx_n_s_s3ql_sqlite_options, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
- __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_s3ql_deltadump_pyx, __pyx_n_s_check_sqlite, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __pyx_tuple__14 = PyTuple_Pack(6, __pyx_n_s_buf, __pyx_n_s_apsw_sqlite_version, __pyx_n_s_s3ql_sqlite_version, __pyx_n_s_apsw_sqlite_options, __pyx_n_s_s3ql_sqlite_options, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_s3ql_deltadump_pyx, __pyx_n_s_check_sqlite, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 237, __pyx_L1_error)
/* "s3ql/deltadump.pyx":280
* s3ql_sqlite_options - apsw_sqlite_options))
@@ -9302,10 +8737,10 @@ static int __Pyx_InitCachedConstants(void) {
* '''Dump *columns* of *table* into *fh*
*
*/
- __pyx_tuple__19 = PyTuple_Pack(24, __pyx_n_s_table, __pyx_n_s_order, __pyx_n_s_columns, __pyx_n_s_db, __pyx_n_s_fh, __pyx_n_s_sqlite3_db, __pyx_n_s_stmt, __pyx_n_s_col_types, __pyx_n_s_col_args, __pyx_n_s_col_count, __pyx_n_s_rc, __pyx_n_s_i, __pyx_n_s_len, __pyx_n_s_int64_prev, __pyx_n_s_int64, __pyx_n_s_tmp, __pyx_n_s_fp, __pyx_n_s_buf, __pyx_n_s_row_count, __pyx_n_s_cm, __pyx_n_s_dbfile_b, __pyx_n_s_col_names, __pyx_n_s_query, __pyx_n_s_x); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 280, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
- __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(5, 0, 24, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_s3ql_deltadump_pyx, __pyx_n_s_dump_table, 280, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __pyx_tuple__16 = PyTuple_Pack(24, __pyx_n_s_table, __pyx_n_s_order, __pyx_n_s_columns, __pyx_n_s_db, __pyx_n_s_fh, __pyx_n_s_sqlite3_db, __pyx_n_s_stmt, __pyx_n_s_col_types, __pyx_n_s_col_args, __pyx_n_s_col_count, __pyx_n_s_rc, __pyx_n_s_i, __pyx_n_s_len, __pyx_n_s_int64_prev, __pyx_n_s_int64, __pyx_n_s_tmp, __pyx_n_s_fp, __pyx_n_s_buf, __pyx_n_s_row_count, __pyx_n_s_cm, __pyx_n_s_dbfile_b, __pyx_n_s_col_names, __pyx_n_s_query, __pyx_n_s_x); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(5, 0, 24, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_s3ql_deltadump_pyx, __pyx_n_s_dump_table, 280, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 280, __pyx_L1_error)
/* "s3ql/deltadump.pyx":394
* fwrite(buf, len_, fp)
@@ -9314,10 +8749,10 @@ static int __Pyx_InitCachedConstants(void) {
* '''Load *columns* of *table* from *fh*
*
*/
- __pyx_tuple__21 = PyTuple_Pack(30, __pyx_n_s_table, __pyx_n_s_columns, __pyx_n_s_db, __pyx_n_s_fh, __pyx_n_s_trx_rows, __pyx_n_s_sqlite3_db, __pyx_n_s_stmt, __pyx_n_s_begin_stmt, __pyx_n_s_commit_stmt, __pyx_n_s_col_types, __pyx_n_s_col_args, __pyx_n_s_col_count, __pyx_n_s_rc, __pyx_n_s_len, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_int64_prev, __pyx_n_s_fp, __pyx_n_s_buf, __pyx_n_s_row_count, __pyx_n_s_int64, __pyx_n_s_tmp, __pyx_n_s_cm, __pyx_n_s_dbfile_b, __pyx_n_s_pragma, __pyx_n_s_val, __pyx_n_s_cmd, __pyx_n_s_col_names, __pyx_n_s_query, __pyx_n_s_x); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 394, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
- __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(5, 0, 30, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_s3ql_deltadump_pyx, __pyx_n_s_load_table, 394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 394, __pyx_L1_error)
+ __pyx_tuple__18 = PyTuple_Pack(30, __pyx_n_s_table, __pyx_n_s_columns, __pyx_n_s_db, __pyx_n_s_fh, __pyx_n_s_trx_rows, __pyx_n_s_sqlite3_db, __pyx_n_s_stmt, __pyx_n_s_begin_stmt, __pyx_n_s_commit_stmt, __pyx_n_s_col_types, __pyx_n_s_col_args, __pyx_n_s_col_count, __pyx_n_s_rc, __pyx_n_s_len, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_int64_prev, __pyx_n_s_fp, __pyx_n_s_buf, __pyx_n_s_row_count, __pyx_n_s_int64, __pyx_n_s_tmp, __pyx_n_s_cm, __pyx_n_s_dbfile_b, __pyx_n_s_pragma, __pyx_n_s_val, __pyx_n_s_cmd, __pyx_n_s_col_names, __pyx_n_s_query, __pyx_n_s_x); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 394, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(5, 0, 30, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_s3ql_deltadump_pyx, __pyx_n_s_load_table, 394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 394, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -9325,7 +8760,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_4096 = PyInt_FromLong(4096); if (unlikely(!__pyx_int_4096)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -9335,13 +8770,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+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
@@ -9392,18 +8827,24 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(1, 9, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(1, 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;
}
@@ -9438,15 +8879,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((cold))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -9459,11 +8891,36 @@ __Pyx_PyMODINIT_FUNC PyInit_deltadump(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+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;
+}
+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) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
- result = PyDict_SetItemString(moddict, to_name, value);
+ if (allow_none || value != Py_None) {
+ result = PyDict_SetItemString(moddict, to_name, value);
+ }
Py_DECREF(value);
} else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Clear();
@@ -9472,8 +8929,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -9483,10 +8942,10 @@ static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *d
if (unlikely(!module)) goto bad;
moddict = PyModule_GetDict(module);
if (unlikely(!moddict)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad;
+ 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);
@@ -9494,7 +8953,7 @@ bad:
}
-static int __pyx_pymod_exec_deltadump(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_deltadump(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -9503,7 +8962,11 @@ static int __pyx_pymod_exec_deltadump(PyObject *__pyx_pyinit_module)
PyObject *__pyx_t_3 = NULL;
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'deltadump' 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
@@ -9518,6 +8981,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_deltadump(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 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(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -9572,7 +9038,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_s3ql__deltadump) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -9696,12 +9162,12 @@ if (!__Pyx_RefNanny) {
*
* # Column types
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -9861,9 +9327,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init s3ql.deltadump", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init s3ql.deltadump", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init s3ql.deltadump");
}
@@ -9884,9 +9350,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -9926,7 +9392,6 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
-#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -9944,7 +9409,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -10052,7 +9517,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -10060,9 +9525,9 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
@@ -10271,34 +9736,71 @@ bad:
#endif
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#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
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)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
+ }
+ PyErr_Clear();
#endif
- result = __Pyx_GetBuiltinName(name);
+ return __Pyx_GetBuiltinName(name);
+}
+
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
}
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
return result;
}
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -10318,7 +9820,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -10358,7 +9860,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
#endif
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -10373,7 +9875,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (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;
@@ -10391,7 +9893,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (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;
@@ -10407,7 +9909,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#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((n >= 0) & (n < 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;
@@ -10415,7 +9917,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < 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;
@@ -10445,7 +9947,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -10474,7 +9976,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* PyObjectCallNoArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(func)) {
@@ -10482,10 +9984,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -10495,7 +9998,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#endif
/* PyObjectFormatAndDecref */
- static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) {
+static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) {
if (unlikely(!s)) return NULL;
if (likely(PyUnicode_CheckExact(s))) return s;
#if PY_MAJOR_VERSION < 3
@@ -10514,7 +10017,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObj
}
/* JoinPyUnicode */
- static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
+static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
CYTHON_UNUSED Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
PyObject *result_uval;
@@ -10576,7 +10079,7 @@ bad:
}
/* RaiseArgTupleInvalid */
- static void __Pyx_RaiseArgtupleInvalid(
+static void __Pyx_RaiseArgtupleInvalid(
const char* func_name,
int exact,
Py_ssize_t num_min,
@@ -10602,7 +10105,7 @@ bad:
}
/* RaiseDoubleKeywords */
- static void __Pyx_RaiseDoubleKeywordsError(
+static void __Pyx_RaiseDoubleKeywordsError(
const char* func_name,
PyObject* kw_name)
{
@@ -10616,7 +10119,7 @@ bad:
}
/* ParseKeywords */
- static int __Pyx_ParseOptionalKeywords(
+static int __Pyx_ParseOptionalKeywords(
PyObject *kwds,
PyObject **argnames[],
PyObject *kwds2,
@@ -10718,7 +10221,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -10765,7 +10268,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -10867,7 +10370,7 @@ return_ne:
}
/* FetchCommonType */
- static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
PyObject* fake_module;
PyTypeObject* cached_type = NULL;
fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
@@ -10906,7 +10409,7 @@ bad:
}
/* CythonFunction */
- #include <structmember.h>
+#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
@@ -10928,7 +10431,7 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
return op->func_doc;
}
static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp = op->func_doc;
if (value == NULL) {
@@ -10940,7 +10443,7 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
@@ -10955,14 +10458,15 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
return op->func_name;
}
static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -10974,20 +10478,21 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_qualname);
return op->func_qualname;
}
static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -11009,7 +10514,7 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure
return self;
}
static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_dict == NULL)) {
op->func_dict = PyDict_New();
@@ -11020,7 +10525,7 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
return op->func_dict;
}
static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
if (unlikely(value == NULL)) {
@@ -11040,19 +10545,19 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_globals);
return op->func_globals;
}
static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
PyObject* result = (op->func_code) ? op->func_code : Py_None;
Py_INCREF(result);
@@ -11081,7 +10586,7 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -11097,7 +10602,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_tuple;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -11111,7 +10616,7 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -11127,7 +10632,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_kwdict;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -11141,7 +10646,7 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
@@ -11157,7 +10662,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->func_annotations;
if (unlikely(!result)) {
result = PyDict_New();
@@ -11337,7 +10842,7 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
return (*meth)(self, arg);
break;
case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
case METH_NOARGS:
if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg);
@@ -11500,7 +11005,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py
}
/* CIntToDigits */
- static const char DIGIT_PAIRS_10[2*10*10+1] = {
+static const char DIGIT_PAIRS_10[2*10*10+1] = {
"00010203040506070809"
"10111213141516171819"
"20212223242526272829"
@@ -11528,7 +11033,7 @@ static const char DIGITS_HEX[2*16+1] = {
};
/* BuildPyUnicode */
- static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
+static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
int prepend_sign, char padding_char) {
PyObject *uval;
Py_ssize_t uoffset = ulength - clength;
@@ -11602,7 +11107,7 @@ done_or_error:
}
/* CIntToPyUnicode */
- #ifdef _MSC_VER
+#ifdef _MSC_VER
#ifndef _MSC_STDINT_H_
#if _MSC_VER < 1300
typedef unsigned short uint16_t;
@@ -11620,7 +11125,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_size_t(size_t value, Py_ssiz
Py_ssize_t length, ulength;
int prepend_sign, last_one_off;
size_t remaining;
- const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
+ const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
const int is_unsigned = neg_one > const_zero;
if (format_char == 'X') {
hex_digits += 16;
@@ -11681,7 +11186,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_size_t(size_t value, Py_ssiz
}
/* CIntToPyUnicode */
- #ifdef _MSC_VER
+#ifdef _MSC_VER
#ifndef _MSC_STDINT_H_
#if _MSC_VER < 1300
typedef unsigned short uint16_t;
@@ -11699,7 +11204,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi
Py_ssize_t length, ulength;
int prepend_sign, last_one_off;
int remaining;
- const int neg_one = (int) -1, const_zero = (int) 0;
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (format_char == 'X') {
hex_digits += 16;
@@ -11759,13 +11264,29 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi
return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A3
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if 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;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -11777,13 +11298,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A3
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = 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;
@@ -11799,11 +11321,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#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) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -11836,13 +11359,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A3
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_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 = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -11869,23 +11395,24 @@ bad:
}
/* PyUnicode_Unicode */
- static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) {
+static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) {
if (unlikely(obj == Py_None))
obj = __pyx_kp_u_None;
return __Pyx_NewRef(obj);
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#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 PY_VERSION_HEX >= 0x030700A3
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *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;
@@ -11909,9 +11436,8 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
}
#endif
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -11919,89 +11445,66 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -12040,8 +11543,69 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
}
#endif
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#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;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#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;
+#endif
+ if ((size_t)basicsize < 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);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != 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);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (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
+
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -12088,7 +11652,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -12106,7 +11670,7 @@ bad:
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -12120,8 +11684,8 @@ bad:
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#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
@@ -12134,7 +11698,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __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
{
@@ -12151,7 +11717,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -12160,7 +11726,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+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;
@@ -12240,7 +11806,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -12325,8 +11891,8 @@ bad:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -12356,8 +11922,8 @@ bad:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -12387,7 +11953,7 @@ bad:
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#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)
@@ -12409,8 +11975,8 @@ bad:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
- const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
+ const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int64_t) < sizeof(long)) {
@@ -12440,8 +12006,8 @@ bad:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -12629,8 +12195,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
- const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
+static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
+ const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -12818,8 +12384,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
- const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
+ const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -13007,8 +12573,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -13196,7 +12762,7 @@ raise_neg_overflow:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -13296,7 +12862,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -13311,91 +12877,8 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- 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;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#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;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -13504,6 +12987,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
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) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -13581,7 +13071,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {