Re: Duplicity 3.1.0 Released

Kenneth Loafman via Duplicity-talk <[email protected]> Sun, 28 Jun 2026 13:29:14 -0500
Newsgroups gmane.comp.sysutils.backup.duplicity.general
Message-ID <CAD-_Ma2xaBM+KGvPVzQBxKdN9yJg+DSTOsX3HNFv2hVp6rx8=g@mail.gmail.com>
--===============3413799888231608090==
Content-Type: multipart/alternative; boundary="00000000000086987b065554850d"

--00000000000086987b065554850d
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Scott.

1. and 2. run fine with pylint=3D=3D4.0.5, black=3D=3D26.31

3. I really do not know why it is failing.

Take a look at requirements.dev and requirements.txt.  You might want to do=
:

$ python3 -m pip install --update -r requirements.dev
$ python3 -m pip install --update -r requirements.txt
$ python3 -m pip install .   # while in the duplicity directory

as this will guarantee we're using the same environment.  At least you can
figure out what versions you need.

...Ken


On Fri, Jun 26, 2026 at 10:53=E2=80=AFAM Scott Hannahs via Duplicity-talk <
[email protected]> wrote:

> Thanks for the update.  Trying to adjust my fink-project build system for
> this.  I get a couple of failures when running the suite of tests.  I kno=
w
> the pylint and the black tests are not necessary but I dislike failures i=
n
> my output.  Put it down to programmer OCD.  I am sure the tests all passe=
d
> on your system before you released it, but I am curious what is different
> on my system that all but these 3 tests would pass.  I am using python 3.=
10
> and pylint 2.14.5.  Now updating pylint (and astroid) to current version.
>
> 1. pylint fails.  It seems that building in a deep directory hierarchy
> causes python to abbreviate the strings with a =E2=80=98=E2=80=A6=E2=80=
=99 ellipsis.  This of
> course causes all sorts of failures when  the command line is called:
>
> pylint
> --rcfile=3D/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/p=
yproject.toml
> /opt/sw/src/*fink.b...l.3.1.0*/duplicity/backend.py
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/co=
nfig.py
>
>
> The underlined text should be
> '/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/=E2=80=98 but even whe=
n using
> the full correct path, pylint gives me this error in the toml file.  I
> assume that the paths are abbreviated just for error logging and the code
> is using the full paths?
>
> pyproject.toml:1: [W0012(unknown-option-value), ] Unknown option value fo=
r
> '--disable', expected a valid pylint message and got
> 'possibly-used-before-assignment=E2=80=99
>
> Standard error output:
>
> ----------------------------- Captured stderr call
> -----------------------------
> ************* Module
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/pyproject.to=
ml
> */opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/pyproject.t=
oml:1:
> [W0012(unknown-option-value), ] Unknown option value for '--disable',
> expected a valid pylint message and got 'possibly-used-before-assignment'=
*
> ************* Module duplicity.statistics
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/st=
atistics.py:154:
> [E1307(bad-string-format-type), StatsObj.get_timestats_string] Argument
> 'builtins.NoneType' does not match format type 'f'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/st=
atistics.py:162:
> [E1307(bad-string-format-type), StatsObj.get_timestats_string] Argument
> 'builtins.NoneType' does not match format type 'f'
> ************* Module duplicity.backends.gdrivebackend
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:102:
> [E0401(import-error), GDriveBackend.__init__] Unable to import
> 'google_auth_oauthlib.flow'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:103:
> [E0401(import-error), GDriveBackend.__init__] Unable to import
> 'google.auth.transport.requests'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:217:
> [E0401(import-error), GDriveBackend.file_by_name] Unable to import
> 'googleapiclient.errors'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:286:
> [E0401(import-error), GDriveBackend._put] Unable to import
> 'googleapiclient.http'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:335:
> [E0401(import-error), GDriveBackend._get] Unable to import
> 'googleapiclient.http'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:402:
> [E0401(import-error), GDriveBackend._error_code] Unable to import
> 'google.auth.exceptions'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/gdrivebackend.py:403:
> [E0401(import-error), GDriveBackend._error_code] Unable to import
> 'googleapiclient.errors'
> ************* Module duplicity.backends.pydrivebackend
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/pydrivebackend.py:279:
> [E0401(import-error), PyDriveBackend._error_code] Unable to import
> 'pydrive2.files'
> ************* Module duplicity.backends.azurebackend
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/ba=
ckends/azurebackend.py:86:
> [E0401(import-error), AzureBackend._get_or_create_container] Unable to
> import 'azure.core.exceptions'
>
>
> 2. black fails too, probably for the same reason and I will try to fix it
> if I can get a resolution to the pylint issue.
>
> 3. This is further on a specific test for a code regression number 908.  =
I
> am including the long log here because I am not sure what is relevant.
>
> testing/functional/test_regression.py::RegressionTest::test_issue908
> FAILED [ 72%]
> =E2=80=94=E2=80=94
> _________________________ RegressionTest.test_issue908
> _________________________
>
> self =3D <testing.functional.test_regression.RegressionTest
> testMethod=3Dtest_issue908>
>
>     @unittest.skipIf(os.path.exists("/.dockerenv"), "Won't work on docker=
")
>     def test_issue908(self):
>         """
>         Test issue 908 - gpg: public key decryption failed: No passphrase
> given (3.0.6.2)
>         """
>
>         # make sure we test with a clean cache and clean output
>         self.set_environ("FTP_PASSWORD", None)
>         self.set_environ("PASSPHRASE", None)
>         self.set_environ("SIGN_PASSPHRASE", None)
>         self.set_environ("TESTDEBUG", None)
>         shutil.rmtree(f"{_runtest_dir}/testfiles/cache/issue908",
> ignore_errors=3DTrue)
>         shutil.rmtree(f"{_runtest_dir}/testfiles/output",
> ignore_errors=3DTrue)
>
>         # do initial full backup with passphrase
>         self.backup(
>             "full",
>             f"{_runtest_dir}/testfiles/various_file_types",
>             options=3D["--name=3Dissue908",
> f"--encrypt-key=3D{self.encrypt_key1}"],
>         )
>
>         # make sure inc has somthing to do
>
> os.unlink(f"{_runtest_dir}/testfiles/various_file_types/executable")
>
>         # do incremental backup
> >       self.backup(
>             "inc",
>             f"{_runtest_dir}/testfiles/various_file_types",
>             options=3D["--name=3Dissue908",
> f"--encrypt-key=3D{self.encrypt_key1}"],
>             passphrase_input=3D[self.sign_passphrase],
>         )
>
> self       =3D <testing.functional.test_regression.RegressionTest
> testMethod=3Dtest_issue908>
>
>
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/func=
tional/test_regression.py:154:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _ _ _
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/func=
tional/__init__.py:197:
> in backup
>     self.run_duplicity(options=3Doptions, **kwargs)
>         before_files =3D
> {b'duplicity-full-signatures.20260616T174134Z.sigtar.gpg',
> b'duplicity-full.20260616T174134Z.manifest.gpg',
> b'duplicity-full.20260616T174134Z.vol1.difftar.gpg'}
>         input_dir  =3D
> '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/various_file_=
types'
>         kwargs     =3D {'passphrase_input': ['test']}
>         now        =3D 1781631694.437021
>         options    =3D ['inc',
> '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/various_file_=
types',
> 'fortestsonly:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfile=
s/output',
> '--volsize=3D1', '--name=3Dissue908', '--encrypt-key=3D839E6A2856538CCF']
>         self       =3D <testing.functional.test_regression.RegressionTest
> testMethod=3Dtest_issue908>
>         type       =3D 'inc'
> /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/func=
tional/__init__.py:159:
> in run_duplicity
>     child.expect("passphrase.*:")
>         child      =3D <pexpect.pty_spawn.spawn object at 0x10abc27a0>
>         cmd_list   =3D ['/opt/sw/bin/python3.10', '-W', 'ignore', '-u',
> '/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/_=
_main__.py',
> 'inc', ...]
>         cmdline    =3D "'/opt/sw/bin/python3.10' '-W' 'ignore' '-u'
> '/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/_=
...538CCF'
> '-v0' '--no-print-statistics'
> '--archive-dir=3D/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfil=
es/cache'"
>         current_time =3D None
>         dup_env    =3D {'CCACHE_DIR': '/opt/sw/var/ccache', 'CPPFLAGS':
> '-I/opt/sw/include', 'DBUS_SESSION_BUS_ADDRESS':
> 'launchd:env=3DDBUS_FINK_SESSION_BUS_SOCKET', 'GNUPGHOME':
> '/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/gnu=
pg',
> ...}
>         fail       =3D None
>         item       =3D 'test'
>         options    =3D ['inc',
> '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/various_file_=
types',
> 'fortestsonly:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfile=
s/output',
> '--volsize=3D1', '--name=3Dissue908', '--encrypt-key=3D839E6A2856538CCF']
>         passphrase =3D 'test'
>         passphrase_input =3D ['test']
>         self       =3D <testing.functional.test_regression.RegressionTest
> testMethod=3Dtest_issue908>
>         timeout    =3D None
> /opt/sw/lib/python3.10/site-packages/pexpect/spawnbase.py:343: in expect
>     return self.expect_list(compiled_pattern_list,
>         async_     =3D False
>         compiled_pattern_list =3D [re.compile(b'passphrase.*:', re.DOTALL=
)]
>         kw         =3D {}
>         pattern    =3D 'passphrase.*:'
>         searchwindowsize =3D -1
>         self       =3D <pexpect.pty_spawn.spawn object at 0x10abc27a0>
>         timeout    =3D -1
> /opt/sw/lib/python3.10/site-packages/pexpect/spawnbase.py:372: in
> expect_list
>     return exp.expect_loop(timeout)
>         async_     =3D False
>         exp        =3D <pexpect.expect.Expecter object at 0x109e4ff40>
>         kw         =3D {}
>         pattern_list =3D [re.compile(b'passphrase.*:', re.DOTALL)]
>         searchwindowsize =3D -1
>         self       =3D <pexpect.pty_spawn.spawn object at 0x10abc27a0>
>         timeout    =3D None
> /opt/sw/lib/python3.10/site-packages/pexpect/expect.py:179: in expect_loo=
p
>     return self.eof(e)
>         idx        =3D None
>         self       =3D <pexpect.expect.Expecter object at 0x109e4ff40>
>         spawn      =3D <pexpect.pty_spawn.spawn object at 0x10abc27a0>
>         timeout    =3D None
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _ _ _
>
> self =3D <pexpect.expect.Expecter object at 0x109e4ff40>
> err =3D EOF('End Of File (EOF). Empty string style platform.')
>
>     def eof(self, err=3DNone):
>         spawn =3D self.spawn
>
>         spawn.before =3D spawn._before.getvalue()
>         spawn._buffer =3D spawn.buffer_type()
>         spawn._before =3D spawn.buffer_type()
>         spawn.after =3D EOF
>         index =3D self.searcher.eof_index
>         if index >=3D 0:
>             spawn.match =3D EOF
>             spawn.match_index =3D index
>             return index
>         else:
>             spawn.match =3D None
>             spawn.match_index =3D None
>             msg =3D str(spawn)
>             msg +=3D '\nsearcher: %s' % self.searcher
>             if err is not None:
>                 msg =3D str(err) + '\n' + msg
>
>             exc =3D EOF(msg)
>             exc.__cause__ =3D None # in Python 3.x we can use "raise exc
> from None"
> >           raise exc
> E           pexpect.exceptions.EOF: End Of File (EOF). Empty string style
> platform.
> E           <pexpect.pty_spawn.spawn object at 0x10abc27a0>
> E           command: /bin/sh
> E           args: ['/bin/sh', '-f', '-c', "'/opt/sw/bin/python3.10' '-W'
> 'ignore' '-u'
> '/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/_=
_main__.py'
> 'inc'
> '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/various_file_=
types'
> 'fortestsonly:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfile=
s/output'
> '--volsize=3D1' '--name=3Dissue908' '--encrypt-key=3D839E6A2856538CCF' '-=
v0'
> '--no-print-statistics'
> '--archive-dir=3D/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfil=
es/cache'"]
> E           buffer (last 100 chars): b''
> E           before (last 100 chars): ''
> E           after: <class 'pexpect.exceptions.EOF'>
> E           match: None
> E           match_index: None
> E           exitstatus: None
> E           flag_eof: True
> E           pid: 45404
> E           child_fd: 191
> E           closed: False
> E           timeout: None
> E           delimiter: <class 'pexpect.exceptions.EOF'>
> E           logfile: None
> E           logfile_read: None
> E           logfile_send: None
> E           maxread: 2000
> E           ignorecase: False
> E           searchwindowsize: None
> E           delaybeforesend: 0.05
> E           delayafterclose: 0.1
> E           delayafterterminate: 0.1
> E           searcher: searcher_re:
> E               0: re.compile(b'passphrase.*:')
>
> err        =3D EOF('End Of File (EOF). Empty string style platform.')
> exc        =3D EOF('End Of File (EOF). Empty string style
> platform.\n<pexpect.pty_spawn.spawn object at 0x10abc27a0>\ncommand:
> /bin/s...: 0.05\ndelayafterclose: 0.1\ndelayafterterminate: 0.1\nsearcher=
:
> searcher_re:\n    0: re.compile(b\'passphrase.*:\')')
> index      =3D -1
> msg        =3D "End Of File (EOF). Empty string style
> platform.\n<pexpect.pty_spawn.spawn object at 0x10abc27a0>\ncommand:
> /bin/sh\na...end: 0.05\ndelayafterclose: 0.1\ndelayafterterminate:
> 0.1\nsearcher: searcher_re:\n    0: re.compile(b'passphrase.*:')"
> self       =3D <pexpect.expect.Expecter object at 0x109e4ff40>
> spawn      =3D <pexpect.pty_spawn.spawn object at 0x10abc27a0>
>
> /opt/sw/lib/python3.10/site-packages/pexpect/expect.py:122: EOF
> ----------------------------- Captured stdout call
> -----------------------------
> TestBackend is not made for production use!
> TestBackend is not made for production use!
> TestBackend is not made for production use!
> TestBackend is not made for production use!
> ----------------------------- Captured stderr call
> -----------------------------
>
> ...command: '/opt/sw/bin/python3.10' '-W' 'ignore' '-u'
> '/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/_=
_main__.py'
> 'full'
> '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/various_file_=
types'
> 'fortestsonly:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfile=
s/output'
> '--volsize=3D1' '--name=3Dissue908' '--encrypt-key=3D839E6A2856538CCF' '-=
v0'
> '--no-print-statistics'
> '--archive-dir=3D/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfil=
es/cache'
> < /dev/null
> ...cwd: /private/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T
> ...output:
> ...return_val: 0
> ------------------------------ Captured log call
> -------------------------------
> Level 8  duplicity:log.py:100 TestBackend is not made for production use!
> Level 8  duplicity:log.py:100 TestBackend is not made for production use!
> Level 8  duplicity:log.py:100 TestBackend is not made for production use!
> Level 8  duplicity:log.py:100 TestBackend is not made for production use!
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D short test summary info
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>
> -Scott
>
> On Jun 16, 2026, at 1:10=E2=80=AFPM, Kenneth Loafman via Duplicity-talk <
> [email protected]> wrote:
>
> Hi everyone,
>
> I am pleased to announce the release of duplicity version 3.1.0.
>
> This release follows version 3.0.7 and includes a minor version bump to
> reflect a significant new feature. Thanks to elmuz's contribution, restor=
e
> operations can now use --include, --exclude, --include-regexp, and
> --include-filelist directly from the command line.
>
> There are many other improvements and bug fixes included in this update.
> Please see the CHANGELOG below for full details.
>
> Thanks,
> Ken
>
>
> _______________________________________________
> Duplicity-talk mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/duplicity-talk
>

--00000000000086987b065554850d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div>Hi Scott.</div><div><br></div><div>1=
. and 2. run fine with pylint=3D=3D4.0.5, black=3D=3D26.31</div><div><br></=
div><div>3. I really do not know why it is failing.</div><div><br></div><di=
v>Take a look at <a href=3D"http://requirements.dev">requirements.dev</a> a=
nd requirements.txt.=C2=A0 You might want to do:</div><div><br></div><div><=
font face=3D"monospace" style=3D"background-color:rgb(238,238,238)">$ pytho=
n3 -m pip install --update -r <a href=3D"http://requirements.dev">requireme=
nts.dev</a></font></div><div><font face=3D"monospace" style=3D"background-c=
olor:rgb(238,238,238)">$ python3 -m pip install --update -r requirements.tx=
t</font></div><div><font face=3D"monospace" style=3D"background-color:rgb(2=
38,238,238)">$ python3 -m pip install .=C2=A0 =C2=A0# while in the duplicit=
y directory</font></div><div>=C2=A0</div><div>as this will guarantee we&#39=
;re using the same environment.=C2=A0 At least you can figure out what vers=
ions you need.</div><div><br></div><div>...Ken</div><div><br></div><br><div=
 class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Jun 26=
, 2026 at 10:53=E2=80=AFAM Scott Hannahs via Duplicity-talk &lt;<a href=3D"=
mailto:[email protected]" target=3D"_blank">[email protected]=
rg</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
"><div><div dir=3D"auto"><div dir=3D"auto"><div dir=3D"auto"><div dir=3D"au=
to">Thanks for the update.=C2=A0 Trying to adjust my fink-project build sys=
tem for this.=C2=A0 I get a couple of failures when running the suite of te=
sts.=C2=A0 I know the pylint and the black tests are not necessary but I di=
slike failures in my output.=C2=A0 Put it down to programmer OCD.=C2=A0 I a=
m sure the tests all passed on your system before you released it, but I am=
 curious what is different on my system that all but these 3 tests would pa=
ss.=C2=A0 I am using python 3.10 and pylint 2.14.5.=C2=A0 Now updating pyli=
nt (and astroid) to current version.<div><br></div><div>1. pylint fails.=C2=
=A0 It seems that building in a deep directory hierarchy causes python to a=
bbreviate the strings with a =E2=80=98=E2=80=A6=E2=80=99 ellipsis.=C2=A0 Th=
is of course causes all sorts of failures when =C2=A0the command line is ca=
lled:</div><blockquote style=3D"margin:0px 0px 0px 40px;border-width:medium=
;border-style:none;border-color:currentcolor;padding:0px"><div>pylint --rcf=
ile=3D/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/pyprojec=
t.toml /opt/sw/src/<b style=3D"font-size:16px"><u>fink.b...l.3.1.0</u></b>/=
duplicity/backend.py /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel=
.3.1.0/duplicity/config.py</div></blockquote><div><div><br></div><div>The u=
nderlined text should be &#39;/fink.build/duplicity-3.1.0-1/duplicity-rel.3=
.1.0/=E2=80=98 but even when using the full correct path, pylint gives me t=
his error in the toml file.=C2=A0 I assume that the paths are abbreviated j=
ust for error logging and the code is using the full paths?</div></div><blo=
ckquote style=3D"margin:0px 0px 0px 40px;border-width:medium;border-style:n=
one;border-color:currentcolor;padding:0px"><div><div>pyproject.toml:1: [W00=
12(unknown-option-value), ] Unknown option value for &#39;--disable&#39;, e=
xpected a valid pylint message and got &#39;possibly-used-before-assignment=
=E2=80=99</div></div><div><br></div></blockquote><div>Standard error output=
:</div><blockquote style=3D"margin:0px 0px 0px 40px;border-width:medium;bor=
der-style:none;border-color:currentcolor;padding:0px"><div><div>-----------=
------------------ Captured stderr call -----------------------------</div>=
<div>************* Module /opt/sw/src/fink.build/duplicity-3.1.0-1/duplicit=
y-rel.3.1.0/pyproject.toml</div><div style=3D"font-size:16px"><b>/opt/sw/sr=
c/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/pyproject.toml:1: [W0012=
(unknown-option-value), ] Unknown option value for &#39;--disable&#39;, exp=
ected a valid pylint message and got &#39;possibly-used-before-assignment&#=
39;</b></div><div>************* Module duplicity.statistics</div><div>/opt/=
sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/statistic=
s.py:154: [E1307(bad-string-format-type), StatsObj.get_timestats_string] Ar=
gument &#39;builtins.NoneType&#39; does not match format type &#39;f&#39;</=
div><div>/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/dupli=
city/statistics.py:162: [E1307(bad-string-format-type), StatsObj.get_timest=
ats_string] Argument &#39;builtins.NoneType&#39; does not match format type=
 &#39;f&#39;</div><div>************* Module duplicity.backends.gdrivebacken=
d</div><div>/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/du=
plicity/backends/gdrivebackend.py:102: [E0401(import-error), GDriveBackend.=
__init__] Unable to import &#39;google_auth_oauthlib.flow&#39;</div><div>/o=
pt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/backen=
ds/gdrivebackend.py:103: [E0401(import-error), GDriveBackend.__init__] Unab=
le to import &#39;google.auth.transport.requests&#39;</div><div>/opt/sw/src=
/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/backends/gdrive=
backend.py:217: [E0401(import-error), GDriveBackend.file_by_name] Unable to=
 import &#39;googleapiclient.errors&#39;</div><div>/opt/sw/src/fink.build/d=
uplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/backends/gdrivebackend.py:28=
6: [E0401(import-error), GDriveBackend._put] Unable to import &#39;googleap=
iclient.http&#39;</div><div>/opt/sw/src/fink.build/duplicity-3.1.0-1/duplic=
ity-rel.3.1.0/duplicity/backends/gdrivebackend.py:335: [E0401(import-error)=
, GDriveBackend._get] Unable to import &#39;googleapiclient.http&#39;</div>=
<div>/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity=
/backends/gdrivebackend.py:402: [E0401(import-error), GDriveBackend._error_=
code] Unable to import &#39;google.auth.exceptions&#39;</div><div>/opt/sw/s=
rc/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/backends/gdri=
vebackend.py:403: [E0401(import-error), GDriveBackend._error_code] Unable t=
o import &#39;googleapiclient.errors&#39;</div><div>************* Module du=
plicity.backends.pydrivebackend</div><div>/opt/sw/src/fink.build/duplicity-=
3.1.0-1/duplicity-rel.3.1.0/duplicity/backends/pydrivebackend.py:279: [E040=
1(import-error), PyDriveBackend._error_code] Unable to import &#39;pydrive2=
.files&#39;</div><div>************* Module duplicity.backends.azurebackend<=
/div><div>/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/dupl=
icity/backends/azurebackend.py:86: [E0401(import-error), AzureBackend._get_=
or_create_container] Unable to import &#39;azure.core.exceptions&#39;</div>=
<div><br></div></div></blockquote><div><div><br></div><div>2. black fails t=
oo, probably for the same reason and I will try to fix it if I can get a re=
solution to the pylint issue.</div><div><br></div><div>3. This is further o=
n a specific test for a code regression number 908.=C2=A0 I am including th=
e long log here because I am not sure what is relevant.</div></div><div><br=
></div><blockquote style=3D"margin:0px 0px 0px 40px;border-width:medium;bor=
der-style:none;border-color:currentcolor;padding:0px"><div><div>testing/fun=
ctional/test_regression.py::RegressionTest::test_issue908 FAILED [ 72%]</di=
v></div><div>=E2=80=94=E2=80=94</div><div><div>_________________________ Re=
gressionTest.test_issue908 _________________________</div><div><br></div><d=
iv>self =3D &lt;testing.functional.test_regression.RegressionTest testMetho=
d=3Dtest_issue908&gt;</div><div><br></div><div>=C2=A0 =C2=A0 @unittest.skip=
If(os.path.exists(&quot;/.dockerenv&quot;), &quot;Won&#39;t work on docker&=
quot;)</div><div>=C2=A0 =C2=A0 def test_issue908(self):</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 &quot;&quot;&quot;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 Test issue 908 - gpg: public key decryption failed: No passphrase given=
 (3.0.6.2)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;&quot;&quot;</div><d=
iv>=C2=A0 =C2=A0=C2=A0</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 # make sure we=
 test with a clean cache and clean output</div><div>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 self.set_environ(&quot;FTP_PASSWORD&quot;, None)</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 self.set_environ(&quot;PASSPHRASE&quot;, None)</div><d=
iv>=C2=A0 =C2=A0 =C2=A0 =C2=A0 self.set_environ(&quot;SIGN_PASSPHRASE&quot;=
, None)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 self.set_environ(&quot;TESTDE=
BUG&quot;, None)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 shutil.rmtree(f&quot=
;{_runtest_dir}/testfiles/cache/issue908&quot;, ignore_errors=3DTrue)</div>=
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 shutil.rmtree(f&quot;{_runtest_dir}/testfi=
les/output&quot;, ignore_errors=3DTrue)</div><div>=C2=A0 =C2=A0=C2=A0</div>=
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 # do initial full backup with passphrase</=
div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 self.backup(</div><div>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;full&quot;,</div><div>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 f&quot;{_runtest_dir}/testfiles/various_file_types=
&quot;,</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 options=3D[&quo=
t;--name=3Dissue908&quot;, f&quot;--encrypt-key=3D{self.encrypt_key1}&quot;=
],</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 )</div><div>=C2=A0 =C2=A0=C2=A0</d=
iv><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 # make sure inc has somthing to do</div=
><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 os.unlink(f&quot;{_runtest_dir}/testfiles=
/various_file_types/executable&quot;)</div><div>=C2=A0 =C2=A0=C2=A0</div><d=
iv>=C2=A0 =C2=A0 =C2=A0 =C2=A0 # do incremental backup</div><div>&gt; =C2=
=A0 =C2=A0 =C2=A0 self.backup(</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 &quot;inc&quot;,</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 f&quot;{_runtest_dir}/testfiles/various_file_types&quot;,</div><div>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 options=3D[&quot;--name=3Dissue908&q=
uot;, f&quot;--encrypt-key=3D{self.encrypt_key1}&quot;],</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 passphrase_input=3D[self.sign_passphrase=
],</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 )</div><div><br></div><div>self =
=C2=A0 =C2=A0 =C2=A0 =3D &lt;testing.functional.test_regression.RegressionT=
est testMethod=3Dtest_issue908&gt;</div><div><br></div><div>/opt/sw/src/fin=
k.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/functional/test_regre=
ssion.py:154:=C2=A0</div><div>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _=
 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _=C2=A0</div><div><div>/opt/sw/src/fink.bu=
ild/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/functional/__init__.py:19=
7: in backup</div><div>=C2=A0 =C2=A0 self.run_duplicity(options=3Doptions, =
**kwargs)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 before_files =3D {b&#39;dup=
licity-full-signatures.20260616T174134Z.sigtar.gpg&#39;, b&#39;duplicity-fu=
ll.20260616T174134Z.manifest.gpg&#39;, b&#39;duplicity-full.20260616T174134=
Z.vol1.difftar.gpg&#39;}</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 input_dir =
=C2=A0=3D &#39;/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/v=
arious_file_types&#39;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 kwargs =C2=A0 =
=C2=A0 =3D {&#39;passphrase_input&#39;: [&#39;test&#39;]}</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 now =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D 1781631694.437021</=
div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 options =C2=A0 =C2=A0=3D [&#39;inc&#39=
;, &#39;/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/various_=
file_types&#39;, &#39;fortestsonly:///var/folders/6b/85yg9bp94rv55dzbdp78th=
p40000kr/T/testfiles/output&#39;, &#39;--volsize=3D1&#39;, &#39;--name=3Dis=
sue908&#39;, &#39;--encrypt-key=3D839E6A2856538CCF&#39;]</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 self =C2=A0 =C2=A0 =C2=A0 =3D &lt;testing.functional.t=
est_regression.RegressionTest testMethod=3Dtest_issue908&gt;</div><div>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 type =C2=A0 =C2=A0 =C2=A0 =3D &#39;inc&#39;</div><=
div>/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/fu=
nctional/__init__.py:159: in run_duplicity</div><div>=C2=A0 =C2=A0 child.ex=
pect(&quot;passphrase.*:&quot;)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 child=
 =C2=A0 =C2=A0 =C2=A0=3D &lt;pexpect.pty_spawn.spawn object at 0x10abc27a0&=
gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 cmd_list =C2=A0 =3D [&#39;/opt/sw=
/bin/python3.10&#39;, &#39;-W&#39;, &#39;ignore&#39;, &#39;-u&#39;, &#39;/o=
pt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/__main=
__.py&#39;, &#39;inc&#39;, ...]</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 cmdli=
ne =C2=A0 =C2=A0=3D &quot;&#39;/opt/sw/bin/python3.10&#39; &#39;-W&#39; &#3=
9;ignore&#39; &#39;-u&#39; &#39;/opt/sw/src/fink.build/duplicity-3.1.0-1/du=
plicity-rel.3.1.0/duplicity/_...538CCF&#39; &#39;-v0&#39; &#39;--no-print-s=
tatistics&#39; &#39;--archive-dir=3D/var/folders/6b/85yg9bp94rv55dzbdp78thp=
40000kr/T/testfiles/cache&#39;&quot;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
current_time =3D None</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 dup_env =C2=A0 =
=C2=A0=3D {&#39;CCACHE_DIR&#39;: &#39;/opt/sw/var/ccache&#39;, &#39;CPPFLAG=
S&#39;: &#39;-I/opt/sw/include&#39;, &#39;DBUS_SESSION_BUS_ADDRESS&#39;: &#=
39;launchd:env=3DDBUS_FINK_SESSION_BUS_SOCKET&#39;, &#39;GNUPGHOME&#39;: &#=
39;/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/testing/gnu=
pg&#39;, ...}</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 fail =C2=A0 =C2=A0 =C2=
=A0 =3D None</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 item =C2=A0 =C2=A0 =C2=
=A0 =3D &#39;test&#39;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 options =C2=A0=
 =C2=A0=3D [&#39;inc&#39;, &#39;/var/folders/6b/85yg9bp94rv55dzbdp78thp4000=
0kr/T/testfiles/various_file_types&#39;, &#39;fortestsonly:///var/folders/6=
b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output&#39;, &#39;--volsize=3D=
1&#39;, &#39;--name=3Dissue908&#39;, &#39;--encrypt-key=3D839E6A2856538CCF&=
#39;]</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 passphrase =3D &#39;test&#39;</=
div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 passphrase_input =3D [&#39;test&#39;]<=
/div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 self =C2=A0 =C2=A0 =C2=A0 =3D &lt;tes=
ting.functional.test_regression.RegressionTest testMethod=3Dtest_issue908&g=
t;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 timeout =C2=A0 =C2=A0=3D None</div=
><div>/opt/sw/lib/python3.10/site-packages/pexpect/spawnbase.py:343: in exp=
ect</div><div>=C2=A0 =C2=A0 return self.expect_list(compiled_pattern_list,<=
/div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 async_ =C2=A0 =C2=A0 =3D False</div><=
div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 compiled_pattern_list =3D [re.compile(b&#39=
;passphrase.*:&#39;, re.DOTALL)]</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 kw =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D {}</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 pa=
ttern =C2=A0 =C2=A0=3D &#39;passphrase.*:&#39;</div><div>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 searchwindowsize =3D -1</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 se=
lf =C2=A0 =C2=A0 =C2=A0 =3D &lt;pexpect.pty_spawn.spawn object at 0x10abc27=
a0&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 timeout =C2=A0 =C2=A0=3D -1</d=
iv><div>/opt/sw/lib/python3.10/site-packages/pexpect/spawnbase.py:372: in e=
xpect_list</div><div>=C2=A0 =C2=A0 return exp.expect_loop(timeout)</div><di=
v>=C2=A0 =C2=A0 =C2=A0 =C2=A0 async_ =C2=A0 =C2=A0 =3D False</div><div>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 exp =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D &lt;pexpect.exp=
ect.Expecter object at 0x109e4ff40&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 kw =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D {}</div><div>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 pattern_list =3D [re.compile(b&#39;passphrase.*:&#39;, re.DOTALL)]</=
div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 searchwindowsize =3D -1</div><div>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 self =C2=A0 =C2=A0 =C2=A0 =3D &lt;pexpect.pty_spaw=
n.spawn object at 0x10abc27a0&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 tim=
eout =C2=A0 =C2=A0=3D None</div><div>/opt/sw/lib/python3.10/site-packages/p=
expect/expect.py:179: in expect_loop</div><div>=C2=A0 =C2=A0 return self.eo=
f(e)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 idx =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=3D None</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 self =C2=A0 =C2=A0 =C2=A0 =
=3D &lt;pexpect.expect.Expecter object at 0x109e4ff40&gt;</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 spawn =C2=A0 =C2=A0 =C2=A0=3D &lt;pexpect.pty_spawn.sp=
awn object at 0x10abc27a0&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 timeout=
 =C2=A0 =C2=A0=3D None</div><div>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ =
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _=C2=A0</div><div><br></div><div>self =
=3D &lt;pexpect.expect.Expecter object at 0x109e4ff40&gt;</div><div>err =3D=
 EOF(&#39;End Of File (EOF). Empty string style platform.&#39;)</div><div><=
br></div><div>=C2=A0 =C2=A0 def eof(self, err=3DNone):</div><div>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 spawn =3D self.spawn</div><div>=C2=A0 =C2=A0=C2=A0</div><=
div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 spawn.before =3D spawn._before.getvalue()</=
div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 spawn._buffer =3D spawn.buffer_type()<=
/div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 spawn._before =3D spawn.buffer_type()=
</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 spawn.after =3D EOF</div><div>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 index =3D self.searcher.eof_index</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 if index &gt;=3D 0:</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 spawn.match =3D EOF</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 spawn.match_index =3D index</div><div>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 return index</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 els=
e:</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 spawn.match =3D None=
</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 spawn.match_index =3D =
None</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 msg =3D str(spawn)=
</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 msg +=3D &#39;\nsearch=
er: %s&#39; % self.searcher</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 if err is not None:</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 msg =3D str(err) + &#39;\n&#39; + msg</div><div>=C2=A0 =
=C2=A0=C2=A0</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 exc =3D EO=
F(msg)</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 exc.__cause__ =
=3D None # in Python 3.x we can use &quot;raise exc from None&quot;</div><d=
iv>&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 raise exc</div><div>E =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 pexpect.exceptions.EOF: End Of File (EOF). Empty s=
tring style platform.</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;pe=
xpect.pty_spawn.spawn object at 0x10abc27a0&gt;</div><div>E =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 command: /bin/sh</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 args: [&#39;/bin/sh&#39;, &#39;-f&#39;, &#39;-c&#39;, &quot;&#39=
;/opt/sw/bin/python3.10&#39; &#39;-W&#39; &#39;ignore&#39; &#39;-u&#39; &#3=
9;/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.1.0/duplicity/__=
main__.py&#39; &#39;inc&#39; &#39;/var/folders/6b/85yg9bp94rv55dzbdp78thp40=
000kr/T/testfiles/various_file_types&#39; &#39;fortestsonly:///var/folders/=
6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output&#39; &#39;--volsize=3D=
1&#39; &#39;--name=3Dissue908&#39; &#39;--encrypt-key=3D839E6A2856538CCF&#3=
9; &#39;-v0&#39; &#39;--no-print-statistics&#39; &#39;--archive-dir=3D/var/=
folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/cache&#39;&quot;]</di=
v><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 buffer (last 100 chars): b&#39;=
&#39;</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 before (last 100 chars=
): &#39;&#39;</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 after: &lt;cla=
ss &#39;pexpect.exceptions.EOF&#39;&gt;</div><div>E =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 match: None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ma=
tch_index: None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 exitstatus: =
None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 flag_eof: True</div><di=
v>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pid: 45404</div><div>E =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 child_fd: 191</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 closed: False</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 timeou=
t: None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 delimiter: &lt;class=
 &#39;pexpect.exceptions.EOF&#39;&gt;</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 logfile: None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 log=
file_read: None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 logfile_send=
: None</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 maxread: 2000</div><d=
iv>E =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ignorecase: False</div><div>E =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 searchwindowsize: None</div><div>E =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 delaybeforesend: 0.05</div><div>E =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 delayafterclose: 0.1</div><div>E =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 delayafterterminate: 0.1</div><div>E =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 searcher: searcher_re:</div><div>E =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 0: re.compile(b&#39;passphrase.*:&#39;)</div><div>=
<br></div><div>err =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D EOF(&#39;End Of File (EOF=
). Empty string style platform.&#39;)</div><div>exc =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=3D EOF(&#39;End Of File (EOF). Empty string style platform.\n&lt;pex=
pect.pty_spawn.spawn object at 0x10abc27a0&gt;\ncommand: /bin/s...: 0.05\nd=
elayafterclose: 0.1\ndelayafterterminate: 0.1\nsearcher: searcher_re:\n =C2=
=A0 =C2=A00: re.compile(b\&#39;passphrase.*:\&#39;)&#39;)</div><div>index =
=C2=A0 =C2=A0 =C2=A0=3D -1</div><div>msg =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D &qu=
ot;End Of File (EOF). Empty string style platform.\n&lt;pexpect.pty_spawn.s=
pawn object at 0x10abc27a0&gt;\ncommand: /bin/sh\na...end: 0.05\ndelayafter=
close: 0.1\ndelayafterterminate: 0.1\nsearcher: searcher_re:\n =C2=A0 =C2=
=A00: re.compile(b&#39;passphrase.*:&#39;)&quot;</div><div>self =C2=A0 =C2=
=A0 =C2=A0 =3D &lt;pexpect.expect.Expecter object at 0x109e4ff40&gt;</div><=
div>spawn =C2=A0 =C2=A0 =C2=A0=3D &lt;pexpect.pty_spawn.spawn object at 0x1=
0abc27a0&gt;</div><div><br></div><div>/opt/sw/lib/python3.10/site-packages/=
pexpect/expect.py:122: EOF</div><div>----------------------------- Captured=
 stdout call -----------------------------</div><div>TestBackend is not mad=
e for production use!</div><div>TestBackend is not made for production use!=
</div><div>TestBackend is not made for production use!</div><div>TestBacken=
d is not made for production use!</div><div>----------------------------- C=
aptured stderr call -----------------------------</div><div><br></div><div>=
...command: &#39;/opt/sw/bin/python3.10&#39; &#39;-W&#39; &#39;ignore&#39; =
&#39;-u&#39; &#39;/opt/sw/src/fink.build/duplicity-3.1.0-1/duplicity-rel.3.=
1.0/duplicity/__main__.py&#39; &#39;full&#39; &#39;/var/folders/6b/85yg9bp9=
4rv55dzbdp78thp40000kr/T/testfiles/various_file_types&#39; &#39;fortestsonl=
y:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output&#39; =
&#39;--volsize=3D1&#39; &#39;--name=3Dissue908&#39; &#39;--encrypt-key=3D83=
9E6A2856538CCF&#39; &#39;-v0&#39; &#39;--no-print-statistics&#39; &#39;--ar=
chive-dir=3D/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/cach=
e&#39; &lt; /dev/null</div><div>...cwd: /private/var/folders/6b/85yg9bp94rv=
55dzbdp78thp40000kr/T</div><div>...output:</div><div>...return_val: 0</div>=
<div>------------------------------ Captured log call ---------------------=
----------</div><div>Level 8 =C2=A0duplicity:log.py:100 TestBackend is not =
made for production use!</div><div>Level 8 =C2=A0duplicity:log.py:100 TestB=
ackend is not made for production use!</div><div>Level 8 =C2=A0duplicity:lo=
g.py:100 TestBackend is not made for production use!</div><div>Level 8 =C2=
=A0duplicity:log.py:100 TestBackend is not made for production use!</div><d=
iv>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D short test summary info =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</div></div></div></blockquote=
><div>-Scott</div><div><div><br><blockquote type=3D"cite"><div>On Jun 16, 2=
026, at 1:10=E2=80=AFPM, Kenneth Loafman via Duplicity-talk &lt;<a href=3D"=
mailto:[email protected]" target=3D"_blank">[email protected]=
rg</a>&gt; wrote:</div><br><div><div dir=3D"ltr">Hi everyone,<br><br>I am p=
leased to announce the release of duplicity version 3.1.0.<br><br>This rele=
ase follows version 3.0.7 and includes a minor version bump to reflect a si=
gnificant new feature. Thanks to elmuz&#39;s contribution, restore operatio=
ns can now use --include, --exclude, --include-regexp, and --include-fileli=
st directly from the command line.<br><br>There are many other improvements=
 and bug fixes included in this update. Please see the CHANGELOG below for =
full details.<br><br>Thanks,<br>Ken<br></div></div></blockquote></div><br><=
/div></div></div></div></div></div>________________________________________=
_______<br>
Duplicity-talk mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">Duplicity-ta=
[email protected]</a><br>
<a href=3D"https://lists.nongnu.org/mailman/listinfo/duplicity-talk" rel=3D=
"noreferrer" target=3D"_blank">https://lists.nongnu.org/mailman/listinfo/du=
plicity-talk</a><br>
</blockquote></div></div>
</div>

--00000000000086987b065554850d--


--===============3413799888231608090==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRHVwbGljaXR5
LXRhbGsgbWFpbGluZyBsaXN0CkR1cGxpY2l0eS10YWxrQG5vbmdudS5vcmcKaHR0cHM6Ly9saXN0
cy5ub25nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZHVwbGljaXR5LXRhbGsK

--===============3413799888231608090==--