sbuild (Debian sbuild) 0.86.3~bpo12+1 (03 November 2024) on debusine-worker-arm64-demeter-07.freexian.com
+==============================================================================+
| python-passlib 1.7.4-4 (arm64) Mon, 18 Nov 2024 05:05:20 +0000 |
+==============================================================================+
Package: python-passlib
Version: 1.7.4-4
Source Version: 1.7.4-4
Distribution: sid
Machine Architecture: arm64
Host Architecture: arm64
Build Architecture: arm64
Build Type: binary
I: No tarballs found in /var/lib/debusine/worker/.cache/sbuild
Unpacking /var/lib/debusine/worker/system-images/957781/system.tar.xz to /tmp/tmp.sbuild.ifNckBBacr...
I: NOTICE: Log filtering will replace 'sbuild-unshare-dummy-location' with '<<CHROOT>>'
+------------------------------------------------------------------------------+
| Chroot Setup Commands |
+------------------------------------------------------------------------------+
rm -f /etc/resolv.conf
----------------------
I: Finished running 'rm -f /etc/resolv.conf'.
Finished processing commands.
--------------------------------------------------------------------------------
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/dpkg-dbgsym_1.22.12~1.gbp82cafd_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/dpkg_1.22.12~1.gbp82cafd_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/dselect-dbgsym_1.22.12~1.gbp82cafd_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/dselect_1.22.12~1.gbp82cafd_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/libdpkg-dev_1.22.12~1.gbp82cafd_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/dpkg-dev_1.22.12~1.gbp82cafd_all.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-_edlcix1/libdpkg-perl_1.22.12~1.gbp82cafd_all.deb to /<<CHROOT>>...
I: NOTICE: Log filtering will replace 'build/python-passlib-r7JcYl/resolver-xrhrHL' with '<<RESOLVERDIR>>'
+------------------------------------------------------------------------------+
| Update chroot |
+------------------------------------------------------------------------------+
Get:1 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ InRelease
Ign:1 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ InRelease
Get:2 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ Release [606 B]
Get:3 http://deb.debian.org/debian sid InRelease [202 kB]
Get:2 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ Release [606 B]
Get:4 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ Release.gpg
Ign:4 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ Release.gpg
Get:5 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ Packages [9246 B]
Get:6 http://deb.debian.org/debian sid/main arm64 Packages [9954 kB]
Get:7 http://deb.debian.org/debian sid/main arm64 Components [4906 kB]
Fetched 15.1 MB in 2s (6397 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
The following packages will be upgraded:
apt bsdextrautils bsdutils debianutils dpkg dpkg-dev libapt-pkg6.0t64
libaudit-common libaudit1 libblkid1 libbrotli1 libcap-ng0 libdpkg-perl
libglib2.0-0t64 libmarkdown2 libmount1 libpcre2-8-0 libseccomp2 libselinux1
libsemanage2 libsmartcols1 libsystemd0 libudev1 libuuid1 libxml2 login
login.defs mount passwd util-linux
30 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 9274 kB/12.8 MB of archives.
After this operation, 603 kB disk space will be freed.
Get:1 http://deb.debian.org/debian sid/main arm64 bsdutils arm64 1:2.40.2-11 [104 kB]
Get:2 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ dpkg 1.22.12~1.gbp82cafd [1513 kB]
Get:3 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ dpkg-dev 1.22.12~1.gbp82cafd [1337 kB]
Get:4 http://deb.debian.org/debian sid/main arm64 debianutils arm64 5.21 [92.1 kB]
Get:5 http://deb.debian.org/debian sid/main arm64 libsystemd0 arm64 257~rc2-3 [416 kB]
Get:6 file:/build/python-passlib-r7JcYl/resolver-MZw9Ij/apt_archive ./ libdpkg-perl 1.22.12~1.gbp82cafd [647 kB]
Get:7 http://deb.debian.org/debian sid/main arm64 libudev1 arm64 257~rc2-3 [139 kB]
Get:8 http://deb.debian.org/debian sid/main arm64 libapt-pkg6.0t64 arm64 2.9.11 [921 kB]
Get:9 http://deb.debian.org/debian sid/main arm64 bsdextrautils arm64 2.40.2-11 [91.2 kB]
Get:10 http://deb.debian.org/debian sid/main arm64 libblkid1 arm64 2.40.2-11 [162 kB]
Get:11 http://deb.debian.org/debian sid/main arm64 libmount1 arm64 2.40.2-11 [190 kB]
Get:12 http://deb.debian.org/debian sid/main arm64 libsmartcols1 arm64 2.40.2-11 [135 kB]
Get:13 http://deb.debian.org/debian sid/main arm64 mount arm64 2.40.2-11 [153 kB]
Get:14 http://deb.debian.org/debian sid/main arm64 libuuid1 arm64 2.40.2-11 [35.7 kB]
Get:15 http://deb.debian.org/debian sid/main arm64 util-linux arm64 2.40.2-11 [1170 kB]
Get:16 http://deb.debian.org/debian sid/main arm64 libpcre2-8-0 arm64 10.44-4 [243 kB]
Get:17 http://deb.debian.org/debian sid/main arm64 libselinux1 arm64 3.7-3+b1 [72.1 kB]
Get:18 http://deb.debian.org/debian sid/main arm64 libseccomp2 arm64 2.5.5-1+b3 [46.8 kB]
Get:19 http://deb.debian.org/debian sid/main arm64 apt arm64 2.9.11 [1287 kB]
Get:20 http://deb.debian.org/debian sid/main arm64 libaudit-common all 1:4.0.2-2 [12.7 kB]
Get:21 http://deb.debian.org/debian sid/main arm64 libcap-ng0 arm64 0.8.5-3+b1 [17.0 kB]
Get:22 http://deb.debian.org/debian sid/main arm64 libaudit1 arm64 1:4.0.2-2 [54.2 kB]
Get:23 http://deb.debian.org/debian sid/main arm64 login arm64 1:4.16.0-2+really2.40.2-11 [80.0 kB]
Get:24 http://deb.debian.org/debian sid/main arm64 login.defs all 1:4.16.0-5 [185 kB]
Get:25 http://deb.debian.org/debian sid/main arm64 libsemanage2 arm64 3.7-2+b1 [84.5 kB]
Get:26 http://deb.debian.org/debian sid/main arm64 passwd arm64 1:4.16.0-5 [1210 kB]
Get:27 http://deb.debian.org/debian sid/main arm64 libbrotli1 arm64 1.1.0-2+b6 [297 kB]
Get:28 http://deb.debian.org/debian sid/main arm64 libglib2.0-0t64 arm64 2.82.2-3 [1411 kB]
Get:29 http://deb.debian.org/debian sid/main arm64 libmarkdown2 arm64 2.2.7-2.1 [33.1 kB]
Get:30 http://deb.debian.org/debian sid/main arm64 libxml2 arm64 2.12.7+dfsg+really2.9.14-0.2+b1 [630 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 9274 kB in 0s (56.0 MB/s)
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17129 files and directories currently installed.)
Preparing to unpack .../bsdutils_1%3a2.40.2-11_arm64.deb ...
Unpacking bsdutils (1:2.40.2-11) over (1:2.40.2-10) ...
Setting up bsdutils (1:2.40.2-11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17129 files and directories currently installed.)
Preparing to unpack .../debianutils_5.21_arm64.deb ...
Unpacking debianutils (5.21) over (5.20+b1) ...
Setting up debianutils (5.21) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17128 files and directories currently installed.)
Preparing to unpack .../libsystemd0_257~rc2-3_arm64.deb ...
Unpacking libsystemd0:arm64 (257~rc2-3) over (257~rc1-4) ...
Setting up libsystemd0:arm64 (257~rc2-3) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17128 files and directories currently installed.)
Preparing to unpack .../libudev1_257~rc2-3_arm64.deb ...
Unpacking libudev1:arm64 (257~rc2-3) over (257~rc1-4) ...
Setting up libudev1:arm64 (257~rc2-3) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17128 files and directories currently installed.)
Preparing to unpack .../libapt-pkg6.0t64_2.9.11_arm64.deb ...
Unpacking libapt-pkg6.0t64:arm64 (2.9.11) over (2.9.10) ...
Setting up libapt-pkg6.0t64:arm64 (2.9.11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17128 files and directories currently installed.)
Preparing to unpack .../dpkg_1.22.12~1.gbp82cafd_arm64.deb ...
Unpacking dpkg (1.22.12~1.gbp82cafd) over (1.22.11) ...
Setting up dpkg (1.22.12~1.gbp82cafd) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17127 files and directories currently installed.)
Preparing to unpack .../bsdextrautils_2.40.2-11_arm64.deb ...
Unpacking bsdextrautils (2.40.2-11) over (2.40.2-10) ...
Preparing to unpack .../libblkid1_2.40.2-11_arm64.deb ...
Unpacking libblkid1:arm64 (2.40.2-11) over (2.40.2-10) ...
Setting up libblkid1:arm64 (2.40.2-11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17123 files and directories currently installed.)
Preparing to unpack .../libmount1_2.40.2-11_arm64.deb ...
Unpacking libmount1:arm64 (2.40.2-11) over (2.40.2-10) ...
Setting up libmount1:arm64 (2.40.2-11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17123 files and directories currently installed.)
Preparing to unpack .../libsmartcols1_2.40.2-11_arm64.deb ...
Unpacking libsmartcols1:arm64 (2.40.2-11) over (2.40.2-10) ...
Setting up libsmartcols1:arm64 (2.40.2-11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17123 files and directories currently installed.)
Preparing to unpack .../mount_2.40.2-11_arm64.deb ...
Unpacking mount (2.40.2-11) over (2.40.2-10) ...
Preparing to unpack .../libuuid1_2.40.2-11_arm64.deb ...
Unpacking libuuid1:arm64 (2.40.2-11) over (2.40.2-10) ...
Setting up libuuid1:arm64 (2.40.2-11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17123 files and directories currently installed.)
Preparing to unpack .../util-linux_2.40.2-11_arm64.deb ...
Unpacking util-linux (2.40.2-11) over (2.40.2-10) ...
Setting up util-linux (2.40.2-11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17120 files and directories currently installed.)
Preparing to unpack .../libpcre2-8-0_10.44-4_arm64.deb ...
Unpacking libpcre2-8-0:arm64 (10.44-4) over (10.42-4+b2) ...
Setting up libpcre2-8-0:arm64 (10.44-4) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17119 files and directories currently installed.)
Preparing to unpack .../libselinux1_3.7-3+b1_arm64.deb ...
Unpacking libselinux1:arm64 (3.7-3+b1) over (3.7-3) ...
Setting up libselinux1:arm64 (3.7-3+b1) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17120 files and directories currently installed.)
Preparing to unpack .../libseccomp2_2.5.5-1+b3_arm64.deb ...
Unpacking libseccomp2:arm64 (2.5.5-1+b3) over (2.5.5-1+b2) ...
Setting up libseccomp2:arm64 (2.5.5-1+b3) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17120 files and directories currently installed.)
Preparing to unpack .../archives/apt_2.9.11_arm64.deb ...
Unpacking apt (2.9.11) over (2.9.10) ...
Setting up apt (2.9.11) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17117 files and directories currently installed.)
Preparing to unpack .../libaudit-common_1%3a4.0.2-2_all.deb ...
Unpacking libaudit-common (1:4.0.2-2) over (1:4.0.1-3) ...
Setting up libaudit-common (1:4.0.2-2) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17117 files and directories currently installed.)
Preparing to unpack .../libcap-ng0_0.8.5-3+b1_arm64.deb ...
Unpacking libcap-ng0:arm64 (0.8.5-3+b1) over (0.8.5-3) ...
Setting up libcap-ng0:arm64 (0.8.5-3+b1) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17118 files and directories currently installed.)
Preparing to unpack .../libaudit1_1%3a4.0.2-2_arm64.deb ...
Unpacking libaudit1:arm64 (1:4.0.2-2) over (1:4.0.1-3) ...
Setting up libaudit1:arm64 (1:4.0.2-2) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17118 files and directories currently installed.)
Preparing to unpack .../0-login_1%3a4.16.0-2+really2.40.2-11_arm64.deb ...
Unpacking login (1:4.16.0-2+really2.40.2-11) over (1:4.16.0-2+really2.40.2-10) ...
Preparing to unpack .../1-login.defs_1%3a4.16.0-5_all.deb ...
Unpacking login.defs (1:4.16.0-5) over (1:4.16.0-4) ...
Preparing to unpack .../2-libsemanage2_3.7-2+b1_arm64.deb ...
Unpacking libsemanage2:arm64 (3.7-2+b1) over (3.7-2) ...
Preparing to unpack .../3-passwd_1%3a4.16.0-5_arm64.deb ...
Unpacking passwd (1:4.16.0-5) over (1:4.16.0-4) ...
Preparing to unpack .../4-dpkg-dev_1.22.12~1.gbp82cafd_all.deb ...
Unpacking dpkg-dev (1.22.12~1.gbp82cafd) over (1.22.11) ...
Preparing to unpack .../5-libdpkg-perl_1.22.12~1.gbp82cafd_all.deb ...
Unpacking libdpkg-perl (1.22.12~1.gbp82cafd) over (1.22.11) ...
Preparing to unpack .../6-libbrotli1_1.1.0-2+b6_arm64.deb ...
Unpacking libbrotli1:arm64 (1.1.0-2+b6) over (1.1.0-2+b5) ...
Preparing to unpack .../7-libglib2.0-0t64_2.82.2-3_arm64.deb ...
Unpacking libglib2.0-0t64:arm64 (2.82.2-3) over (2.82.2-2) ...
Preparing to unpack .../8-libmarkdown2_2.2.7-2.1_arm64.deb ...
Unpacking libmarkdown2:arm64 (2.2.7-2.1) over (2.2.7-2+b1) ...
Preparing to unpack .../9-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_arm64.deb ...
Unpacking libxml2:arm64 (2.12.7+dfsg+really2.9.14-0.2+b1) over (2.12.7+dfsg+really2.9.14-0.1) ...
Setting up bsdextrautils (2.40.2-11) ...
Setting up login.defs (1:4.16.0-5) ...
Installing new version of config file /etc/login.defs ...
Setting up libbrotli1:arm64 (1.1.0-2+b6) ...
Setting up libglib2.0-0t64:arm64 (2.82.2-3) ...
No schema files found: doing nothing.
Setting up libdpkg-perl (1.22.12~1.gbp82cafd) ...
Setting up mount (2.40.2-11) ...
Setting up libsemanage2:arm64 (3.7-2+b1) ...
Setting up libxml2:arm64 (2.12.7+dfsg+really2.9.14-0.2+b1) ...
Setting up libmarkdown2:arm64 (2.2.7-2.1) ...
Setting up login (1:4.16.0-2+really2.40.2-11) ...
Setting up dpkg-dev (1.22.12~1.gbp82cafd) ...
Setting up passwd (1:4.16.0-5) ...
Processing triggers for man-db (2.13.0-1) ...
Processing triggers for libc-bin (2.40-3) ...
+------------------------------------------------------------------------------+
| Fetch source files |
+------------------------------------------------------------------------------+
Local sources
-------------
/tmp/debusine-fetch-exec-upload-_edlcix1/python-passlib_1.7.4-4.dsc exists in /tmp/debusine-fetch-exec-upload-_edlcix1; copying to chroot
I: NOTICE: Log filtering will replace 'build/python-passlib-r7JcYl/python-passlib-1.7.4' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/python-passlib-r7JcYl' with '<<BUILDDIR>>'
+------------------------------------------------------------------------------+
| Install package build dependencies |
+------------------------------------------------------------------------------+
Setup apt archive
-----------------
Merged Build-Depends: debhelper-compat (= 13), dh-python, python3-all, python3-setuptools, python3-pytest, build-essential, fakeroot
Filtered Build-Depends: debhelper-compat (= 13), dh-python, python3-all, python3-setuptools, python3-pytest, build-essential, fakeroot
dpkg-deb: warning: root directory has unusual owner or group 998:999.
Hint: either pass --root-owner-group, see dpkg-build-api(7) or add an explicit 'Rules-Requires-Root: no' in debian/control.
dpkg-deb: warning: ignoring 1 warning about the control file(s)
dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<<RESOLVERDIR>>/apt_archive/sbuild-build-depends-main-dummy.deb'.
Ign:1 copy:/<<RESOLVERDIR>>/apt_archive ./ InRelease
Get:2 copy:/<<RESOLVERDIR>>/apt_archive ./ Release [609 B]
Ign:3 copy:/<<RESOLVERDIR>>/apt_archive ./ Release.gpg
Get:4 copy:/<<RESOLVERDIR>>/apt_archive ./ Sources [677 B]
Get:5 copy:/<<RESOLVERDIR>>/apt_archive ./ Packages [709 B]
Fetched 1995 B in 0s (170 kB/s)
Reading package lists...
Get:1 file:/<<BUILDDIR>>/resolver-MZw9Ij/apt_archive ./ InRelease
Ign:1 file:/<<BUILDDIR>>/resolver-MZw9Ij/apt_archive ./ InRelease
Get:2 file:/<<BUILDDIR>>/resolver-MZw9Ij/apt_archive ./ Release [606 B]
Get:2 file:/<<BUILDDIR>>/resolver-MZw9Ij/apt_archive ./ Release [606 B]
Get:3 file:/<<BUILDDIR>>/resolver-MZw9Ij/apt_archive ./ Release.gpg
Ign:3 file:/<<BUILDDIR>>/resolver-MZw9Ij/apt_archive ./ Release.gpg
Reading package lists...
Reading package lists...
Install main build dependencies (apt-based resolver)
----------------------------------------------------
Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
autoconf automake autopoint autotools-dev build-essential cpp cpp-14
cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper dh-autoreconf
dh-python dh-strip-nondeterminism dwz fakeroot g++ g++-14
g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-14
gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu libasan8 libc-dev-bin
libc6-dev libcc1-0 libcrypt-dev libdebhelper-perl libelf1t64 libexpat1
libfakeroot libfile-stripnondeterminism-perl libgcc-14-dev libhwasan0
libisl23 libitm1 liblsan0 libmpc3 libmpfr6 libncursesw6 libnsl2
libpython3-stdlib libpython3.12-minimal libpython3.12-stdlib
libpython3.13-minimal libpython3.13-stdlib libstdc++-14-dev libtirpc-common
libtirpc3t64 libtool libtsan2 libubsan1 linux-libc-dev m4 media-types
po-debconf python3 python3-all python3-autocommand python3-inflect
python3-iniconfig python3-jaraco.context python3-jaraco.functools
python3-jaraco.text python3-minimal python3-more-itertools python3-packaging
python3-pkg-resources python3-pluggy python3-pytest python3-setuptools
python3-typeguard python3-typing-extensions python3-zipp python3.12
python3.12-minimal python3.13 python3.13-minimal rpcsvc-proto
Suggested packages:
autoconf-archive gnu-standards autoconf-doc cpp-doc gcc-14-locales
cpp-14-doc dh-make flit python3-build python3-installer python3-wheel
gcc-14-doc gcc-multilib manpages-dev flex bison gdb gcc-doc
gdb-aarch64-linux-gnu libc-devtools glibc-doc libstdc++-14-doc libtool-doc
gfortran | fortran95-compiler gcj-jdk m4-doc libmail-box-perl python3-doc
python3-tk python3-venv python-setuptools-doc python3.12-venv python3.12-doc
binfmt-support python3.13-venv python3.13-doc
Recommended packages:
manpages manpages-dev libarchive-cpio-perl libgpm2 libltdl-dev
libmail-sendmail-perl python3-pygments
The following NEW packages will be installed:
autoconf automake autopoint autotools-dev build-essential cpp cpp-14
cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper dh-autoreconf
dh-python dh-strip-nondeterminism dwz fakeroot g++ g++-14
g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-14
gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu libasan8 libc-dev-bin
libc6-dev libcc1-0 libcrypt-dev libdebhelper-perl libelf1t64 libexpat1
libfakeroot libfile-stripnondeterminism-perl libgcc-14-dev libhwasan0
libisl23 libitm1 liblsan0 libmpc3 libmpfr6 libncursesw6 libnsl2
libpython3-stdlib libpython3.12-minimal libpython3.12-stdlib
libpython3.13-minimal libpython3.13-stdlib libstdc++-14-dev libtirpc-common
libtirpc3t64 libtool libtsan2 libubsan1 linux-libc-dev m4 media-types
po-debconf python3 python3-all python3-autocommand python3-inflect
python3-iniconfig python3-jaraco.context python3-jaraco.functools
python3-jaraco.text python3-minimal python3-more-itertools python3-packaging
python3-pkg-resources python3-pluggy python3-pytest python3-setuptools
python3-typeguard python3-typing-extensions python3-zipp python3.12
python3.12-minimal python3.13 python3.13-minimal rpcsvc-proto
sbuild-build-depends-main-dummy
0 upgraded, 81 newly installed, 0 to remove and 0 not upgraded.
Need to get 73.7 MB of archives.
After this operation, 296 MB of additional disk space will be used.
Get:1 copy:/<<RESOLVERDIR>>/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [912 B]
Get:2 http://deb.debian.org/debian sid/main arm64 libpython3.12-minimal arm64 3.12.7-3 [808 kB]
Get:3 http://deb.debian.org/debian sid/main arm64 libexpat1 arm64 2.6.4-1 [90.7 kB]
Get:4 http://deb.debian.org/debian sid/main arm64 python3.12-minimal arm64 3.12.7-3 [1940 kB]
Get:5 http://deb.debian.org/debian sid/main arm64 python3-minimal arm64 3.12.7-1 [26.8 kB]
Get:6 http://deb.debian.org/debian sid/main arm64 media-types all 10.1.0 [26.9 kB]
Get:7 http://deb.debian.org/debian sid/main arm64 libncursesw6 arm64 6.5-2+b1 [125 kB]
Get:8 http://deb.debian.org/debian sid/main arm64 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB]
Get:9 http://deb.debian.org/debian sid/main arm64 libtirpc3t64 arm64 1.3.4+ds-1.3+b1 [78.7 kB]
Get:10 http://deb.debian.org/debian sid/main arm64 libnsl2 arm64 1.3.0-3+b3 [37.9 kB]
Get:11 http://deb.debian.org/debian sid/main arm64 libpython3.12-stdlib arm64 3.12.7-3 [1902 kB]
Get:12 http://deb.debian.org/debian sid/main arm64 python3.12 arm64 3.12.7-3 [671 kB]
Get:13 http://deb.debian.org/debian sid/main arm64 libpython3-stdlib arm64 3.12.7-1 [9708 B]
Get:14 http://deb.debian.org/debian sid/main arm64 python3 arm64 3.12.7-1 [27.8 kB]
Get:15 http://deb.debian.org/debian sid/main arm64 libpython3.13-minimal arm64 3.13.0-2 [850 kB]
Get:16 http://deb.debian.org/debian sid/main arm64 python3.13-minimal arm64 3.13.0-2 [1838 kB]
Get:17 http://deb.debian.org/debian sid/main arm64 m4 arm64 1.4.19-4 [277 kB]
Get:18 http://deb.debian.org/debian sid/main arm64 autoconf all 2.72-3 [493 kB]
Get:19 http://deb.debian.org/debian sid/main arm64 autotools-dev all 20220109.1 [51.6 kB]
Get:20 http://deb.debian.org/debian sid/main arm64 automake all 1:1.16.5-1.3 [823 kB]
Get:21 http://deb.debian.org/debian sid/main arm64 autopoint all 0.22.5-2 [723 kB]
Get:22 http://deb.debian.org/debian sid/main arm64 libc-dev-bin arm64 2.40-3 [50.9 kB]
Get:23 http://deb.debian.org/debian sid/main arm64 linux-libc-dev all 6.11.7-1 [2454 kB]
Get:24 http://deb.debian.org/debian sid/main arm64 libcrypt-dev arm64 1:4.4.36-5 [122 kB]
Get:25 http://deb.debian.org/debian sid/main arm64 rpcsvc-proto arm64 1.4.3-1+b1 [60.5 kB]
Get:26 http://deb.debian.org/debian sid/main arm64 libc6-dev arm64 2.40-3 [1591 kB]
Get:27 http://deb.debian.org/debian sid/main arm64 libisl23 arm64 0.27-1 [601 kB]
Get:28 http://deb.debian.org/debian sid/main arm64 libmpfr6 arm64 4.2.1-1+b2 [680 kB]
Get:29 http://deb.debian.org/debian sid/main arm64 libmpc3 arm64 1.3.1-1+b3 [50.5 kB]
Get:30 http://deb.debian.org/debian sid/main arm64 cpp-14-aarch64-linux-gnu arm64 14.2.0-8 [9166 kB]
Get:31 http://deb.debian.org/debian sid/main arm64 cpp-14 arm64 14.2.0-8 [1284 B]
Get:32 http://deb.debian.org/debian sid/main arm64 cpp-aarch64-linux-gnu arm64 4:14.2.0-1 [4832 B]
Get:33 http://deb.debian.org/debian sid/main arm64 cpp arm64 4:14.2.0-1 [1568 B]
Get:34 http://deb.debian.org/debian sid/main arm64 libcc1-0 arm64 14.2.0-8 [42.2 kB]
Get:35 http://deb.debian.org/debian sid/main arm64 libitm1 arm64 14.2.0-8 [24.2 kB]
Get:36 http://deb.debian.org/debian sid/main arm64 libasan8 arm64 14.2.0-8 [2579 kB]
Get:37 http://deb.debian.org/debian sid/main arm64 liblsan0 arm64 14.2.0-8 [1161 kB]
Get:38 http://deb.debian.org/debian sid/main arm64 libtsan2 arm64 14.2.0-8 [2386 kB]
Get:39 http://deb.debian.org/debian sid/main arm64 libubsan1 arm64 14.2.0-8 [1039 kB]
Get:40 http://deb.debian.org/debian sid/main arm64 libhwasan0 arm64 14.2.0-8 [1442 kB]
Get:41 http://deb.debian.org/debian sid/main arm64 libgcc-14-dev arm64 14.2.0-8 [2365 kB]
Get:42 http://deb.debian.org/debian sid/main arm64 gcc-14-aarch64-linux-gnu arm64 14.2.0-8 [17.7 MB]
Get:43 http://deb.debian.org/debian sid/main arm64 gcc-14 arm64 14.2.0-8 [519 kB]
Get:44 http://deb.debian.org/debian sid/main arm64 gcc-aarch64-linux-gnu arm64 4:14.2.0-1 [1440 B]
Get:45 http://deb.debian.org/debian sid/main arm64 gcc arm64 4:14.2.0-1 [5136 B]
Get:46 http://deb.debian.org/debian sid/main arm64 libstdc++-14-dev arm64 14.2.0-8 [2267 kB]
Get:47 http://deb.debian.org/debian sid/main arm64 g++-14-aarch64-linux-gnu arm64 14.2.0-8 [10.1 MB]
Get:48 http://deb.debian.org/debian sid/main arm64 g++-14 arm64 14.2.0-8 [20.2 kB]
Get:49 http://deb.debian.org/debian sid/main arm64 g++-aarch64-linux-gnu arm64 4:14.2.0-1 [1200 B]
Get:50 http://deb.debian.org/debian sid/main arm64 g++ arm64 4:14.2.0-1 [1332 B]
Get:51 http://deb.debian.org/debian sid/main arm64 build-essential arm64 12.12 [4624 B]
Get:52 http://deb.debian.org/debian sid/main arm64 libdebhelper-perl all 13.20 [89.7 kB]
Get:53 http://deb.debian.org/debian sid/main arm64 libtool all 2.4.7-8 [517 kB]
Get:54 http://deb.debian.org/debian sid/main arm64 dh-autoreconf all 20 [17.1 kB]
Get:55 http://deb.debian.org/debian sid/main arm64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB]
Get:56 http://deb.debian.org/debian sid/main arm64 dh-strip-nondeterminism all 1.14.0-1 [8448 B]
Get:57 http://deb.debian.org/debian sid/main arm64 libelf1t64 arm64 0.192-4 [189 kB]
Get:58 http://deb.debian.org/debian sid/main arm64 dwz arm64 0.15-1+b1 [102 kB]
Get:59 http://deb.debian.org/debian sid/main arm64 po-debconf all 1.0.21+nmu1 [248 kB]
Get:60 http://deb.debian.org/debian sid/main arm64 debhelper all 13.20 [915 kB]
Get:61 http://deb.debian.org/debian sid/main arm64 python3-autocommand all 2.2.2-3 [13.6 kB]
Get:62 http://deb.debian.org/debian sid/main arm64 python3-more-itertools all 10.5.0-1 [63.8 kB]
Get:63 http://deb.debian.org/debian sid/main arm64 python3-typing-extensions all 4.12.2-2 [73.0 kB]
Get:64 http://deb.debian.org/debian sid/main arm64 python3-typeguard all 4.4.1-1 [37.0 kB]
Get:65 http://deb.debian.org/debian sid/main arm64 python3-inflect all 7.3.1-2 [32.4 kB]
Get:66 http://deb.debian.org/debian sid/main arm64 python3-jaraco.context all 6.0.0-1 [7984 B]
Get:67 http://deb.debian.org/debian sid/main arm64 python3-jaraco.functools all 4.1.0-1 [12.0 kB]
Get:68 http://deb.debian.org/debian sid/main arm64 python3-pkg-resources all 75.2.0-1 [213 kB]
Get:69 http://deb.debian.org/debian sid/main arm64 python3-jaraco.text all 4.0.0-1 [11.4 kB]
Get:70 http://deb.debian.org/debian sid/main arm64 python3-zipp all 3.21.0-1 [10.6 kB]
Get:71 http://deb.debian.org/debian sid/main arm64 python3-setuptools all 75.2.0-1 [731 kB]
Get:72 http://deb.debian.org/debian sid/main arm64 dh-python all 6.20241024 [109 kB]
Get:73 http://deb.debian.org/debian sid/main arm64 libfakeroot arm64 1.36-1 [29.1 kB]
Get:74 http://deb.debian.org/debian sid/main arm64 fakeroot arm64 1.36-1 [74.4 kB]
Get:75 http://deb.debian.org/debian sid/main arm64 libpython3.13-stdlib arm64 3.13.0-2 [1922 kB]
Get:76 http://deb.debian.org/debian sid/main arm64 python3.13 arm64 3.13.0-2 [730 kB]
Get:77 http://deb.debian.org/debian sid/main arm64 python3-all arm64 3.12.7-1 [1052 B]
Get:78 http://deb.debian.org/debian sid/main arm64 python3-iniconfig all 1.1.1-2 [6396 B]
Get:79 http://deb.debian.org/debian sid/main arm64 python3-packaging all 24.2-1 [55.3 kB]
Get:80 http://deb.debian.org/debian sid/main arm64 python3-pluggy all 1.5.0-1 [26.9 kB]
Get:81 http://deb.debian.org/debian sid/main arm64 python3-pytest all 8.3.3-1 [249 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 73.7 MB in 1s (99.7 MB/s)
Selecting previously unselected package libpython3.12-minimal:arm64.
(Reading database ... 17119 files and directories currently installed.)
Preparing to unpack .../libpython3.12-minimal_3.12.7-3_arm64.deb ...
Unpacking libpython3.12-minimal:arm64 (3.12.7-3) ...
Selecting previously unselected package libexpat1:arm64.
Preparing to unpack .../libexpat1_2.6.4-1_arm64.deb ...
Unpacking libexpat1:arm64 (2.6.4-1) ...
Selecting previously unselected package python3.12-minimal.
Preparing to unpack .../python3.12-minimal_3.12.7-3_arm64.deb ...
Unpacking python3.12-minimal (3.12.7-3) ...
Setting up libpython3.12-minimal:arm64 (3.12.7-3) ...
Setting up libexpat1:arm64 (2.6.4-1) ...
Setting up python3.12-minimal (3.12.7-3) ...
Selecting previously unselected package python3-minimal.
(Reading database ... 17439 files and directories currently installed.)
Preparing to unpack .../0-python3-minimal_3.12.7-1_arm64.deb ...
Unpacking python3-minimal (3.12.7-1) ...
Selecting previously unselected package media-types.
Preparing to unpack .../1-media-types_10.1.0_all.deb ...
Unpacking media-types (10.1.0) ...
Selecting previously unselected package libncursesw6:arm64.
Preparing to unpack .../2-libncursesw6_6.5-2+b1_arm64.deb ...
Unpacking libncursesw6:arm64 (6.5-2+b1) ...
Selecting previously unselected package libtirpc-common.
Preparing to unpack .../3-libtirpc-common_1.3.4+ds-1.3_all.deb ...
Unpacking libtirpc-common (1.3.4+ds-1.3) ...
Selecting previously unselected package libtirpc3t64:arm64.
Preparing to unpack .../4-libtirpc3t64_1.3.4+ds-1.3+b1_arm64.deb ...
Adding 'diversion of /lib/aarch64-linux-gnu/libtirpc.so.3 to /lib/aarch64-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64'
Adding 'diversion of /lib/aarch64-linux-gnu/libtirpc.so.3.0.0 to /lib/aarch64-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64'
Unpacking libtirpc3t64:arm64 (1.3.4+ds-1.3+b1) ...
Selecting previously unselected package libnsl2:arm64.
Preparing to unpack .../5-libnsl2_1.3.0-3+b3_arm64.deb ...
Unpacking libnsl2:arm64 (1.3.0-3+b3) ...
Selecting previously unselected package libpython3.12-stdlib:arm64.
Preparing to unpack .../6-libpython3.12-stdlib_3.12.7-3_arm64.deb ...
Unpacking libpython3.12-stdlib:arm64 (3.12.7-3) ...
Selecting previously unselected package python3.12.
Preparing to unpack .../7-python3.12_3.12.7-3_arm64.deb ...
Unpacking python3.12 (3.12.7-3) ...
Selecting previously unselected package libpython3-stdlib:arm64.
Preparing to unpack .../8-libpython3-stdlib_3.12.7-1_arm64.deb ...
Unpacking libpython3-stdlib:arm64 (3.12.7-1) ...
Setting up python3-minimal (3.12.7-1) ...
Selecting previously unselected package python3.
(Reading database ... 17912 files and directories currently installed.)
Preparing to unpack .../00-python3_3.12.7-1_arm64.deb ...
Unpacking python3 (3.12.7-1) ...
Selecting previously unselected package libpython3.13-minimal:arm64.
Preparing to unpack .../01-libpython3.13-minimal_3.13.0-2_arm64.deb ...
Unpacking libpython3.13-minimal:arm64 (3.13.0-2) ...
Selecting previously unselected package python3.13-minimal.
Preparing to unpack .../02-python3.13-minimal_3.13.0-2_arm64.deb ...
Unpacking python3.13-minimal (3.13.0-2) ...
Selecting previously unselected package m4.
Preparing to unpack .../03-m4_1.4.19-4_arm64.deb ...
Unpacking m4 (1.4.19-4) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../04-autoconf_2.72-3_all.deb ...
Unpacking autoconf (2.72-3) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../05-autotools-dev_20220109.1_all.deb ...
Unpacking autotools-dev (20220109.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../06-automake_1%3a1.16.5-1.3_all.deb ...
Unpacking automake (1:1.16.5-1.3) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../07-autopoint_0.22.5-2_all.deb ...
Unpacking autopoint (0.22.5-2) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../08-libc-dev-bin_2.40-3_arm64.deb ...
Unpacking libc-dev-bin (2.40-3) ...
Selecting previously unselected package linux-libc-dev.
Preparing to unpack .../09-linux-libc-dev_6.11.7-1_all.deb ...
Unpacking linux-libc-dev (6.11.7-1) ...
Selecting previously unselected package libcrypt-dev:arm64.
Preparing to unpack .../10-libcrypt-dev_1%3a4.4.36-5_arm64.deb ...
Unpacking libcrypt-dev:arm64 (1:4.4.36-5) ...
Selecting previously unselected package rpcsvc-proto.
Preparing to unpack .../11-rpcsvc-proto_1.4.3-1+b1_arm64.deb ...
Unpacking rpcsvc-proto (1.4.3-1+b1) ...
Selecting previously unselected package libc6-dev:arm64.
Preparing to unpack .../12-libc6-dev_2.40-3_arm64.deb ...
Unpacking libc6-dev:arm64 (2.40-3) ...
Selecting previously unselected package libisl23:arm64.
Preparing to unpack .../13-libisl23_0.27-1_arm64.deb ...
Unpacking libisl23:arm64 (0.27-1) ...
Selecting previously unselected package libmpfr6:arm64.
Preparing to unpack .../14-libmpfr6_4.2.1-1+b2_arm64.deb ...
Unpacking libmpfr6:arm64 (4.2.1-1+b2) ...
Selecting previously unselected package libmpc3:arm64.
Preparing to unpack .../15-libmpc3_1.3.1-1+b3_arm64.deb ...
Unpacking libmpc3:arm64 (1.3.1-1+b3) ...
Selecting previously unselected package cpp-14-aarch64-linux-gnu.
Preparing to unpack .../16-cpp-14-aarch64-linux-gnu_14.2.0-8_arm64.deb ...
Unpacking cpp-14-aarch64-linux-gnu (14.2.0-8) ...
Selecting previously unselected package cpp-14.
Preparing to unpack .../17-cpp-14_14.2.0-8_arm64.deb ...
Unpacking cpp-14 (14.2.0-8) ...
Selecting previously unselected package cpp-aarch64-linux-gnu.
Preparing to unpack .../18-cpp-aarch64-linux-gnu_4%3a14.2.0-1_arm64.deb ...
Unpacking cpp-aarch64-linux-gnu (4:14.2.0-1) ...
Selecting previously unselected package cpp.
Preparing to unpack .../19-cpp_4%3a14.2.0-1_arm64.deb ...
Unpacking cpp (4:14.2.0-1) ...
Selecting previously unselected package libcc1-0:arm64.
Preparing to unpack .../20-libcc1-0_14.2.0-8_arm64.deb ...
Unpacking libcc1-0:arm64 (14.2.0-8) ...
Selecting previously unselected package libitm1:arm64.
Preparing to unpack .../21-libitm1_14.2.0-8_arm64.deb ...
Unpacking libitm1:arm64 (14.2.0-8) ...
Selecting previously unselected package libasan8:arm64.
Preparing to unpack .../22-libasan8_14.2.0-8_arm64.deb ...
Unpacking libasan8:arm64 (14.2.0-8) ...
Selecting previously unselected package liblsan0:arm64.
Preparing to unpack .../23-liblsan0_14.2.0-8_arm64.deb ...
Unpacking liblsan0:arm64 (14.2.0-8) ...
Selecting previously unselected package libtsan2:arm64.
Preparing to unpack .../24-libtsan2_14.2.0-8_arm64.deb ...
Unpacking libtsan2:arm64 (14.2.0-8) ...
Selecting previously unselected package libubsan1:arm64.
Preparing to unpack .../25-libubsan1_14.2.0-8_arm64.deb ...
Unpacking libubsan1:arm64 (14.2.0-8) ...
Selecting previously unselected package libhwasan0:arm64.
Preparing to unpack .../26-libhwasan0_14.2.0-8_arm64.deb ...
Unpacking libhwasan0:arm64 (14.2.0-8) ...
Selecting previously unselected package libgcc-14-dev:arm64.
Preparing to unpack .../27-libgcc-14-dev_14.2.0-8_arm64.deb ...
Unpacking libgcc-14-dev:arm64 (14.2.0-8) ...
Selecting previously unselected package gcc-14-aarch64-linux-gnu.
Preparing to unpack .../28-gcc-14-aarch64-linux-gnu_14.2.0-8_arm64.deb ...
Unpacking gcc-14-aarch64-linux-gnu (14.2.0-8) ...
Selecting previously unselected package gcc-14.
Preparing to unpack .../29-gcc-14_14.2.0-8_arm64.deb ...
Unpacking gcc-14 (14.2.0-8) ...
Selecting previously unselected package gcc-aarch64-linux-gnu.
Preparing to unpack .../30-gcc-aarch64-linux-gnu_4%3a14.2.0-1_arm64.deb ...
Unpacking gcc-aarch64-linux-gnu (4:14.2.0-1) ...
Selecting previously unselected package gcc.
Preparing to unpack .../31-gcc_4%3a14.2.0-1_arm64.deb ...
Unpacking gcc (4:14.2.0-1) ...
Selecting previously unselected package libstdc++-14-dev:arm64.
Preparing to unpack .../32-libstdc++-14-dev_14.2.0-8_arm64.deb ...
Unpacking libstdc++-14-dev:arm64 (14.2.0-8) ...
Selecting previously unselected package g++-14-aarch64-linux-gnu.
Preparing to unpack .../33-g++-14-aarch64-linux-gnu_14.2.0-8_arm64.deb ...
Unpacking g++-14-aarch64-linux-gnu (14.2.0-8) ...
Selecting previously unselected package g++-14.
Preparing to unpack .../34-g++-14_14.2.0-8_arm64.deb ...
Unpacking g++-14 (14.2.0-8) ...
Selecting previously unselected package g++-aarch64-linux-gnu.
Preparing to unpack .../35-g++-aarch64-linux-gnu_4%3a14.2.0-1_arm64.deb ...
Unpacking g++-aarch64-linux-gnu (4:14.2.0-1) ...
Selecting previously unselected package g++.
Preparing to unpack .../36-g++_4%3a14.2.0-1_arm64.deb ...
Unpacking g++ (4:14.2.0-1) ...
Selecting previously unselected package build-essential.
Preparing to unpack .../37-build-essential_12.12_arm64.deb ...
Unpacking build-essential (12.12) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../38-libdebhelper-perl_13.20_all.deb ...
Unpacking libdebhelper-perl (13.20) ...
Selecting previously unselected package libtool.
Preparing to unpack .../39-libtool_2.4.7-8_all.deb ...
Unpacking libtool (2.4.7-8) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../40-dh-autoreconf_20_all.deb ...
Unpacking dh-autoreconf (20) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../41-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../42-dh-strip-nondeterminism_1.14.0-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.14.0-1) ...
Selecting previously unselected package libelf1t64:arm64.
Preparing to unpack .../43-libelf1t64_0.192-4_arm64.deb ...
Unpacking libelf1t64:arm64 (0.192-4) ...
Selecting previously unselected package dwz.
Preparing to unpack .../44-dwz_0.15-1+b1_arm64.deb ...
Unpacking dwz (0.15-1+b1) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../45-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../46-debhelper_13.20_all.deb ...
Unpacking debhelper (13.20) ...
Selecting previously unselected package python3-autocommand.
Preparing to unpack .../47-python3-autocommand_2.2.2-3_all.deb ...
Unpacking python3-autocommand (2.2.2-3) ...
Selecting previously unselected package python3-more-itertools.
Preparing to unpack .../48-python3-more-itertools_10.5.0-1_all.deb ...
Unpacking python3-more-itertools (10.5.0-1) ...
Selecting previously unselected package python3-typing-extensions.
Preparing to unpack .../49-python3-typing-extensions_4.12.2-2_all.deb ...
Unpacking python3-typing-extensions (4.12.2-2) ...
Selecting previously unselected package python3-typeguard.
Preparing to unpack .../50-python3-typeguard_4.4.1-1_all.deb ...
Unpacking python3-typeguard (4.4.1-1) ...
Selecting previously unselected package python3-inflect.
Preparing to unpack .../51-python3-inflect_7.3.1-2_all.deb ...
Unpacking python3-inflect (7.3.1-2) ...
Selecting previously unselected package python3-jaraco.context.
Preparing to unpack .../52-python3-jaraco.context_6.0.0-1_all.deb ...
Unpacking python3-jaraco.context (6.0.0-1) ...
Selecting previously unselected package python3-jaraco.functools.
Preparing to unpack .../53-python3-jaraco.functools_4.1.0-1_all.deb ...
Unpacking python3-jaraco.functools (4.1.0-1) ...
Selecting previously unselected package python3-pkg-resources.
Preparing to unpack .../54-python3-pkg-resources_75.2.0-1_all.deb ...
Unpacking python3-pkg-resources (75.2.0-1) ...
Selecting previously unselected package python3-jaraco.text.
Preparing to unpack .../55-python3-jaraco.text_4.0.0-1_all.deb ...
Unpacking python3-jaraco.text (4.0.0-1) ...
Selecting previously unselected package python3-zipp.
Preparing to unpack .../56-python3-zipp_3.21.0-1_all.deb ...
Unpacking python3-zipp (3.21.0-1) ...
Selecting previously unselected package python3-setuptools.
Preparing to unpack .../57-python3-setuptools_75.2.0-1_all.deb ...
Unpacking python3-setuptools (75.2.0-1) ...
Selecting previously unselected package dh-python.
Preparing to unpack .../58-dh-python_6.20241024_all.deb ...
Unpacking dh-python (6.20241024) ...
Selecting previously unselected package libfakeroot:arm64.
Preparing to unpack .../59-libfakeroot_1.36-1_arm64.deb ...
Unpacking libfakeroot:arm64 (1.36-1) ...
Selecting previously unselected package fakeroot.
Preparing to unpack .../60-fakeroot_1.36-1_arm64.deb ...
Unpacking fakeroot (1.36-1) ...
Selecting previously unselected package libpython3.13-stdlib:arm64.
Preparing to unpack .../61-libpython3.13-stdlib_3.13.0-2_arm64.deb ...
Unpacking libpython3.13-stdlib:arm64 (3.13.0-2) ...
Selecting previously unselected package python3.13.
Preparing to unpack .../62-python3.13_3.13.0-2_arm64.deb ...
Unpacking python3.13 (3.13.0-2) ...
Selecting previously unselected package python3-all.
Preparing to unpack .../63-python3-all_3.12.7-1_arm64.deb ...
Unpacking python3-all (3.12.7-1) ...
Selecting previously unselected package python3-iniconfig.
Preparing to unpack .../64-python3-iniconfig_1.1.1-2_all.deb ...
Unpacking python3-iniconfig (1.1.1-2) ...
Selecting previously unselected package python3-packaging.
Preparing to unpack .../65-python3-packaging_24.2-1_all.deb ...
Unpacking python3-packaging (24.2-1) ...
Selecting previously unselected package python3-pluggy.
Preparing to unpack .../66-python3-pluggy_1.5.0-1_all.deb ...
Unpacking python3-pluggy (1.5.0-1) ...
Selecting previously unselected package python3-pytest.
Preparing to unpack .../67-python3-pytest_8.3.3-1_all.deb ...
Unpacking python3-pytest (8.3.3-1) ...
Selecting previously unselected package sbuild-build-depends-main-dummy.
Preparing to unpack .../68-sbuild-build-depends-main-dummy_0.invalid.0_arm64.deb ...
Unpacking sbuild-build-depends-main-dummy (0.invalid.0) ...
Setting up media-types (10.1.0) ...
Setting up libfile-stripnondeterminism-perl (1.14.0-1) ...
Setting up libtirpc-common (1.3.4+ds-1.3) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up libdebhelper-perl (13.20) ...
Setting up linux-libc-dev (6.11.7-1) ...
Setting up m4 (1.4.19-4) ...
Setting up libfakeroot:arm64 (1.36-1) ...
Setting up libelf1t64:arm64 (0.192-4) ...
Setting up fakeroot (1.36-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
Setting up libpython3.13-minimal:arm64 (3.13.0-2) ...
Setting up autotools-dev (20220109.1) ...
Setting up rpcsvc-proto (1.4.3-1+b1) ...
Setting up libmpfr6:arm64 (4.2.1-1+b2) ...
Setting up libmpc3:arm64 (1.3.1-1+b3) ...
Setting up autopoint (0.22.5-2) ...
Setting up libncursesw6:arm64 (6.5-2+b1) ...
Setting up autoconf (2.72-3) ...
Setting up libubsan1:arm64 (14.2.0-8) ...
Setting up dh-strip-nondeterminism (1.14.0-1) ...
Setting up dwz (0.15-1+b1) ...
Setting up libhwasan0:arm64 (14.2.0-8) ...
Setting up libcrypt-dev:arm64 (1:4.4.36-5) ...
Setting up libasan8:arm64 (14.2.0-8) ...
Setting up python3.13-minimal (3.13.0-2) ...
Setting up libtsan2:arm64 (14.2.0-8) ...
Setting up libisl23:arm64 (0.27-1) ...
Setting up libc-dev-bin (2.40-3) ...
Setting up libpython3.13-stdlib:arm64 (3.13.0-2) ...
Setting up libcc1-0:arm64 (14.2.0-8) ...
Setting up liblsan0:arm64 (14.2.0-8) ...
Setting up libitm1:arm64 (14.2.0-8) ...
Setting up automake (1:1.16.5-1.3) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up libtirpc3t64:arm64 (1.3.4+ds-1.3+b1) ...
Setting up python3.13 (3.13.0-2) ...
Setting up cpp-14-aarch64-linux-gnu (14.2.0-8) ...
Setting up libnsl2:arm64 (1.3.0-3+b3) ...
Setting up libc6-dev:arm64 (2.40-3) ...
Setting up libgcc-14-dev:arm64 (14.2.0-8) ...
Setting up libstdc++-14-dev:arm64 (14.2.0-8) ...
Setting up libpython3.12-stdlib:arm64 (3.12.7-3) ...
Setting up python3.12 (3.12.7-3) ...
Setting up cpp-aarch64-linux-gnu (4:14.2.0-1) ...
Setting up cpp-14 (14.2.0-8) ...
Setting up cpp (4:14.2.0-1) ...
Setting up gcc-14-aarch64-linux-gnu (14.2.0-8) ...
Setting up libpython3-stdlib:arm64 (3.12.7-1) ...
Setting up gcc-aarch64-linux-gnu (4:14.2.0-1) ...
Setting up g++-14-aarch64-linux-gnu (14.2.0-8) ...
Setting up python3 (3.12.7-1) ...
Setting up python3-zipp (3.21.0-1) ...
Setting up python3-autocommand (2.2.2-3) ...
Setting up gcc-14 (14.2.0-8) ...
Setting up python3-packaging (24.2-1) ...
Setting up python3-typing-extensions (4.12.2-2) ...
Setting up python3-pluggy (1.5.0-1) ...
Setting up g++-aarch64-linux-gnu (4:14.2.0-1) ...
Setting up g++-14 (14.2.0-8) ...
Setting up python3-more-itertools (10.5.0-1) ...
Setting up python3-iniconfig (1.1.1-2) ...
Setting up python3-jaraco.functools (4.1.0-1) ...
Setting up python3-jaraco.context (6.0.0-1) ...
Setting up libtool (2.4.7-8) ...
Setting up python3-pytest (8.3.3-1) ...
Setting up python3-typeguard (4.4.1-1) ...
Setting up python3-all (3.12.7-1) ...
Setting up gcc (4:14.2.0-1) ...
Setting up dh-autoreconf (20) ...
Setting up python3-inflect (7.3.1-2) ...
Setting up python3-jaraco.text (4.0.0-1) ...
Setting up g++ (4:14.2.0-1) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
Setting up build-essential (12.12) ...
Setting up python3-pkg-resources (75.2.0-1) ...
Setting up python3-setuptools (75.2.0-1) ...
Setting up debhelper (13.20) ...
Setting up dh-python (6.20241024) ...
Setting up sbuild-build-depends-main-dummy (0.invalid.0) ...
Processing triggers for man-db (2.13.0-1) ...
Processing triggers for libc-bin (2.40-3) ...
+------------------------------------------------------------------------------+
| Check architectures |
+------------------------------------------------------------------------------+
Arch check ok (arm64 included in all)
+------------------------------------------------------------------------------+
| Build environment |
+------------------------------------------------------------------------------+
Kernel: Linux 6.1.0-27-cloud-arm64 #1 SMP Debian 6.1.115-1 (2024-11-01) arm64 (aarch64)
Toolchain package versions: binutils_2.43.1-5 dpkg-dev_1.22.12~1.gbp82cafd g++-14_14.2.0-8 gcc-14_14.2.0-8 libc6-dev_2.40-3 libstdc++-14-dev_14.2.0-8 libstdc++6_14.2.0-8 linux-libc-dev_6.11.7-1
Package versions: appstream_1.0.3-1+b1 apt_2.9.11 autoconf_2.72-3 automake_1:1.16.5-1.3 autopoint_0.22.5-2 autotools-dev_20220109.1 base-files_13.5 base-passwd_3.6.5 bash_5.2.32-1+b2 binutils_2.43.1-5 binutils-aarch64-linux-gnu_2.43.1-5 binutils-common_2.43.1-5 bsdextrautils_2.40.2-11 bsdutils_1:2.40.2-11 build-essential_12.12 bzip2_1.0.8-6 ca-certificates_20240203 coreutils_9.5-1+b1 cpp_4:14.2.0-1 cpp-14_14.2.0-8 cpp-14-aarch64-linux-gnu_14.2.0-8 cpp-aarch64-linux-gnu_4:14.2.0-1 dash_0.5.12-9+b1 debconf_1.5.87 debhelper_13.20 debian-archive-keyring_2023.4 debianutils_5.21 dh-autoreconf_20 dh-python_6.20241024 dh-strip-nondeterminism_1.14.0-1 diffstat_1.66-1+b1 diffutils_1:3.10-1+b1 dpkg_1.22.12~1.gbp82cafd dpkg-dev_1.22.12~1.gbp82cafd dwz_0.15-1+b1 e2fsprogs_1.47.1-1+b1 fakeroot_1.36-1 file_1:5.45-3+b1 findutils_4.10.0-3 g++_4:14.2.0-1 g++-14_14.2.0-8 g++-14-aarch64-linux-gnu_14.2.0-8 g++-aarch64-linux-gnu_4:14.2.0-1 gcc_4:14.2.0-1 gcc-14_14.2.0-8 gcc-14-aarch64-linux-gnu_14.2.0-8 gcc-14-base_14.2.0-8 gcc-aarch64-linux-gnu_4:14.2.0-1 gettext_0.22.5-2 gettext-base_0.22.5-2 gpg_2.2.45-2 gpgconf_2.2.45-2 gpgv_2.2.45-2 grep_3.11-4+b1 groff-base_1.23.0-5 gzip_1.12-1.1+b1 hostname_3.25 init-system-helpers_1.67 intltool-debian_0.35.0+20060710.6 iso-codes_4.17.0-1 libacl1_2.3.2-2+b1 libaliased-perl_0.34-3 libappstream5_1.0.3-1+b1 libapt-pkg-perl_0.1.40+b6 libapt-pkg6.0t64_2.9.11 libarchive-zip-perl_1.68-1 libasan8_14.2.0-8 libassuan9_3.0.1-2 libatomic1_14.2.0-8 libattr1_1:2.5.2-2 libaudit-common_1:4.0.2-2 libaudit1_1:4.0.2-2 libb-hooks-endofscope-perl_0.28-1 libb-hooks-op-check-perl_0.22-3+b2 libberkeleydb-perl_0.66-1 libbinutils_2.43.1-5 libblkid1_2.40.2-11 libbrotli1_1.1.0-2+b6 libbsd0_0.12.2-2 libbz2-1.0_1.0.8-6 libc-bin_2.40-3 libc-dev-bin_2.40-3 libc6_2.40-3 libc6-dev_2.40-3 libcap-ng0_0.8.5-3+b1 libcap2_1:2.66-5+b1 libcapture-tiny-perl_0.48-2 libcc1-0_14.2.0-8 libcgi-pm-perl_4.66-1 libclass-data-inheritable-perl_0.10-1 libclass-inspector-perl_1.36-3 libclass-method-modifiers-perl_2.15-1 libclass-xsaccessor-perl_1.19-4+b4 libclone-perl_0.47-1+b1 libcom-err2_1.47.1-1+b1 libconfig-tiny-perl_2.30-1 libconst-fast-perl_0.014-2 libcpanel-json-xs-perl_4.38-1+b1 libcrypt-dev_1:4.4.36-5 libcrypt1_1:4.4.36-5 libctf-nobfd0_2.43.1-5 libctf0_2.43.1-5 libcurl3t64-gnutls_8.11.0-1 libdata-dpath-perl_0.60-1 libdata-messagepack-perl_1.02-1+b4 libdata-optlist-perl_0.114-1 libdata-validate-domain-perl_0.15-1 libdata-validate-ip-perl_0.31-1 libdata-validate-uri-perl_0.07-3 libdb5.3t64_5.3.28+dfsg2-9 libdebconfclient0_0.273 libdebhelper-perl_13.20 libdevel-callchecker-perl_0.009-1+b1 libdevel-size-perl_0.84-1+b1 libdevel-stacktrace-perl_2.0500-1 libdpkg-perl_1.22.12~1.gbp82cafd libdynaloader-functions-perl_0.004-1 libelf1t64_0.192-4 libemail-address-xs-perl_1.05-1+b4 libencode-locale-perl_1.05-3 libexception-class-perl_1.45-1 libexpat1_2.6.4-1 libext2fs2t64_1.47.1-1+b1 libfakeroot_1.36-1 libffi8_3.4.6-1 libfile-basedir-perl_0.09-2 libfile-find-rule-perl_0.34-3 libfile-listing-perl_6.16-1 libfile-sharedir-perl_1.118-3 libfile-stripnondeterminism-perl_1.14.0-1 libfont-ttf-perl_1.06-2 libgcc-14-dev_14.2.0-8 libgcc-s1_14.2.0-8 libgcrypt20_1.11.0-6 libgdbm-compat4t64_1.24-2 libgdbm6t64_1.24-2 libglib2.0-0t64_2.82.2-3 libgmp10_2:6.3.0+dfsg-2+b2 libgnutls30t64_3.8.8-2 libgomp1_14.2.0-8 libgpg-error0_1.50-4 libgprofng0_2.43.1-5 libgssapi-krb5-2_1.21.3-3 libhogweed6t64_3.10-1+b1 libhtml-form-perl_6.12-1 libhtml-html5-entities-perl_0.004-3 libhtml-parser-perl_3.83-1+b1 libhtml-tagset-perl_3.24-1 libhtml-tokeparser-simple-perl_3.16-4 libhtml-tree-perl_5.07-3 libhttp-cookies-perl_6.11-1 libhttp-date-perl_6.06-1 libhttp-message-perl_7.00-2 libhttp-negotiate-perl_6.01-2 libhwasan0_14.2.0-8 libicu72_72.1-5+b1 libidn2-0_2.3.7-2+b1 libimport-into-perl_1.002005-2 libio-html-perl_1.004-3 libio-interactive-perl_1.025-1 libio-socket-ssl-perl_2.089-1 libio-string-perl_1.08-4 libipc-run3-perl_0.049-1 libipc-system-simple-perl_1.30-2 libisl23_0.27-1 libiterator-perl_0.03+ds1-2 libiterator-util-perl_0.02+ds1-2 libitm1_14.2.0-8 libjansson4_2.14-2+b3 libjson-maybexs-perl_1.004008-1 libk5crypto3_1.21.3-3 libkeyutils1_1.6.3-4 libkrb5-3_1.21.3-3 libkrb5support0_1.21.3-3 libldap-2.5-0_2.5.18+dfsg-3+b1 liblist-compare-perl_0.55-2 liblist-someutils-perl_0.59-1 liblist-utilsby-perl_0.12-2 liblsan0_14.2.0-8 liblwp-mediatypes-perl_6.04-2 liblwp-protocol-https-perl_6.14-1 liblz1_1.15~pre2-1 liblz4-1_1.9.4-3+b1 liblzma5_5.6.3-1+b1 liblzo2-2_2.10-3+b1 libmagic-mgc_1:5.45-3+b1 libmagic1t64_1:5.45-3+b1 libmarkdown2_2.2.7-2.1 libmd0_1.1.0-2+b1 libmldbm-perl_2.05-4 libmodule-implementation-perl_0.09-2 libmodule-runtime-perl_0.016-2 libmoo-perl_2.005005-1 libmoox-aliases-perl_0.001006-2 libmount1_2.40.2-11 libmouse-perl_2.5.11-1+b1 libmpc3_1.3.1-1+b3 libmpfr6_4.2.1-1+b2 libnamespace-clean-perl_0.27-2 libncursesw6_6.5-2+b1 libnet-domain-tld-perl_1.75-4 libnet-http-perl_6.23-1 libnet-ipv6addr-perl_1.02-1 libnet-netmask-perl_2.0002-2 libnet-ssleay-perl_1.94-2 libnetaddr-ip-perl_4.079+dfsg-2+b4 libnettle8t64_3.10-1+b1 libnghttp2-14_1.64.0-1 libnghttp3-9_1.4.0-1+b1 libngtcp2-16_1.6.0-1 libngtcp2-crypto-gnutls8_1.6.0-1 libnsl2_1.3.0-3+b3 libnumber-compare-perl_0.03-3 libp11-kit0_0.25.5-2+b1 libpackage-stash-perl_0.40-1 libpam-modules_1.5.3-7+b1 libpam-modules-bin_1.5.3-7+b1 libpam-runtime_1.5.3-7 libpam0g_1.5.3-7+b1 libparams-classify-perl_0.015-2+b4 libparams-util-perl_1.102-3+b1 libpath-tiny-perl_0.146-1 libpcre2-8-0_10.44-4 libperl5.40_5.40.0-7 libperlio-gzip-perl_0.20-1+b4 libperlio-utf8-strict-perl_0.010-1+b3 libpipeline1_1.5.8-1 libproc-processtable-perl_0.636-1+b3 libpsl5t64_0.21.2-1.1+b1 libpython3-stdlib_3.12.7-1 libpython3.12-minimal_3.12.7-3 libpython3.12-stdlib_3.12.7-3 libpython3.13-minimal_3.13.0-2 libpython3.13-stdlib_3.13.0-2 libreadline8t64_8.2-5 libregexp-wildcards-perl_1.05-3 librole-tiny-perl_2.002004-1 librtmp1_2.4+20151223.gitfa8646d.1-2+b5 libsasl2-2_2.1.28+dfsg1-8 libsasl2-modules-db_2.1.28+dfsg1-8 libseccomp2_2.5.5-1+b3 libselinux1_3.7-3+b1 libsemanage-common_3.7-2 libsemanage2_3.7-2+b1 libsepol2_3.7-1 libsereal-decoder-perl_5.004+ds-1+b3 libsereal-encoder-perl_5.004+ds-1+b3 libsframe1_2.43.1-5 libsmartcols1_2.40.2-11 libsort-versions-perl_1.62-3 libsqlite3-0_3.46.1-1 libss2_1.47.1-1+b1 libssh2-1t64_1.11.1-1 libssl3t64_3.3.2-2 libstdc++-14-dev_14.2.0-8 libstdc++6_14.2.0-8 libstemmer0d_2.2.0-4+b2 libstrictures-perl_2.000006-1 libsub-exporter-perl_0.990-1 libsub-exporter-progressive-perl_0.001013-3 libsub-identify-perl_0.14-3+b3 libsub-install-perl_0.929-1 libsub-name-perl_0.27-1+b3 libsub-quote-perl_2.006008-1 libsyntax-keyword-try-perl_0.30-1+b1 libsystemd0_257~rc2-3 libtasn1-6_4.19.0-3+b3 libterm-readkey-perl_2.38-2+b4 libtext-glob-perl_0.11-3 libtext-levenshteinxs-perl_0.03-5+b4 libtext-markdown-discount-perl_0.16-1+b3 libtext-xslate-perl_3.5.9-2+b1 libtime-duration-perl_1.21-2 libtime-moment-perl_0.44-2+b4 libtimedate-perl_2.3300-2 libtinfo6_6.5-2+b1 libtirpc-common_1.3.4+ds-1.3 libtirpc3t64_1.3.4+ds-1.3+b1 libtool_2.4.7-8 libtry-tiny-perl_0.32-1 libtsan2_14.2.0-8 libubsan1_14.2.0-8 libuchardet0_0.0.8-1+b2 libudev1_257~rc2-3 libunicode-utf8-perl_0.62-2+b3 libunistring5_1.2-1+b1 liburi-perl_5.30-1 libuuid1_2.40.2-11 libvariable-magic-perl_0.64-1+b1 libwww-mechanize-perl_2.19-1 libwww-perl_6.77-1 libwww-robotrules-perl_6.02-1 libxml-libxml-perl_2.0207+dfsg+really+2.0134-5+b1 libxml-namespacesupport-perl_1.12-2 libxml-sax-base-perl_1.09-3 libxml-sax-perl_1.02+dfsg-3 libxml2_2.12.7+dfsg+really2.9.14-0.2+b1 libxmlb2_0.3.21-1 libxs-parse-keyword-perl_0.46-1+b1 libxxhash0_0.8.2-2+b2 libyaml-0-2_0.2.5-1+b2 libyaml-libyaml-perl_0.902.0+ds-2+b1 libzstd1_1.5.6+dfsg-1+b1 lintian_2.120.0 linux-libc-dev_6.11.7-1 login_1:4.16.0-2+really2.40.2-11 login.defs_1:4.16.0-5 logsave_1.47.1-1+b1 lzop_1.04-2+b1 m4_1.4.19-4 make_4.3-4.1+b1 man-db_2.13.0-1 mawk_1.3.4.20240905-1 media-types_10.1.0 mount_2.40.2-11 ncurses-base_6.5-2 ncurses-bin_6.5-2+b1 netbase_6.4 openssl_3.3.2-2 openssl-provider-legacy_3.3.2-2 passwd_1:4.16.0-5 patch_2.7.6-7+b1 patchutils_0.4.2-1+b1 perl_5.40.0-7 perl-base_5.40.0-7 perl-modules-5.40_5.40.0-7 perl-openssl-defaults_7+b2 plzip_1.11-2 po-debconf_1.0.21+nmu1 python3_3.12.7-1 python3-all_3.12.7-1 python3-autocommand_2.2.2-3 python3-inflect_7.3.1-2 python3-iniconfig_1.1.1-2 python3-jaraco.context_6.0.0-1 python3-jaraco.functools_4.1.0-1 python3-jaraco.text_4.0.0-1 python3-minimal_3.12.7-1 python3-more-itertools_10.5.0-1 python3-packaging_24.2-1 python3-pkg-resources_75.2.0-1 python3-pluggy_1.5.0-1 python3-pytest_8.3.3-1 python3-setuptools_75.2.0-1 python3-typeguard_4.4.1-1 python3-typing-extensions_4.12.2-2 python3-zipp_3.21.0-1 python3.12_3.12.7-3 python3.12-minimal_3.12.7-3 python3.13_3.13.0-2 python3.13-minimal_3.13.0-2 readline-common_8.2-5 rpcsvc-proto_1.4.3-1+b1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-2+b1 sensible-utils_0.0.24 shared-mime-info_2.4-5+b1 sysvinit-utils_3.11-1 t1utils_1.41-4+b1 tar_1.35+dfsg-3+b1 tzdata_2024b-3 ucf_3.0043+nmu1 unzip_6.0-28+b1 util-linux_2.40.2-11 xz-utils_5.6.3-1+b1 zlib1g_1:1.3.dfsg+really1.3.1-1+b1
+------------------------------------------------------------------------------+
| Build |
+------------------------------------------------------------------------------+
Unpack source
-------------
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 3.0 (quilt)
Source: python-passlib
Binary: python3-passlib
Architecture: all
Version: 1.7.4-4
Maintainer: Debian Python Team <team+python@tracker.debian.org>
Uploaders: Brian May <bam@debian.org>
Homepage: https://passlib.readthedocs.io
Standards-Version: 4.6.1
Vcs-Browser: https://salsa.debian.org/python-team/packages/python-passlib
Vcs-Git: https://salsa.debian.org/python-team/packages/python-passlib.git
Testsuite: autopkgtest
Build-Depends: debhelper-compat (= 13), dh-python, python3-all, python3-setuptools, python3-pytest
Package-List:
python3-passlib deb python optional arch=all
Checksums-Sha1:
c10ea1bbefb0cab805738f0373c57244ddce0c4f 532384 python-passlib_1.7.4.orig.tar.xz
5806dfd7a5b8fdeaf946c9dd797173cd873e5303 10664 python-passlib_1.7.4-4.debian.tar.xz
Checksums-Sha256:
83e253fa2925b4247c92d0c7632a069777d16136c7664d0e022f77ce9bda7ef5 532384 python-passlib_1.7.4.orig.tar.xz
e81d25e8bda027d383c91ee62bfe750ca12f5cd1ef1a681846f051ca39f4ae6d 10664 python-passlib_1.7.4-4.debian.tar.xz
Files:
3ef7cc35cfd92bc41c54a6666b31fda5 532384 python-passlib_1.7.4.orig.tar.xz
8f060a90512607351c9122e8e3c54b39 10664 python-passlib_1.7.4-4.debian.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEoLGp81CJVhMOekJc1BatFaxrQ/4FAmWG8ZoACgkQ1BatFaxr
Q/4qkw/9FpSqFuHyYDg5taXBfcmqBwPNAySd/X2eI6K8bGvW4OaNMzy7VRBkrNVV
euZOjquJqVnjlmIsOtMp8KTuV2q/6APMZcnnsaESf+3WNvnvw+BiUcZvG+aI5TfM
IkCOfZWTq8btGdXUM8clYq+KwXw9KriPY5SvnNmhIRU6Y5N4BiyWi1NcjJRyPJCX
pmCsMj5CKv+KlRaR1VJIUm8NKwN7Fnjhe5BlQrQP074yT5TA9VxMnKLruXYbZT/n
OPNU4fQuyrpr2MuzOyFHPLQysI5UWh8pLokvz3ZAyyqYV85yzABDy5BEUu6AipJo
t5n/PDKczEpw9KkvSykHUCKAYCzJKKEQXN1QXCP33KrYBZfuFk3WKBtUKTXqrMF0
y1WKBcbU6J8bvDMVnQfYAONu/yWSHefTVEMZRcaG++Nrj1JzMppCGXzO/iXxQpjg
z/X+Cgf+4rU6FoPg98v74xnMFlT5VAjQjVFOLnPkozYyuD+h7bBiSYTeDs+tmNdb
orjizhEXxwp0s/bSWYzhkztVX0HPuAvhatEKHe3XJ9t8dSB6wwVARBbnhYjK5Qk6
teA8xOY8dJdq2mZwf0b1JFHHUNJEFoAEUIWZVnCmioiCiBp+5iLCQAL/PqzWUTah
l4D2PYFN3PEyzrQsm9RvmdMjaHTO/sltHn0xHQL4erhnxY/oy+c=
=rO31
-----END PGP SIGNATURE-----
gpgv: Signature made Sat Dec 23 14:41:30 2023 UTC
gpgv: using RSA key A0B1A9F3508956130E7A425CD416AD15AC6B43FE
gpgv: Can't check signature: No public key
dpkg-source: warning: cannot verify inline signature for ./python-passlib_1.7.4-4.dsc: no acceptable signature found
dpkg-source: info: extracting python-passlib in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking python-passlib_1.7.4.orig.tar.xz
dpkg-source: info: unpacking python-passlib_1.7.4-4.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying 0001-no-nose.patch
dpkg-source: info: applying py3.12-use-raw-strings-to-avoid-warning.patch
dpkg-source: info: applying py3.12-avoid-utcfromtimestamp.patch
dpkg-source: info: applying py3.12-do-not-use-__future__.patch
Check disk space
----------------
Sufficient free space for build
User Environment
----------------
APT_CONFIG=/var/lib/sbuild/apt.conf
HOME=/sbuild-nonexistent
LANG=en_US.UTF-8
LC_ALL=C.UTF-8
LOGNAME=debusine-worker
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SHELL=/bin/sh
USER=debusine-worker
dpkg-buildpackage
-----------------
Command: dpkg-buildpackage -us -uc -b -rfakeroot
dpkg-buildpackage: info: source package python-passlib
dpkg-buildpackage: info: source version 1.7.4-4
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by Thomas Goirand <zigo@debian.org>
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture arm64
debian/rules clean
dh clean --with python3 --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:311: python3.13 setup.py clean
running clean
removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build' (and everything under it)
'build/bdist.linux-aarch64' does not exist -- can't clean it
'build/scripts-3.13' does not exist -- can't clean it
I: pybuild base:311: python3.12 setup.py clean
running clean
removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build' (and everything under it)
'build/bdist.linux-aarch64' does not exist -- can't clean it
'build/scripts-3.12' does not exist -- can't clean it
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary
dh binary --with python3 --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
I: pybuild base:311: python3.13 setup.py config
running config
I: pybuild base:311: python3.12 setup.py config
running config
dh_auto_build -O--buildsystem=pybuild
I: pybuild base:311: /usr/bin/python3.13 setup.py build
running build
running build_py
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/context.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/pwd.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/apache.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/apps.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/ifc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/hash.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/registry.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/totp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/exc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/hosts.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
copying passlib/win32.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_setup
copying passlib/_setup/stamp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_setup
copying passlib/_setup/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_setup
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/postgres.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/sun_md5_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/oracle.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/scrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/sha2_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/mysql.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/misc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/fshp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/cisco.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/des_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/scram.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/phpass.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/md5_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/digests.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/roundup.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/mssql.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/ldap_digests.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/bcrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/windows.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/sha1_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
copying passlib/handlers/argon2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/handlers
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto
copying passlib/crypto/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto
copying passlib/crypto/digest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto
copying passlib/crypto/_md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto
copying passlib/crypto/des.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/decor.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/handlers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/binary.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
copying passlib/utils/des.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_crypto_digest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_utils_pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_hosts.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_win32.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_apache.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_utils_md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_pwd.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_ext_django_source.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_registry.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers_bcrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_crypto_scrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers_argon2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/backports.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_apps.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers_scrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_context.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_utils_handlers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_totp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/_test_bad_register.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_crypto_des.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers_pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/__main__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_context_deprecated.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers_cisco.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/tox_support.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_crypto_builtin_md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_handlers_django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/test_ext_django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/ext
copying passlib/ext/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/ext
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/base.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/unrolled.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/_gen_files.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/_blowfish
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/_builtin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/_salsa.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/_gen_files.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/scrypt
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils/compat
copying passlib/utils/compat/_ordered_dict.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils/compat
copying passlib/utils/compat/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/utils/compat
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/ext/django
copying passlib/ext/django/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/ext/django
copying passlib/ext/django/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/ext/django
copying passlib/ext/django/models.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/ext/django
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/bip39.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/eff_prefixed.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/eff_long.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/eff_short.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/_data/wordsets
copying passlib/tests/sample1.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/sample_config_1s.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/sample1c.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
copying passlib/tests/sample1b.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests
I: pybuild base:311: /usr/bin/python3 setup.py build
running build
running build_py
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/context.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/pwd.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/apache.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/apps.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/ifc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/hash.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/registry.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/totp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/exc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/hosts.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
copying passlib/win32.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_setup
copying passlib/_setup/stamp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_setup
copying passlib/_setup/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_setup
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/postgres.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/sun_md5_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/oracle.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/scrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/sha2_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/mysql.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/misc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/fshp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/cisco.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/des_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/scram.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/phpass.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/md5_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/digests.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/roundup.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/mssql.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/ldap_digests.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/bcrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/windows.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/sha1_crypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
copying passlib/handlers/argon2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/handlers
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto
copying passlib/crypto/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto
copying passlib/crypto/digest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto
copying passlib/crypto/_md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto
copying passlib/crypto/des.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/decor.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/handlers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/binary.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
copying passlib/utils/des.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_crypto_digest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_utils_pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_hosts.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_win32.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_apache.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_utils_md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_pwd.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_ext_django_source.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_registry.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers_bcrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_crypto_scrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers_argon2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/backports.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_apps.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers_scrypt.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_context.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_utils_handlers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_totp.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/_test_bad_register.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_crypto_des.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers_pbkdf2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/__main__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_context_deprecated.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers_cisco.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/tox_support.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_crypto_builtin_md4.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_handlers_django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/test_ext_django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/ext
copying passlib/ext/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/ext
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/base.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/unrolled.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/_blowfish
copying passlib/crypto/_blowfish/_gen_files.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/_blowfish
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/_builtin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/_salsa.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/scrypt
copying passlib/crypto/scrypt/_gen_files.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/scrypt
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils/compat
copying passlib/utils/compat/_ordered_dict.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils/compat
copying passlib/utils/compat/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils/compat
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/ext/django
copying passlib/ext/django/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/ext/django
copying passlib/ext/django/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/ext/django
copying passlib/ext/django/models.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/ext/django
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/bip39.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/eff_prefixed.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/eff_long.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_data/wordsets
copying passlib/_data/wordsets/eff_short.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/_data/wordsets
copying passlib/tests/sample1.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/sample_config_1s.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/sample1c.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
copying passlib/tests/sample1b.cfg -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests
dh_auto_test -O--buildsystem=pybuild
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build; python3.13 -m pytest
============================= test session starts ==============================
platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.4.1
collected 4270 items
passlib/tests/test_apache.py ..................ss............. [ 0%]
passlib/tests/test_apps.py ........... [ 1%]
passlib/tests/test_context.py ...................................... [ 1%]
passlib/tests/test_context_deprecated.py ........................ [ 2%]
passlib/tests/test_crypto_builtin_md4.py ..... [ 2%]
passlib/tests/test_crypto_des.py .... [ 2%]
passlib/tests/test_crypto_digest.py ............ [ 2%]
passlib/tests/test_crypto_scrypt.py .....s................. [ 3%]
passlib/tests/test_ext_django.py ssssssssssssssssssssssss [ 4%]
passlib/tests/test_ext_django_source.py s [ 4%]
passlib/tests/test_handlers.py ......s......ssss...s..ssss....ssssssssss [ 5%]
ss.........s......ssss...s..sss.s...s.sssssssssss...ssssssssssssssssssss [ 6%]
ssssssssssssssssssssssssssssss................s......sss.s...sss........ [ 8%]
.s.........s......ssss...s..sssss...sssssssssss.s..sssssssssssssssssssss [ 10%]
sssssssssssssFssssssssssssss.............ssss......sss.s...sssssssssss.s [ 11%]
........s.........s...s..sss.....s.ss........s.........sssssssssss...s.. [ 13%]
sssss...ssssssssssss..s......sssssssssss...s..sssss...sssssssssss.s..s.. [ 15%]
....sssssssssss...s..sssss...ssssssssssss..s......sssssssssss...s..sssss [ 16%]
...ssssssssssss..s......sssssssssss...s..sssss...ssssssssssss..s......ss [ 18%]
sssssssss...s.ssss.s...ss..sssssssssss..s......sssssssssss...s..sssss... [ 20%]
ssssssssssss..s......sssssssssss...s..sssss...ssssssssssss..s......s.... [ 21%]
..ssss...s..ssss....ssssssssssss.........s......ssss...s..ssss....ssssss [ 23%]
ssssss.........s......ssss...s..ssss....ssssssssssss.........s......ssss [ 25%]
...s..ssss....ssssssssssss.........sssssssssss...s.ssss.s...ssssssssssss [ 26%]
..ssssssssssssssssssssssssssssssssssssssssssssssssss.............ssss... [ 28%]
..sssss....ssssssssssss...ssssssssssssssssssssssssssssssssssssssssssssss [ 30%]
sss......sssssssssss...s..sss.s...s.ssssssssss.s.sssssssssssssssssssssss [ 32%]
ssssssssssssFssssssssssssss.............ssss......ssss....ssssssssssss.. [ 33%]
.......sssssssssss...s...ssss...s...sssssssssss..s......sssssssssss...s. [ 35%]
.sssss...s...sssssssssss..s......s......ssss...s...ss.....ssssssssssss.. [ 37%]
.......s......ssss...s...ss.....ssssssssssss.........sssssssssss...s..ss [ 38%]
s.s...s.sssssssssss..s......sssssssssss...s..sss.s...ssssssssssss..s.... [ 40%]
..sssssssssss...s..sss.s...ssssssssssss..s......sssssssssss...s.ssss.s.. [ 42%]
.ssssssssssss..s......sssssssssss...s..sss.s...s...sssssssssss..s......s [ 43%]
......ssss...s..sssss...ssssssssssss.........s.............s..ssss....ss [ 45%]
.........s.........sssssssssss...s.sssssss..ssssssssssss..s......sssssss [ 47%]
ssss...s..sss.s...s...sssssssssss..sssssssssssssssssssssssssssssssssssss [ 48%]
sssssssssssss................s......ssss....sss........s....ssssssssssss [ 50%]
ssssssssssssssssssssssFssssssssssssss................s......ss.s....sss. [ 52%]
.......s...ssssssssssssssssssssssssssssssssssFssssssssssssss............ [ 53%]
....s......ss.s....sss........s.........s.........s...s..ss.s....sss.... [ 55%]
....s.........sssssssssss...s.ssss.s..ss..ssssssssss..s......sssssssssss [ 57%]
...s..ssssss.ss...ssssssssss..s [ 58%]
passlib/tests/test_handlers_argon2.py ssssssssssssssssssssssssssssssssss [ 58%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 60%]
ss [ 60%]
passlib/tests/test_handlers_bcrypt.py ssssssssssssssssssssssssssssssssss [ 61%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 63%]
ssssssssssssssssssssssssssssssssssssssFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 64%]
FFFFFFFFFFFFFFFFFsssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 66%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 68%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssFFFF [ 69%]
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFssssssssssssssssssssssss [ 71%]
sssssssssssssssssssssssss [ 72%]
passlib/tests/test_handlers_cisco.py ......sssssssssss...s..sssss...s... [ 72%]
.ssssssssss.s.s......sssssssssss...s..sssss...s....ssssssssss.s.s......s [ 74%]
s.sss.ssss...s..sss.s...s..sssssssssss..s [ 75%]
passlib/tests/test_handlers_django.py ......sssssssssss...s...ssss..ss.s [ 76%]
sssssssss..s......s......ssss...s...ss.....sssssssssssss.s........s..... [ 78%]
.ssss...s..sss.....ssssssssssssss.........s......ssss...s..sss.....sssss [ 79%]
sssssssss.........s.........s...s..sssss...sssss........s.........s..... [ 81%]
....s...s..sssss...sssss........s... [ 82%]
passlib/tests/test_handlers_pbkdf2.py .......s......ssss...s..ssss....ss [ 83%]
ssssssssss.........s.........s...s..ssss....sss........s.........s...... [ 84%]
...s...s..sssss...sss........s.........s.........s...s..sssss...sss..... [ 86%]
...s.........s.........s...s..sssss...sss........s.........s.........s.. [ 88%]
.s..sssss...sss........s.........s.........s...s..sssss...sss........s.. [ 89%]
.......s.........s...s..ssss....s...........ss........s... [ 91%]
passlib/tests/test_handlers_scrypt.py ....................s..ssss....ss. [ 91%]
........s...ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 93%]
ssssssssssssssssssssssssssssssss [ 94%]
passlib/tests/test_hosts.py .s. [ 94%]
passlib/tests/test_pwd.py ........ [ 94%]
passlib/tests/test_registry.py ...... [ 94%]
passlib/tests/test_totp.py ss.ss................................... [ 95%]
passlib/tests/test_utils.py ...s........................................ [ 96%]
........... [ 97%]
passlib/tests/test_utils_handlers.py ..........................sssssssss [ 97%]
ss...s..sssss...s.sssssssssss..s......s......ssss...s..sssss...s.sssssss [ 99%]
ssss... [ 99%]
passlib/tests/test_utils_md4.py ..... [ 99%]
passlib/tests/test_utils_pbkdf2.py ....... [ 99%]
passlib/tests/test_win32.py .. [100%]
=================================== FAILURES ===================================
________________ des_crypt_os_crypt_test.test_82_crypt_support _________________
self = <passlib.tests.test_handlers.des_crypt_os_crypt_test testMethod=test_82_crypt_support>
@doesnt_require_backend
def test_82_crypt_support(self):
"""
test platform-specific crypt() support detection
NOTE: this is mainly just a sanity check to ensure the runtime
detection is functioning correctly on some known platforms,
so that we can feel more confident it'll work right on unknown ones.
"""
# skip wrapper handlers, won't ever have crypt support
if hasattr(self.handler, "orig_prefix"):
raise self.skipTest("not applicable to wrappers")
# look for first entry that matches current system
# XXX: append "/" + platform.release() to string?
# XXX: probably should rework to support rows being dicts w/ "minver" / "maxver" keys,
# instead of hack where we add major # as part of platform regex.
using_backend = not self.using_patched_crypt
name = self.handler.name
platform = sys.platform
for pattern, expected in self.platform_crypt_support:
if re.match(pattern, platform):
break
else:
raise self.skipTest("no data for %r platform (current host support = %r)" %
(platform, using_backend))
# rules can use "state=None" to signal varied support;
# e.g. platform='freebsd8' ... sha256_crypt not added until 8.3
if expected is None:
raise self.skipTest("varied support on %r platform (current host support = %r)" %
(platform, using_backend))
# compare expectation vs reality
if expected == using_backend:
pass
elif expected:
> self.fail("expected %r platform would have native support for %r" %
(platform, name))
E AssertionError: expected 'linux' platform would have native support for 'des_crypt'
passlib/tests/utils.py:3386: AssertionError
________________ md5_crypt_os_crypt_test.test_82_crypt_support _________________
self = <passlib.tests.test_handlers.md5_crypt_os_crypt_test testMethod=test_82_crypt_support>
@doesnt_require_backend
def test_82_crypt_support(self):
"""
test platform-specific crypt() support detection
NOTE: this is mainly just a sanity check to ensure the runtime
detection is functioning correctly on some known platforms,
so that we can feel more confident it'll work right on unknown ones.
"""
# skip wrapper handlers, won't ever have crypt support
if hasattr(self.handler, "orig_prefix"):
raise self.skipTest("not applicable to wrappers")
# look for first entry that matches current system
# XXX: append "/" + platform.release() to string?
# XXX: probably should rework to support rows being dicts w/ "minver" / "maxver" keys,
# instead of hack where we add major # as part of platform regex.
using_backend = not self.using_patched_crypt
name = self.handler.name
platform = sys.platform
for pattern, expected in self.platform_crypt_support:
if re.match(pattern, platform):
break
else:
raise self.skipTest("no data for %r platform (current host support = %r)" %
(platform, using_backend))
# rules can use "state=None" to signal varied support;
# e.g. platform='freebsd8' ... sha256_crypt not added until 8.3
if expected is None:
raise self.skipTest("varied support on %r platform (current host support = %r)" %
(platform, using_backend))
# compare expectation vs reality
if expected == using_backend:
pass
elif expected:
> self.fail("expected %r platform would have native support for %r" %
(platform, name))
E AssertionError: expected 'linux' platform would have native support for 'md5_crypt'
passlib/tests/utils.py:3386: AssertionError
_______________ sha256_crypt_os_crypt_test.test_82_crypt_support _______________
self = <passlib.tests.test_handlers.sha256_crypt_os_crypt_test testMethod=test_82_crypt_support>
@doesnt_require_backend
def test_82_crypt_support(self):
"""
test platform-specific crypt() support detection
NOTE: this is mainly just a sanity check to ensure the runtime
detection is functioning correctly on some known platforms,
so that we can feel more confident it'll work right on unknown ones.
"""
# skip wrapper handlers, won't ever have crypt support
if hasattr(self.handler, "orig_prefix"):
raise self.skipTest("not applicable to wrappers")
# look for first entry that matches current system
# XXX: append "/" + platform.release() to string?
# XXX: probably should rework to support rows being dicts w/ "minver" / "maxver" keys,
# instead of hack where we add major # as part of platform regex.
using_backend = not self.using_patched_crypt
name = self.handler.name
platform = sys.platform
for pattern, expected in self.platform_crypt_support:
if re.match(pattern, platform):
break
else:
raise self.skipTest("no data for %r platform (current host support = %r)" %
(platform, using_backend))
# rules can use "state=None" to signal varied support;
# e.g. platform='freebsd8' ... sha256_crypt not added until 8.3
if expected is None:
raise self.skipTest("varied support on %r platform (current host support = %r)" %
(platform, using_backend))
# compare expectation vs reality
if expected == using_backend:
pass
elif expected:
> self.fail("expected %r platform would have native support for %r" %
(platform, name))
E AssertionError: expected 'linux' platform would have native support for 'sha256_crypt'
passlib/tests/utils.py:3386: AssertionError
_______________ sha512_crypt_os_crypt_test.test_82_crypt_support _______________
self = <passlib.tests.test_handlers.sha512_crypt_os_crypt_test testMethod=test_82_crypt_support>
@doesnt_require_backend
def test_82_crypt_support(self):
"""
test platform-specific crypt() support detection
NOTE: this is mainly just a sanity check to ensure the runtime
detection is functioning correctly on some known platforms,
so that we can feel more confident it'll work right on unknown ones.
"""
# skip wrapper handlers, won't ever have crypt support
if hasattr(self.handler, "orig_prefix"):
raise self.skipTest("not applicable to wrappers")
# look for first entry that matches current system
# XXX: append "/" + platform.release() to string?
# XXX: probably should rework to support rows being dicts w/ "minver" / "maxver" keys,
# instead of hack where we add major # as part of platform regex.
using_backend = not self.using_patched_crypt
name = self.handler.name
platform = sys.platform
for pattern, expected in self.platform_crypt_support:
if re.match(pattern, platform):
break
else:
raise self.skipTest("no data for %r platform (current host support = %r)" %
(platform, using_backend))
# rules can use "state=None" to signal varied support;
# e.g. platform='freebsd8' ... sha256_crypt not added until 8.3
if expected is None:
raise self.skipTest("varied support on %r platform (current host support = %r)" %
(platform, using_backend))
# compare expectation vs reality
if expected == using_backend:
pass
elif expected:
> self.fail("expected %r platform would have native support for %r" %
(platform, name))
E AssertionError: expected 'linux' platform would have native support for 'sha512_crypt'
passlib/tests/utils.py:3386: AssertionError
_______________ bcrypt_os_crypt_test.test_01_required_attributes _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_01_required_attributes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_02_config_workflow _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_02_config_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_02_using_workflow __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_02_using_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_03_hash_workflow __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_03_hash_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_os_crypt_test.test_03_legacy_hash_workflow _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_03_legacy_hash_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_04_hash_types ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_04_hash_types>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________________ bcrypt_os_crypt_test.test_05_backends _____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_05_backends>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________ bcrypt_os_crypt_test.test_10_optional_salt_attributes _____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_10_optional_salt_attributes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_11_unique_salt ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_11_unique_salt>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_12_min_salt_size __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_12_min_salt_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_13_max_salt_size __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_13_max_salt_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_14_salt_chars ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_14_salt_chars>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________________ bcrypt_os_crypt_test.test_15_salt_type ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_15_salt_type>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_os_crypt_test.test_20_optional_rounds_attributes ____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_20_optional_rounds_attributes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_21_min_rounds ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_21_min_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_21b_max_rounds ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_21b_max_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_30_HasManyIdents __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_30_HasManyIdents>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_os_crypt_test.test_61_secret_case_sensitive ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_61_secret_case_sensitive>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_62_secret_border __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_62_secret_border>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_63_large_secret ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_63_large_secret>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_64_forbidden_chars _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_64_forbidden_chars>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________________ bcrypt_os_crypt_test.test_70_hashes ______________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_70_hashes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________________ bcrypt_os_crypt_test.test_70_parsehash ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_70_parsehash>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_71_alternates ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_71_alternates>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_os_crypt_test.test_71_parsehash_results ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_71_parsehash_results>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________________ bcrypt_os_crypt_test.test_72_configs _____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_72_configs>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_73_unidentified ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_73_unidentified>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________________ bcrypt_os_crypt_test.test_74_malformed ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_74_malformed>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________________ bcrypt_os_crypt_test.test_75_foreign _____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_75_foreign>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_76_hash_border ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_76_hash_border>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________________ bcrypt_os_crypt_test.test_77_fuzz_input ____________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_77_fuzz_input>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_78_fuzz_threading __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_78_fuzz_threading>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_80_faulty_crypt ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_80_faulty_crypt>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_81_crypt_fallback __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_81_crypt_fallback>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_82_crypt_support __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_82_crypt_support>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_90_bcrypt_padding __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_90_bcrypt_padding>
def setUp(self):
# ensure builtin is enabled for duration of test.
if TEST_MODE("full") and self.backend == "builtin":
key = "PASSLIB_BUILTIN_BCRYPT"
orig = os.environ.get(key)
if orig:
self.addCleanup(os.environ.__setitem__, key, orig)
else:
self.addCleanup(os.environ.__delitem__, key)
os.environ[key] = "true"
> super(_bcrypt_test, self).setUp()
passlib/tests/test_handlers_bcrypt.py:181:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3211: in setUp
self._patch_safe_crypt()
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_os_crypt_test.test_disable_and_enable _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_disable_and_enable>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_os_crypt_test.test_has_many_idents_using ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_many_idents_using>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________ bcrypt_os_crypt_test.test_has_rounds_replace_w_max_rounds ___________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_replace_w_max_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________ bcrypt_os_crypt_test.test_has_rounds_using_and_needs_update __________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_and_needs_update>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_os_crypt_test.test_has_rounds_using_harness ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_harness>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________ bcrypt_os_crypt_test.test_has_rounds_using_w_default_rounds __________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_w_default_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_os_crypt_test.test_has_rounds_using_w_min_rounds ____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_w_min_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________ bcrypt_os_crypt_test.test_has_rounds_using_w_rounds ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_w_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____ bcrypt_os_crypt_test.test_has_rounds_using_w_vary_rounds_generation ______
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_w_vary_rounds_generation>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______ bcrypt_os_crypt_test.test_has_rounds_using_w_vary_rounds_parsing _______
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_has_rounds_using_w_vary_rounds_parsing>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_os_crypt_test.test_needs_update_w_padding _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_needs_update_w_padding>
def setUp(self):
# ensure builtin is enabled for duration of test.
if TEST_MODE("full") and self.backend == "builtin":
key = "PASSLIB_BUILTIN_BCRYPT"
orig = os.environ.get(key)
if orig:
self.addCleanup(os.environ.__setitem__, key, orig)
else:
self.addCleanup(os.environ.__delitem__, key)
os.environ[key] = "true"
> super(_bcrypt_test, self).setUp()
passlib/tests/test_handlers_bcrypt.py:181:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3211: in setUp
self._patch_safe_crypt()
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_os_crypt_test.test_secret_w_truncate_size _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_secret_w_truncate_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_os_crypt_test.test_secret_wo_truncate_size _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_secret_wo_truncate_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_os_crypt_test.test_truncate_error_setting _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_truncate_error_setting>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_os_crypt_test.test_using_salt_size ___________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_os_crypt_test testMethod=test_using_salt_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_sha256_os_crypt_test.test_01_required_attributes ____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_01_required_attributes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________ bcrypt_sha256_os_crypt_test.test_02_config_workflow ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_02_config_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_02_using_workflow ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_02_using_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_03_hash_workflow _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_03_hash_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_sha256_os_crypt_test.test_03_legacy_hash_workflow ___________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_03_legacy_hash_workflow>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_04_hash_types ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_04_hash_types>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_sha256_os_crypt_test.test_05_backends _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_05_backends>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________ bcrypt_sha256_os_crypt_test.test_10_optional_salt_attributes _________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_10_optional_salt_attributes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_11_unique_salt ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_11_unique_salt>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_12_min_salt_size _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_12_min_salt_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_13_max_salt_size _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_13_max_salt_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_14_salt_chars ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_14_salt_chars>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_15_salt_type _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_15_salt_type>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________ bcrypt_sha256_os_crypt_test.test_20_optional_rounds_attributes ________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_20_optional_rounds_attributes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_21_min_rounds ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_21_min_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_21b_max_rounds ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_21b_max_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_30_HasManyIdents _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_30_HasManyIdents>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_30_HasOneIdent ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_30_HasOneIdent>
def setUp(self):
# ensure builtin is enabled for duration of test.
if TEST_MODE("full") and self.backend == "builtin":
key = "PASSLIB_BUILTIN_BCRYPT"
orig = os.environ.get(key)
if orig:
self.addCleanup(os.environ.__setitem__, key, orig)
else:
self.addCleanup(os.environ.__delitem__, key)
os.environ[key] = "enabled"
> super(_bcrypt_sha256_test, self).setUp()
passlib/tests/test_handlers_bcrypt.py:585:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3211: in setUp
self._patch_safe_crypt()
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________ bcrypt_sha256_os_crypt_test.test_61_secret_case_sensitive ___________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_61_secret_case_sensitive>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_62_secret_border _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_62_secret_border>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_63_large_secret _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_63_large_secret>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________ bcrypt_sha256_os_crypt_test.test_64_forbidden_chars ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_64_forbidden_chars>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________________ bcrypt_sha256_os_crypt_test.test_70_hashes __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_70_hashes>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_70_parsehash _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_70_parsehash>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_71_alternates ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_71_alternates>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________ bcrypt_sha256_os_crypt_test.test_71_parsehash_results _____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_71_parsehash_results>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_sha256_os_crypt_test.test_72_configs __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_72_configs>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_73_unidentified _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_73_unidentified>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_74_malformed _________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_74_malformed>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_________________ bcrypt_sha256_os_crypt_test.test_75_foreign __________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_75_foreign>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_76_hash_border ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_76_hash_border>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_77_fuzz_input ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_77_fuzz_input>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_78_fuzz_threading ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_78_fuzz_threading>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_80_faulty_crypt _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_80_faulty_crypt>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_81_crypt_fallback ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_81_crypt_fallback>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______________ bcrypt_sha256_os_crypt_test.test_82_crypt_support _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_82_crypt_support>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_calc_digest_v2 ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_calc_digest_v2>
def setUp(self):
# ensure builtin is enabled for duration of test.
if TEST_MODE("full") and self.backend == "builtin":
key = "PASSLIB_BUILTIN_BCRYPT"
orig = os.environ.get(key)
if orig:
self.addCleanup(os.environ.__setitem__, key, orig)
else:
self.addCleanup(os.environ.__delitem__, key)
os.environ[key] = "enabled"
> super(_bcrypt_sha256_test, self).setUp()
passlib/tests/test_handlers_bcrypt.py:585:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3211: in setUp
self._patch_safe_crypt()
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_____________ bcrypt_sha256_os_crypt_test.test_disable_and_enable ______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_disable_and_enable>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
____________ bcrypt_sha256_os_crypt_test.test_has_many_idents_using ____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_many_idents_using>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______ bcrypt_sha256_os_crypt_test.test_has_rounds_replace_w_max_rounds _______
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_replace_w_max_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______ bcrypt_sha256_os_crypt_test.test_has_rounds_using_and_needs_update ______
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_and_needs_update>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________ bcrypt_sha256_os_crypt_test.test_has_rounds_using_harness ___________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_harness>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
______ bcrypt_sha256_os_crypt_test.test_has_rounds_using_w_default_rounds ______
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_w_default_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________ bcrypt_sha256_os_crypt_test.test_has_rounds_using_w_min_rounds ________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_w_min_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__________ bcrypt_sha256_os_crypt_test.test_has_rounds_using_w_rounds __________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_w_rounds>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
__ bcrypt_sha256_os_crypt_test.test_has_rounds_using_w_vary_rounds_generation __
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_w_vary_rounds_generation>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___ bcrypt_sha256_os_crypt_test.test_has_rounds_using_w_vary_rounds_parsing ____
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_has_rounds_using_w_vary_rounds_parsing>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_sha256_os_crypt_test.test_secret_w_truncate_size ____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_secret_w_truncate_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_sha256_os_crypt_test.test_secret_wo_truncate_size ___________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_secret_wo_truncate_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
___________ bcrypt_sha256_os_crypt_test.test_truncate_error_setting ____________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_truncate_error_setting>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
_______________ bcrypt_sha256_os_crypt_test.test_using_salt_size _______________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_using_salt_size>
def setUp(self):
assert self.backend == "os_crypt"
if not self.handler.has_backend("os_crypt"):
# XXX: currently, any tests that use this are skipped entirely! (see issue 120)
> self._patch_safe_crypt()
passlib/tests/utils.py:3211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
________________ bcrypt_sha256_os_crypt_test.test_using_version ________________
self = <passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test testMethod=test_using_version>
def setUp(self):
# ensure builtin is enabled for duration of test.
if TEST_MODE("full") and self.backend == "builtin":
key = "PASSLIB_BUILTIN_BCRYPT"
orig = os.environ.get(key)
if orig:
self.addCleanup(os.environ.__setitem__, key, orig)
else:
self.addCleanup(os.environ.__delitem__, key)
os.environ[key] = "enabled"
> super(_bcrypt_sha256_test, self).setUp()
passlib/tests/test_handlers_bcrypt.py:585:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
passlib/tests/utils.py:3211: in setUp
self._patch_safe_crypt()
passlib/tests/utils.py:3245: in _patch_safe_crypt
handler, alt_backend = self._get_safe_crypt_handler_backend()
passlib/tests/test_handlers_bcrypt.py:679: in _get_safe_crypt_handler_backend
return bcrypt_os_crypt_test._get_safe_crypt_handler_backend()
passlib/tests/utils.py:3224: in _get_safe_crypt_handler_backend
handler.get_backend()
passlib/utils/handlers.py:2087: in get_backend
cls.set_backend()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'passlib.handlers.bcrypt.bcrypt'>, name = 'builtin', dryrun = False
@classmethod
def set_backend(cls, name="any", dryrun=False):
"""
Load specified backend.
:arg name:
name of backend to load, can be any of the following:
* ``"any"`` -- use current backend if one is loaded,
otherwise load the first available backend.
* ``"default"`` -- use the first available backend.
* any string in :attr:`backends`, loads specified backend.
:param dryrun:
If True, this perform all setup actions *except* switching over to the new backend.
(this flag is used to implement :meth:`has_backend`).
.. versionadded:: 1.7
:raises ValueError:
If backend name is unknown.
:raises passlib.exc.MissingBackendError:
If specific backend is missing;
or in the case of ``"any"`` / ``"default"``, if *no* backends are available.
:raises passlib.exc.PasslibSecurityError:
If ``"any"`` or ``"default"`` was specified,
but the only backend available has a PasslibSecurityError.
"""
# check if active backend is acceptable
if (name == "any" and cls.__backend) or (name and name == cls.__backend):
return cls.__backend
# if this isn't the final subclass, whose bases we can modify,
# find that class, and recursively call this method for the proper class.
owner = cls._get_backend_owner()
if owner is not cls:
return owner.set_backend(name, dryrun=dryrun)
# pick first available backend
if name == "any" or name == "default":
default_error = None
for name in cls.backends:
try:
return cls.set_backend(name, dryrun=dryrun)
except exc.MissingBackendError:
continue
except exc.PasslibSecurityError as err:
# backend is available, but refuses to load due to security issue.
if default_error is None:
default_error = err
continue
if default_error is None:
msg = "%s: no backends available" % cls.name
if cls._no_backend_suggestion:
msg += cls._no_backend_suggestion
default_error = exc.MissingBackendError(msg)
> raise default_error
E passlib.exc.MissingBackendError: bcrypt: no backends available -- recommend you install one (e.g. 'pip install bcrypt')
passlib/utils/handlers.py:2175: MissingBackendError
=============================== warnings summary ===============================
passlib/tests/test_context_deprecated.py:17
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/tests/test_context_deprecated.py:17: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import resource_filename
.pybuild/cpython3_3.13_passlib/build/passlib/tests/test_apache.py::HtpasswdFileTest::test_02_set_password_default_scheme
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/apache.py:723: PasslibSecurityWarning: HtpasswdFile: no bcrypt backends available, using fallback for default scheme 'portable'
warn("HtpasswdFile: no bcrypt backends available, "
.pybuild/cpython3_3.13_passlib/build/passlib/tests/test_crypto_scrypt.py: 11 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build/passlib/crypto/scrypt/__init__.py:162: PasslibSecurityWarning: Using builtin scrypt backend, which is 100x slower than is required for adequate security. Installing scrypt support (via 'pip install scrypt') is strongly recommended
warn("Using builtin scrypt backend, which is %dx slower than is required "
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED passlib/tests/test_handlers.py::des_crypt_os_crypt_test::test_82_crypt_support
FAILED passlib/tests/test_handlers.py::md5_crypt_os_crypt_test::test_82_crypt_support
FAILED passlib/tests/test_handlers.py::sha256_crypt_os_crypt_test::test_82_crypt_support
FAILED passlib/tests/test_handlers.py::sha512_crypt_os_crypt_test::test_82_crypt_support
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_01_required_attributes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_02_config_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_02_using_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_03_hash_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_03_legacy_hash_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_04_hash_types
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_05_backends
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_10_optional_salt_attributes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_11_unique_salt
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_12_min_salt_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_13_max_salt_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_14_salt_chars
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_15_salt_type
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_20_optional_rounds_attributes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_21_min_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_21b_max_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_30_HasManyIdents
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_61_secret_case_sensitive
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_62_secret_border
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_63_large_secret
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_64_forbidden_chars
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_70_hashes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_70_parsehash
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_71_alternates
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_71_parsehash_results
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_72_configs
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_73_unidentified
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_74_malformed
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_75_foreign
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_76_hash_border
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_77_fuzz_input
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_78_fuzz_threading
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_80_faulty_crypt
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_81_crypt_fallback
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_82_crypt_support
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_90_bcrypt_padding
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_disable_and_enable
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_many_idents_using
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_replace_w_max_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_and_needs_update
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_harness
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_w_default_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_w_min_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_w_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_w_vary_rounds_generation
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_has_rounds_using_w_vary_rounds_parsing
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_needs_update_w_padding
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_secret_w_truncate_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_secret_wo_truncate_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_truncate_error_setting
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_os_crypt_test::test_using_salt_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_01_required_attributes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_02_config_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_02_using_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_03_hash_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_03_legacy_hash_workflow
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_04_hash_types
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_05_backends
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_10_optional_salt_attributes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_11_unique_salt
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_12_min_salt_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_13_max_salt_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_14_salt_chars
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_15_salt_type
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_20_optional_rounds_attributes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_21_min_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_21b_max_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_30_HasManyIdents
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_30_HasOneIdent
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_61_secret_case_sensitive
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_62_secret_border
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_63_large_secret
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_64_forbidden_chars
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_70_hashes
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_70_parsehash
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_71_alternates
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_71_parsehash_results
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_72_configs
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_73_unidentified
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_74_malformed
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_75_foreign
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_76_hash_border
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_77_fuzz_input
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_78_fuzz_threading
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_80_faulty_crypt
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_81_crypt_fallback
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_82_crypt_support
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_calc_digest_v2
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_disable_and_enable
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_many_idents_using
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_replace_w_max_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_and_needs_update
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_harness
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_w_default_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_w_min_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_w_rounds
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_w_vary_rounds_generation
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_has_rounds_using_w_vary_rounds_parsing
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_secret_w_truncate_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_secret_wo_truncate_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_truncate_error_setting
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_using_salt_size
FAILED passlib/tests/test_handlers_bcrypt.py::bcrypt_sha256_os_crypt_test::test_using_version
=== 107 failed, 1806 passed, 2357 skipped, 13 warnings in 127.17s (0:02:07) ====
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_passlib/build; python3.13 -m pytest
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build; python3.12 -m pytest
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.4.1
collected 4366 items
passlib/tests/test_apache.py ..................ss............. [ 0%]
passlib/tests/test_apps.py ........... [ 1%]
passlib/tests/test_context.py ...................................... [ 1%]
passlib/tests/test_context_deprecated.py ........................ [ 2%]
passlib/tests/test_crypto_builtin_md4.py ..... [ 2%]
passlib/tests/test_crypto_des.py .... [ 2%]
passlib/tests/test_crypto_digest.py ............ [ 2%]
passlib/tests/test_crypto_scrypt.py .....s................. [ 3%]
passlib/tests/test_ext_django.py ssssssssssssssssssssssss [ 3%]
passlib/tests/test_ext_django_source.py s [ 4%]
passlib/tests/test_handlers.py ......s......ssss...s..ssss....ssssssssss [ 4%]
ss.........s......ssss...s..sss.s...s.sssssssssss...................s... [ 6%]
...sss.s...s..sss.........s...ssssssssssssssssssssssssssssssssssssssssss [ 8%]
sssss......s......ssss...s..sssss...sssssssssss.s...............ssss.... [ 9%]
..sss.s...s...ssssssssss.s..ssssssssssssssssssssssssssssssssssssssssssss [ 11%]
ss......s.........s...s..sss.....s.ss........s.........sssssssssss...s.. [ 13%]
sssss...ssssssssssss..s......sssssssssss...s..sssss...sssssssssss.s..s.. [ 14%]
....sssssssssss...s..sssss...ssssssssssss..s......sssssssssss...s..sssss [ 16%]
...ssssssssssss..s......sssssssssss...s..sssss...ssssssssssss..s......ss [ 18%]
sssssssss...s.ssss.s...ss..sssssssssss..s......sssssssssss...s..sssss... [ 19%]
ssssssssssss..s......sssssssssss...s..sssss...ssssssssssss..s......s.... [ 21%]
..ssss...s..ssss....ssssssssssss.........s......ssss...s..ssss....ssssss [ 23%]
ssssss.........s......ssss...s..ssss....ssssssssssss.........s......ssss [ 24%]
...s..ssss....ssssssssssss.........sssssssssss...s.ssss.s...ssssssssssss [ 26%]
..s.............ssss.....sssss....s..ssssssssssss...ssssssssssssssssssss [ 28%]
ssssssssssssssssssssssssss................s.....ssssss..ss..sss........s [ 29%]
.........sssssssssss...s..sss.s...s.ssssssssss.s.s.............ssss..... [ 31%]
.ssss....s...sssssssssss...sssssssssssssssssssssssssssssssssssssssssssss [ 32%]
s......sssssssssss...s...ssss...s...sssssssssss..s......sssssssssss...s. [ 34%]
.sssss...s...sssssssssss..s......s......ssss...s...ss.....ssssssssssss.. [ 36%]
.......s......ssss...s...ss.....ssssssssssss.........sssssssssss...s..ss [ 37%]
s.s...s.sssssssssss..s......sssssssssss...s..sss.s...ssssssssssss..s.... [ 39%]
..sssssssssss...s..sss.s...ssssssssssss..s......sssssssssss...s.ssss.s.. [ 41%]
.ssssssssssss..s......sssssssssss...s..sss.s...s...sssssssssss..s......s [ 42%]
......ssss...s..sssss...ssssssssssss.........s.............s..ssss....ss [ 44%]
.........s.........sssssssssss...s.sssssss..ssssssssssss..s......sssssss [ 46%]
ssss...s..sss.s...s...sssssssssss..s................s......ssss....s..ss [ 47%]
s........s...ssssssssssssssssssssssssssssssssssssssssssssss............. [ 49%]
....s......ss.s....s...ss........s...sssssssssssssssssssssssssssssssssss [ 51%]
sssssssssss................s......ss.s....s...ss........s...ssssssssssss [ 52%]
ssssssssssssssssssssssssssssssssss......s.........s...s..ss.s....sss.... [ 54%]
....s.........sssssssssss...s.ssss.s..ss..ssssssssss..s......sssssssssss [ 56%]
...s..ssssss.ss...ssssssssss..s [ 56%]
passlib/tests/test_handlers_argon2.py ssssssssssssssssssssssssssssssssss [ 57%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 59%]
ss [ 59%]
passlib/tests/test_handlers_bcrypt.py ssssssssssssssssssssssssssssssssss [ 60%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 61%]
ssssssssssssssssssssssssssssssssssssss.......................ss......s.. [ 63%]
sss...........s..sssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 64%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 66%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.... [ 68%]
............s....s..ss.s....s..s.ss........s....ssssssssssssssssssssssss [ 69%]
sssssssssssssssssssssssss [ 70%]
passlib/tests/test_handlers_cisco.py ......sssssssssss...s..sssss...s... [ 71%]
.ssssssssss.s.s......sssssssssss...s..sssss...s....ssssssssss.s.s......s [ 72%]
s.sss.ssss...s..sss.s...s..sssssssssss..s [ 73%]
passlib/tests/test_handlers_django.py ......sssssssssss...s...ssss..ss.s [ 74%]
sssssssss..s......s......ssss...s...ss.....sssssssssssss.s........s..... [ 76%]
.ssss...s..sss.....ssssssssssssss.........s......ssss...s..sss.....sssss [ 77%]
sssssssss.........s.........s...s..sssss...sssss........s.........s..... [ 79%]
....s...s..sssss...sssss........s...................s.....ssssss...sssss [ 81%]
.........s......................s..sssss...ssss.........s... [ 82%]
passlib/tests/test_handlers_pbkdf2.py .......s......ssss...s..ssss....ss [ 83%]
ssssssssss.........s.........s...s..ssss....sss........s.........s...... [ 85%]
...s...s..sssss...sss........s.........s.........s...s..sssss...sss..... [ 86%]
...s.........s.........s...s..sssss...sss........s.........s.........s.. [ 88%]
.s..sssss...sss........s.........s.........s...s..sssss...sss........s.. [ 90%]
.......s.........s...s..ssss....s...........ss........s... [ 91%]
passlib/tests/test_handlers_scrypt.py ....................s..ssss....ss. [ 92%]
........s...ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 93%]
ssssssssssssssssssssssssssssssss [ 94%]
passlib/tests/test_hosts.py ... [ 94%]
passlib/tests/test_pwd.py ........ [ 94%]
passlib/tests/test_registry.py ...... [ 94%]
passlib/tests/test_totp.py ss.ss................................... [ 95%]
passlib/tests/test_utils.py ............................................ [ 96%]
........... [ 97%]
passlib/tests/test_utils_handlers.py ..........................sssssssss [ 97%]
ss...s..sssss...s.sssssssssss..s......s......ssss...s..sssss...s.sssssss [ 99%]
ssss... [ 99%]
passlib/tests/test_utils_md4.py ..... [ 99%]
passlib/tests/test_utils_pbkdf2.py ....... [ 99%]
passlib/tests/test_win32.py .. [100%]
=============================== warnings summary ===============================
passlib/utils/__init__.py:854
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/utils/__init__.py:854: DeprecationWarning: 'crypt' is deprecated and slated for removal in Python 3.13
from crypt import crypt as _crypt
passlib/tests/test_context_deprecated.py:17
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/tests/test_context_deprecated.py:17: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import resource_filename
.pybuild/cpython3_3.12_passlib/build/passlib/tests/test_crypto_scrypt.py: 11 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_passlib/build/passlib/crypto/scrypt/__init__.py:162: PasslibSecurityWarning: Using builtin scrypt backend, which is 100x slower than is required for adequate security. Installing scrypt support (via 'pip install scrypt') is strongly recommended
warn("Using builtin scrypt backend, which is %dx slower than is required "
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========= 2020 passed, 2346 skipped, 13 warnings in 112.98s (0:01:52) ==========
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13
make: *** [debian/rules:6: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-11-18T05:10:37Z
Finished
--------
+------------------------------------------------------------------------------+
| Cleanup |
+------------------------------------------------------------------------------+
Purging /<<BUILDDIR>>
Not cleaning session: cloned chroot in use
E: Build failure (dpkg-buildpackage died)
+------------------------------------------------------------------------------+
| Summary |
+------------------------------------------------------------------------------+
Build Architecture: arm64
Build Type: binary
Build-Space: 14108
Build-Time: 247
Distribution: sid
Fail-Stage: build
Host Architecture: arm64
Install-Time: 35
Job: /tmp/debusine-fetch-exec-upload-_edlcix1/python-passlib_1.7.4-4.dsc
Machine Architecture: arm64
Package: python-passlib
Package-Time: 317
Source-Version: 1.7.4-4
Space: 14108
Status: attempted
Version: 1.7.4-4
--------------------------------------------------------------------------------
Finished at 2024-11-18T05:10:37Z
Build needed 00:05:17, 14108k disk space